Dockerfileによる構成管理
Dockerfileとは
Dockerfile
は、Docker上で動作させるコンテナの構成情報を記述するためのファイル
記述する内容
- ベースになるDockerイメージ
- Dockerコンテナ内で行った操作
- 環境変数などあの設定
- Dockerコンテナ内で動作させておくデーモン実行
docker build
コマンドはDockerfile
に記述された構成情報をもとにDockerイメージを作成する。
※ docker build
に関しての詳細は後述します。
Dockerfileの基本構文
- テキスト形式のファイル
- テキストエディタ等で作成する。
ファイル名:Dockerfile
で拡張子はないことが多い- 別のファイル名を付ける場合は、ビルドする際にファイル名を明示する必要がある。
基本的な構造は以下になります。
命令 引数
- 命令は大文字でも小文字でも構いませんが、慣例的に大文字で統一して書きます。
主な命令
命令 | 説明 |
---|---|
FROM | ベースイメージの指定 |
RUN | コマンド実行 |
CMD | コンテナの実行コマンド |
LABEL | ラベルを設定 |
EXPOSE | ポートのエクスポート |
ENV | 環境変数 |
ADD | ファイル/ディレクトリの追加 |
COPY | ファイルのコピー |
ENTRYPOINT | コンテナの実行コマンド |
VOLUME | ボリュームのマウント |
USER | ユーザーの指定 |
WORKDIR | 作業ディレクトリ |
ARG | Dockerfile内の変数 |
ONBUILD | ビルド完了後に実行される命令 |
STOPSIGNAL | システムコールシグナルの設定 |
HEALTHCHECK | コンテナのヘルスチェック |
SHELL | デフォルトシェルの設定 |
Dockerfile
にコメントを記述する場合は#
を使用する
# ココはコメント 命令 引数 # ココもコメント
Dockerfileの作成
FROM命令の基本構文
# タグ名を省略したときはベースイメージの最新バージョン(latest)が適用されます。 FROM [イメージ名] # 作者がつけたタグを利用する FROM [イメージ名]:[タグ名] # イメージを一意に特定するときは FROM [イメージ名]@[ダイジェスト]
# ベースイメージの設定
FROM centos:centos7
Dockerfileのビルドとイメージレイヤー
DockerfileからDockerイメージの作成
docker buildコマンド
構文
docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]
入力サンプル
docker build -t sample:1.0 D:\User\Test01 Sending build context to Docker daemon 3.072kB Step 1/1 : FROM centos:centos7 centos7: Pulling from library/centos Digest: sha256:e9ce0b76f29f942502facd849f3e468232492b259b9d9f076f71b392293f1582 Status: Downloaded newer image for centos:centos7 ---> b5b4d78bc90c Successfully built b5b4d78bc90c Successfully tagged sample:1.0 SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
オプションについて(一部)
オプション | 説明 |
---|---|
-t, --tag=[] | '名前:タグ' 形式で名前とオプションのタグを指定 |
-f, --file="" | Dockerfileの名前 (デフォルトは 'PATH/Dockerfile') |
--no-cache | イメージ構築時にキャッシュを使わない |
--pull | 常に新しいイメージのダウンロードを試みる |
-q, --quiet | 構築時の表示を抑制し、成功時はイメージ ID を表示 |
--rm=true | 構築に成功したら、全ての中間コンテナを削除 |
Dockerイメージを確認する
C:\Users\YUTAKA>docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 831691599b88 7 weeks ago 215MB centos 7 b5b4d78bc90c 3 months ago 203MB centos centos7 b5b4d78bc90c 3 months ago 203MB sample 1.0 b5b4d78bc90c 3 months ago 203MB
Dockerイメージのレイヤー構造
※ 省略
マルチステージビルドによるアプリケーション開発
- マルチステージビルド:開発環境用のDockerイメージとプロダクション環境で実際に動作させるDockerイメージを同時に生成する機能
- 本番環境は必要最低限の実行モジュールだけを配置することが望ましい
- コンピューティングリソースの有効活用の観点
- セキュリティの観点
- 開発環境では、開発支援ツールやデバッグ用のライブラリを使用することがあるが、本番環境では必ずしも必要ない。
- 本番環境は必要最低限の実行モジュールだけを配置することが望ましい
参考文献
以下の本を読みながら、Dockerの勉強を開始しました。