こんにちは!今日は、ドッカー(Docker)を学ぶ上で最も基礎的でありながら、多くの方が混乱しがちな「ドッカーライフサイクル(Life Cycle)」について、非常に詳しくまとめてみようと思います。
docker create, docker start, docker run… 似ているように見えるこれらのコマンドは一体何が違うのでしょうか?🤔 この質問への答えは、ドッカーのライフサイクル(流れ)を理解すれば明確に解決されます。
イメージが自分のコンピューターに取り込まれ、実行され、再び保存または削除される4段階のプロセスを図とともに見ていきましょう。

1️⃣ ステップ1:イメージの調達 (Registry ↔ PC)
「材料(設計図)を準備する段階」
すべてのコンテナの始まりはイメージ(Image)です。このイメージを外部リポジトリから自分のコンピューター(Local Host)に取得したり、逆に自分が作成したイメージを共有するプロセスです。
- ☁️ Registry (リポジトリ): Docker Hubのようにイメージを集めた巨大な倉庫です。
- ⬇️ PULL: リポジトリ(Registry)にあるイメージを自分のコンピューターにダウンロードするコマンドです。(例: docker pull ubuntu)
- ⬆️ PUSH: 自分のコンピューターで作業した(または修正した)イメージをリポジトリにアップロードし、チームメンバーや世界中の人々と共有するコマンドです。
2️⃣ ステップ2:コンテナの作成 (Image ↔ Container)
「設計図で建物の骨組みを立てる段階」
ダウンロードしたイメージは、それ自体では実行されない読み取り専用(Read-only)ファイルに過ぎません。これをもとに、実際の作業空間であるコンテナを作成する必要があります。
- 🟦 Image (イメージ): 実行不可能な「設計図」の状態です。いくら触ってもオリジナルは変わりません。
- 🏗️ CREATE: イメージを基にコンテナを作成します。
- ⚠️ 重要: この時点ではファイルシステム隔離のみが行われ、まだプログラムが実行(メモリにロード)されていない状態です。まるでコンピューターの組み立ては終わったが、電源ボタンは押していない状態と同じです。
3️⃣ ステップ3:実行と停止 (Container ↔ Memory)
「電源を入れて実際に作動させる段階」
作成されたコンテナを実際に動かす番です。CPUとメモリ(RAM)を使用してプロセスが動作します。
- 🚀 START: 作成された(Created)コンテナを実行し、メモリにプロセスとしてロードするコマンドです。
- 🏃 RUN (最もよく使う!): 面倒なプロセスを一気に解決してくれます!
- RUN = PULL(なければ) + CREATE + START
- イメージがなければダウンロードし、作成し、すぐに実行までしてくれる万能コマンドです。
- 🧠 Memory (プロセス): コンテナが実際に生きて呼吸している(動作中の)状態です。
- 🛑 STOP: 実行中のコンテナを停止します。プロセスはメモリから解放されますが、コンテナ自体(作業データを含む)はディスクにそのまま残ります。(コンピューターの電源だけを切った状態)
4️⃣ ステップ4:保存と削除 (Management)
「結果を保存したり、後片付けをする段階」
作業が終わったら、変更された内容を保存して新しい設計図を作成したり、不要なものを捨てる必要がありますよね?
- 💾 COMMIT (非常に重要): コンテナ内でファイルを修正したり設定を変更した場合、その変更内容を新しいイメージとして保存するコマンドです。
- コンテナは削除するとデータが失われますが、commitでイメージ化しておけば、いつでもその状態のまま再実行できます。
- 🗑️ RM (Remove): 停止されたコンテナを削除します。(ディスクから完全に除去)
- 🔥 RMI (Remove Image): ローカルに保存されたイメージファイル自体を削除します。
✨ 要約:ドッカーコマンドの流れ
この流れだけ覚えておけば、ドッカーマスターになれます!
- PULL: 設計図(Image)を取得する。
- CREATE: 製品(Container)を作成する。(まだ動作X)
- START: 製品を起動する。(動作O)
- (ヒント: RUNは1, 2, 3を一度に!)
- COMMIT: 変更された内容を再び設計図(Image)として保存する。
- RM / RMI: 不要な製品(Container)や設計図(Image)を破棄する。
このライフサイクルダイアグラムを頭に入れておけば、エラーが発生した際に「あ、今イメージはあるけどコンテナが作成されていないな」とか「プロセスだけが停止してコンテナは生きているな」といった正確な診断が可能になります。
今日の記事がドッカー学習の助けになったことを願っています!ご質問があればコメントに残してください。👋
コメントを残す