Dockerコンテナはレジストリから用途に合ったイメージを取得して作成する方法の他に、自分でカスタムしたイメージから作成することもできます。
実務においては、レジストリ上のイメージのみではほとんど対応できないため、自分の要件に合ったイメージを作成する必要があります。
今回は2つの記事に分けて、Dockerfileと呼ばれるイメージを定義するファイルを利用してカスタムイメージを作成する方法についてまとめていきます。
Dockerfileによるカスタムイメージ
Dockerfileとは、イメージを定義する時に利用されるファイルです。
最低限の機能が備わっているイメージをレジストリから取得し、必要な機能を追加していくのがカスタムイメージを作成する一般的な方法となっています。
Dockerfileでカスタムイメージをテンプレート化することによって、そのDokcerfileを共有するだけで同じイメージを簡単に作成することができるようになるのです。
Dockerfileからイメージを作成
docker image build
Dockerfileからイメージを作成する場合、docker
コマンドを利用します。
docker image build [ディレクトリパス]
ディレクトリパスにはDockerfileが保存されているディレクトリのパスを指定します。
このコマンドで指定したディレクトリにあるDockerfileの情報を元にイメージが作成されていきます。
Dockerfileから実際にイメージを作成してみる
では、実際にDockerfileからイメージを作成してみましょう。
任意のフォルダにDockerfile
という名前のファイルを作成してください。
任意のフォルダ上で
> touch Dockerfile
作成後、エディタで開きファイルを編集していきましょう。
1行目に以下のように記述します。
FROM ubuntu:20.04
Dockerfileは多くの場合、1行目はFROM
から始まります。FROM
コマンドはパラメータで自分が作るイメージのベースとなるイメージを指定します。
この例の場合、ubuntuのイメージをベースイメージとすることを表しています。
では、このDockerfileから先ほど紹介したコマンドを利用してイメージを作成してみましょう。
Dockerfileを作成したフォルダ上で
docker image build .
ターミナル上で以下のように表示されればイメージのビルドが成功しています。
実際に作成されたイメージをdocker image ls
コマンドで見てみましょう。
以下のように、REPOSITORY
やTAG
が<none>
となっているイメージがビルドされていると思います。
これが、先ほどのDockerfileからビルドしたイメージとなります。
カスタムイメージに名前をつける
上記の例ではイメージ名やタグが<none>
になってしまっていたので、こちらに任意のものを指定する方法を最後にご紹介します。
先ほど実行したコマンドに以下のようにオプションをつけることで、任意のイメージ名やタグをつけることが可能になります。
docker image build -t [イメージ名]:[タグ名] [ディレクトリパス]
先ほどの例で試してみましょう。
以下のように任意のイメージ名とタグ名を付けてコマンド実行してみてください。
docker image build -t my-image:v1 .
以下のように表示されれば成功です。
こちらもdocker image ls
コマンドで作成されたイメージを確認してみましょう。
先ほどと違い、REPOSITORY
とTAG
にオプションで指定したものが入っているのが確認できます。
まとめ
今回は、カスタムイメージを定義するDockerfileについて説明し、実際に簡単なイメージの作成までを行いました。
実際にはDockerfile内にもっと多くの情報を記述していくことで、独自のカスタムイメージを作成していくことができます。
次回はDockerfileのより詳細な記述方法についてまとめていきたいと思います。
ここまで読んでいただきありがとうございました。
それでは、また。