Dockerfileとは
Dockerfileとは、Dockerで作成するコンテナイメージを管理するためのファイルである。コンテナイメージは、予め用意されたコンテナイメージに、ファイルをコピーしたり、直接的な編集を行って、イメージを保存することでも作成できる。Dockerfileは、そうした変更をファイルに記述したものである。また、コンテナのデフォルトの起動コマンドなどのデフォルト設定も行うことができる。
Dockerfileを使うメリット
Dockerfileを使うと、次のようなメリットがある。
- Dockerコンテナの仕様をファイルで管理することができる
- Dockerコンテナの変更プロセスを自動化することができる
- コンテナイメージに、変更内容を履歴として保持することができる
- コンテナイメージの履歴を層(レイヤー)として管理することで、イメージを最小化することができる
- 元となるコンテナのバージョンアップにもすぐに対応できる
Dockerfileの例
次は、もっとも単純なDockerfileの例である。
FROMには、元となるコンテナを指定する。LABELに記載した修正者は、履歴の中に保存される。COPYでは、コンテナ内にファイルをコピーする。
Dockerfileの例
FROM httpd LABEL maintainer="admin@designet.jp" COPY www.designet.co.jp /usr/local/apache2/htdocs
この他にも、様々な処理を記述することができる。代表的なものは次の通りである。
- RUN コンテナビルド時にコンテナ内でコマンドを実行する
- CMD コンテナのデフォルトの実行コマンドを定義する
- ENTRYPOINT コンテナのエントリーポイントを定義する
- ENV コンテナに渡す環境変数を定義する
- EXPOSE コンテナで利用するポート番号を定義する
Dockerコンテナの作成
Dockerfileを使って、Dockerコンテナを作成するには、docker buildコマンドを使う。
$ docker build -f Dockerfile -t httpd-designet:1.1 . ⏎ Sending build context to Docker daemon 60.99MB Step 1/3 : FROM httpd ---> b7cc370ac278 Step 2/3 : LABEL maintainer="admin@designet.jp" ---> Running in 38dad19d8ddf Removing intermediate container 38dad19d8ddf ---> 5b7b9e5425df Step 3/3 : COPY www.designet.co.jp /usr/local/apache2/htdocs ---> 50401e525d20 Successfully built 50401e525d20 Successfully tagged httpd-designet:1.1
このようにして作成したコンテナには、次のように履歴が残る。
# docker image history httpd-designet:1.1 ⏎ IMAGE CREATED CREATED BY SIZE COMMENT 50401e525d20 26 minutes ago /bin/sh -c #(nop) COPY dir:038c108a2ade7d54f… 60MB 5b7b9e5425df 26 minutes ago /bin/sh -c #(nop) LABEL maintainer=admin@designet.jp 0B b7cc370ac278 13 days ago /bin/sh -c #(nop) CMD ["httpd-foreground"] 0B <missing> 13 days ago /bin/sh -c #(nop) EXPOSE 80 :
【カテゴリ】:システム管理  仮想化  オープンソースソフトウェア  
【Webセミナー】LinuxOS最新情報2024年版!LinuxOS紹介セミナー
日程: | 9月19日(木)Webセミナー「BigBlueButton」を使用します。 |
内容: | LinuxOSの最新情報をお届けします。 |
ご興味のあるかたはぜひご参加ください。 |
関連用語
- Dockerとは
- podmanとは
- Podとは
- Deploymentとは
- ReplicaSetとは
- runcとは
- rktとは
- Kata Containerとは
- containerdとは
- gVisorとは
- CRI-Oとは
- Minikubeとは
- Microk8sとは
- Kubernetesとは