【こんてないめーじ】

コンテナイメージ とは?

最終更新:
💡 コンテナを作る、ファイルと設定のセット

コンテナを作るためのファイルと実行設定をまとめたパッケージ。イメージと実行中のコンテナ、レイヤー、対応OS・CPU、データ保存の違いを解説します。

📌 このページのポイント
イメージ:コンテナの作成元ファイルと実行設定のセットレイヤーはファイルの差分コンテナAAの書き込み層この例の状態AコンテナBBの書き込み層この例の状態B元のイメージは、通常の書き込みで変わらない残すデータはボリュームなどへ保存
矢印は作成元の関係です。同じイメージでもコンテナ側の書き込み状態は別です。OS・CPUの対応と外部の設定も確認し、実行中の状態が全てイメージに入るとは考えません。
ひよこ ひよこ
コンテナとイメージは、何が違う?
ペンギン先生 ペンギン先生
イメージは、アプリを動かすファイルや設定をまとめた作成元だよ。そこから作るコンテナでは、実際に処理を動かせる。同じイメージから複数のコンテナを作っても、実行中の状態まで一つに共有するわけではないんだ。
ひよこ ひよこ
Dockerfileで、作るの?
ペンギン先生 ペンギン先生
Dockerでは、Dockerfileに元のイメージ、ファイルをコピーする手順、実行するコマンドなどを書いてビルドできる。作ったイメージは、レジストリへ保存して配布できるよ。イメージの作り方がDockerfileだけに限られるという意味ではない。
ひよこ ひよこ
すべての命令が、一つずつレイヤーになる?
ペンギン先生 ペンギン先生
ファイルを追加・変更する命令は、差分のレイヤーを作るよ。一方、CMDのように起動時のコマンドを指定する命令は設定を変え、ファイルのレイヤーを作らない。レイヤーは、単に命令を数えたものではないんだ。
ひよこ ひよこ
同じイメージなら、どのPCでも動く?
ペンギン先生 ペンギン先生
対応するOSやCPUの種類を確認する。コンテナは実行する側のカーネルを使うため、仮想マシンのようにOSの全てを持ち込むわけではないよ。環境変数、接続先、保存データなども別に用意することがある。
ひよこ ひよこ
コンテナでファイルを変えたら、イメージも変わる?
ペンギン先生 ペンギン先生
通常の書き込みはコンテナ側の書き込み可能な層へ入り、元のイメージは変わらない。コンテナを削除すると、その層もなくなる。残したいデータはボリュームなどへ保存するよ。アプリを更新するときは、新しいイメージを作って使うんだ。
もっと詳しく知りたい人へ

EXPOSEで、外から接続できる?

EXPOSEは、アプリが使うポートをイメージに記録する指定です。それだけでホスト側へポートを公開しません。公開する場合は、コンテナを起動する側の設定も必要です。

小さいイメージなら、安全?

サイズだけでは判断しません。マルチステージビルドでは、ビルド用ツールを実行用イメージへ持ち込まない構成にできます。残すものの互換性や必要な機能、提供元と更新も確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンテナイメージ」って出てきたら「コンテナを作るためのファイルと設定のパッケージ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Container Image」 = コンテナのイメージ
💬 ここでのimageは、写真ではなく、コンテナの作成元になるファイルや設定のまとまりです。実行中のメモリや外部データまで含む完全な記録という意味ではありません。

参考資料

← 用語集にもどる