🌟

Dockerのファイル、イメージ、コンテナ?似て非なるのもをまとめた!

に公開

この記事の対象者

  • Dockerやコンテナなどを全く知らない人
  • 入門編的な位置付け
  • それぞれの言葉がしっかり何を示しているのかをイメージしておきたい人

例えるなら

料理に例えてみると・・・

Dockerファイル

  • レシピ
  • 「どんな材料を使って、どう調理するか」が書いてある設計書。

Dockerイメージ

  • 出来上がった料理の冷凍パック
  • レシピを元に実際に作られた“完成品”。何度でも同じ状態を再現できる。

Dockerコンテナ

  • 温めて食べている料理
  • イメージを実際に動かした状態(実行中のプロセス)。食べ終われば消えるが、また冷凍庫(イメージ)から出して温め直せる。

技術的に言うなら

1. Dockerfile

  • 定義ファイル(テキスト)
  • どのベースイメージを使うか、何をインストールするか、どんな設定をするかを書く
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

2. Dockerイメージ

  • Dockerfileを元に docker build で作られる成果物
  • OS + ミドルウェア + アプリが入った「スナップショット」
  • GitHubのリポジトリに似ていて、他人と共有できる(Docker Hubなど)

3. Dockerコンテナ

  • イメージを docker run した結果、実際に動いているアプリケーション
  • 例:docker run -p 3000:3000 myapp
  • 1つのイメージから複数のコンテナを起動可能
  • コンテナは一時的で、停止・削除してもイメージから再度立ち上げられる

Discussion