Docker入門

Dockerの開発環境をローカル環境に構築する手順や、 Docker を使ったプログラムの記述方法や実行までをサンプルを使いながら順に学習していきます。

Dockerのbuildコマンドオプション一覧

docker build -t, --tag=[]オプション

Dockerのdocker build -tまたは--tagオプションは、ビルドされたイメージにタグを付けるために使用されます。イメージには、複数のタグを付けることができます。

-tまたは--tagオプションを使用するには、次のようにコマンドを実行します。

$ docker build -t <TAG_NAME> <DOCKERFILE_DIRECTORY>

ここで、<TAG_NAME>はビルドされたイメージに付けるタグ名です。<DOCKERFILE_DIRECTORY>はDockerfileがあるディレクトリのパスです。

例えば、次のコマンドを実行すると、ビルドされたイメージにmyimage:latestというタグが付けられます。

$ docker build -t myimage:latest .

-tまたは--tagオプションを複数回使用することで、複数のタグを同時にイメージに付けることができます。例えば、次のコマンドを実行すると、ビルドされたイメージにmyimage:latestmyimage:v1.0という2つのタグが付けられます。

$ docker build -t myimage:latest -t myimage:v1.0 .

タグの指定方法は<TAG_NAME>の他に、<REGISTRY_URL>/<REPOSITORY_NAME>:<TAG_NAME>のように、リポジトリ名やレジストリURLを含めて指定することもできます。例えば、次のコマンドはmy-registry.com/myrepository:latestというタグを付けたイメージをビルドします。

$ docker build -t my-registry.com/myrepository:latest .

dockerのrunでタグを指定する方法

Dockerのrunコマンドで、イメージにタグを指定するには、以下のように<イメージ名>:<タグ名>の形式で指定します。

通常、runコマンドではコンテナIDを指定することもできます。加えて、runコマンド実行時にはbuildの際に-tフラグでつけられたイメージタグを指定してコンテナとして実行することができます。

$ docker run <イメージ名>:<タグ名>

例えば、build時のフラグとして-tを指定したとします。

docker image build -t flask .

この時に先ほど作成した、flaskイメージコンテナをrunする場合、特にフラグを使わずにタグを入力することで実行できます。

docker run -it -p 80:80 -v ./code:/code flask bash

--build-arg=[]:Dockerfileの変数に変更を加える

Dockerのdocker build --build-arg=[]オプションは、ビルド時にDockerfile内で変数に変更を加えます

--build-argオプションを使用するには、Dockerfile内でARG命令を使用して変数を定義する必要があります。例えば、以下のようなDockerfileがあるとします。

FROM ubuntu:latest

ARG ENVIRONMENT
ENV ENVIRONMENT ${ENVIRONMENT}

CMD ["echo", "Current environment: $ENVIRONMENT"]

このDockerfileは、ENVIRONMENTという環境変数を定義し、CMD命令でその値を使用しています。

--build-argオプションを使用してビルド時に値を渡すには、次のようにコマンドを実行します。

$ docker build --build-arg ENVIRONMENT=production -t myimage .

この例では、ENVIRONMENT変数にproductionという値を渡しています。ビルドが完了すると、myimageという名前のイメージが作成されます。

ビルド時に複数の環境変数を渡す場合は、--build-argオプションを複数回使用することができます。例えば、次のように書きます。

$ docker build --build-arg ENVIRONMENT=production --build-arg PORT=8080 -t myimage .

この例では、ENVIRONMENT変数にproductionPORT変数に8080という値を渡しています。

docker build --rmオプション

Dockerのdocker build --rm=trueオプションは、ビルド時に一時的に作成されたコンテナを自動的に削除するために使用されます。

--rmオプションを使用すると、ビルド完了後に使用された中間コンテナが自動的に削除され、ホストマシンのストレージスペースを解放することができます。これにより、不要なイメージやコンテナが蓄積されることを防止できます。

--rm=trueオプションを使用してビルドを実行するには、次のようにコマンドを実行します。

$ docker build --rm=true -t <IMAGE_NAME> <DOCKERFILE_DIRECTORY>

ここで、<IMAGE_NAME>はビルドされたイメージの名前、<DOCKERFILE_DIRECTORY>はDockerfileがあるディレクトリのパスです。このコマンドを実行すると、ビルドが開始され、ビルドに必要な一時的なコンテナが作成されます。ビルドが完了すると、中間コンテナが自動的に削除され、イメージが作成されます。

--rmオプションはデフォルトでtrueに設定されており、--rm=falseのように明示的に指定しなくても中間コンテナを残すことができます。ただし、中間コンテナを残した場合は、後で手動で削除する必要があります。