Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Dockerfileの基本的なコトのメモ

f:id:overworker:20200628105903p:plain


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の勉強を開始しました。

その他の記事へ