【どっかーふぁいる】

Dockerfile とは?

最終更新:
💡 Dockerイメージの作り方を、命令で記録する

Dockerイメージのビルド手順を記述するテキストファイル。ベースイメージや実行コマンドなどを定義する。

📌 このページのポイント
手順と入力からイメージを作る Dockerfile FROM busybox:1 COPY app.sh /app.sh RUN chmod +x /app.sh CMD ["sh", "/app.sh"] 命令の役割を示す例 イメージ コンテナ 起動した実体 ビルドコンテキスト app.sh などの入力 build run RUNはビルド時、CMDは起動の既定値
説明用Dockerfileと入力ファイルをビルドし、イメージからコンテナを起動する。ベースイメージのタグや入力が変われば結果も変わり得る。
ひよこ ひよこ
Dockerfileってどんなファイルなの?
ペンギン先生 ペンギン先生
Dockerイメージを作るための手順書だよ。ベースイメージや配置するファイル、ビルド時の処理、起動時の既定のコマンドなどをテキストで記述するんだ。
ひよこ ひよこ
具体的にはどんなことを書くの?
ペンギン先生 ペンギン先生
FROMでベースイメージを指定し、COPYでビルド対象のイメージにファイルを配置する。RUNはビルド時にコマンドを実行する命令だよ。CMDは、できあがったイメージからコンテナを起動するときの既定のコマンドを設定するんだ。
ひよこ ひよこ
それを書くと何が嬉しいの?
ペンギン先生 ペンギン先生
イメージの作り方を記録して、チームで共有できるよ。docker buildでは、その手順とビルドコンテキストという入力ファイルの集合を使う。手作業による手順の抜けや違いを減らす助けになるんだ。
ひよこ ひよこ
同じDockerfileなら、毎回まったく同じ結果になる?
ペンギン先生 ペンギン先生
それだけでは保証できないよ。ベースイメージのタグが同じでも中身が更新されたり、インストールする依存関係や入力ファイルが変わったりする。ベースイメージをダイジェストで指定するなど、入力の版も管理して再現性を高めるんだ。
ひよこ ひよこ
書くときに気をつけることはあるの?
ペンギン先生 ペンギン先生
イメージのレイヤーはファイルの追加・変更・削除を表すよ。一方、CMDのように起動の設定を記録する命令もあり、すべての命令がファイルの層を増やすという説明は正確ではない。不要な入力を.dockerignoreで除外したり、キャッシュの再利用を考えて命令を並べたりする方法があるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Dockerfile」って出てきたら「Dockerイメージの作り方を書いた手順書」と思えばだいたいOK!
📖 おまけ:英語の意味
「Dockerfile」 = Dockerイメージのビルド手順ファイル
💬 Dockerとfile(ファイル)をつなげた名前だよ。標準のファイル名は拡張子のないDockerfile。別名のファイルも、ビルド時に指定して使えるんだ

参考資料

← 用語集にもどる