🚀 はじめに

この記事でわかること

  • コンテナの基本用語 「イメージ」「コンテナ」「レジストリ」 の意味と関係性
  • それぞれが何のためにあるのかないと困ること
  • 今日から会話で使えるようになるやさしいたとえ最小限のコマンド例

こんな人向け

  • 中学生〜大人まで、ITの専門用語が苦手な人
  • DockerやKubernetesの前に、まず“言葉の地図”を作りたい

初心者でも安心な理由

  • 料理のたとえ図っぽいイメージでやさしく説明
  • 用語 → 目的 → 実例の順に、このページだけで完結する構成

✅ 概要解説

まずは“全体像”を1枚でイメージ

[あなたのPC]  ──(pull)──▶  [レジストリ=保管庫]
      │                         └─(push)─  [開発者/CIが作った“イメージ”が並ぶ棚]
      │
      └─(run)──▶  [コンテナ=動いている実体(プロセス)]
                       ↑ イメージから起動/増やせる/消せる
  • イメージ:アプリを動かすための材料セット+手順書の固まり(読み取り専用の“型”)
  • コンテナ:イメージをもとに実際に動いているアプリの箱(一時的に使う部屋)
  • レジストリ:イメージを保管・配布する倉庫(インターネット上の冷凍庫)

イメージ(Image)とは?

“冷凍弁当” だと思ってください。
具材(依存ライブラリ)も味付け(設定)も毎回同じ品質で、必要なときに取り出せる

  • 中身:OSに近い最小要素+アプリ本体+依存関係+設定ファイル
  • 特徴:読み取り専用レイヤー構造(差分で軽量)/タグ:1.2.3 のような目印)
  • メリット:どこでも同じものが再現できる(再現性・移植性)

コンテナ(Container)とは?

“電子レンジで温めて、実際に食べられる状態にした弁当”
イメージ(冷凍弁当)を起動(温め) すると、動く実体ができます。

  • 実体:隔離されたプロセス(別のアプリと“程よく”分けられる)
  • 性質:作っては消すが基本(壊してもまたすぐ作れる)
  • メリット:起動が速い環境差が小さい台数の増減が簡単

レジストリ(Registry)とは?

“冷凍弁当の大きな倉庫+宅配センター”
開発者が作ったイメージを保管して配る場所です。

  • 例:Docker Hub, GitHub Container Registry (GHCR), Amazon ECR, GCR/Artifact Registry, Azure Container Registry など
  • 役割:pull(取り寄せ)とpush(保管)のハブ
  • メリット:チームやCI/CDと相性抜群。バージョン単位で配布・ロールバックが簡単

何のためにあるのか(目的)

  • 再現性:どのPC/サーバーでも同じ手順で同じ動作
  • 移植性:クラウド/オンプレ/ローカルをまたいで動かせる
  • スピード:準備(起動)が秒〜数十秒で済むことも
  • 分離:アプリ同士の干渉を減らす(ライブラリの取り合いを防止)

もしこれらがないとどうなる?

  • “動くけど他のPCだと動かない”問題(俗称 Works on my machine
  • 依存関係地獄(Aがv1、Bがv2しか動かない… の衝突)
  • セットアップが毎回手作業で長い・ミスが出る
  • スケール(台数増減) が大変で、復旧も遅い

どんな場面で役立つ?

  • 学習・検証:試す→消す→やり直すが気軽
  • 開発チーム同じ環境でレビュー・テスト・本番
  • CI/CD:ビルドしたイメージをレジストリ経由で本番へ
  • データ分析/ML:依存が多いツール群もパッケージ化で安定

💡 小話・豆知識・逸話

  1. 「イメージは“設計図だけ”ではない
    設計図+完成品の部品まで詰めた“完成に極めて近い型”。だから起動が速い差分配布が効く

  2. タグ(:latest)は“あだ名”
    latestは「たぶん最新」のあだ名にすぎません。本当に固定したいときはバージョン番号ダイジェスト(@sha256:... を使うのが安心。

  3. コンテナは“軽いVM”ではない
    VMは仮想ハードウェアごと用意。コンテナはOSカーネルを共有しつつプロセスを隔離。用途と強みが違うのがポイント。

  4. レイヤーは“玉ねぎ”
    共通の下地(ベースイメージ)+差分の重ね塗り。共通レイヤーは使い回しができ、配布もダウンロードも節約できます。

  5. 「壊したら作り直す」のが正しい
    コンテナは不変インフラに近い運用発想。壊したら捨てて、“同じイメージから作り直す” が基本戦術。


📚 参考リンク

公式サイト・ドキュメント

Wikipedia(背景の理解)


🛠️ 関連テーマ・次に理解すると良いこと


ちょっとだけ手を動かす(安全な練習)

※ Docker Desktop 等が入っている前提の読み物です。実行は自己判断で。

1) イメージを探して、取ってくる(pull)

# 公式の hello-world イメージを取得
docker pull hello-world

# PC内にあるイメージの一覧を見る
docker images

2) コンテナを作って動かす(run)

# 1回動かして終わる最小の例
docker run --rm hello-world

3) レジストリからの取り寄せ先を変える(例:GHCR)

# ghcr.io/ORG/REPO:TAG というパスで pull/push できる
docker pull ghcr.io/your-org/your-app:1.0.0

用語を会話で整理
イメージレジストリからpullして、コンテナとしてrunする」
これが最小の一連の流れです。


🎯 まとめ

  • イメージ材料セット+手順書の固まり(読み取り専用、レイヤー、タグ)
  • コンテナ=イメージから起動した動く実体(隔離されたプロセス、作っては消す)
  • レジストリ=イメージの保管庫(pull/pushで配布、チームとCI/CDのハブ)
  • 3つがそろうと、再現性・移植性・スピード・分離が手に入る
  • 次の一歩は Dockerfile/タグ&ダイジェスト/永続化/ネットワーク/セキュリティ/Kubernetes