🐳

🐳 Dockerと仮想化の基本整理【初心者向けまとめ】

に公開

🐳 Dockerと仮想化の基本整理


✅ 1. Dockerイメージ vs コンテナ

項目 Dockerイメージ (Image) Dockerコンテナ (Container)
状態 静的(実行前) 動的(実行中)
役割 実行環境のテンプレート 実際に動作するインスタンス
作成 docker build docker run
変更 不可(不変) 可(書き込み可能)
例え 設計図 実際に動く機械

要約: イメージは設計図、コンテナは実行されたオブジェクト


✅ 2. Dockerイメージの作成方法

  1. docker commit

    • 実行中のコンテナの状態をイメージ化
    • 自動化が困難 → 実務では非推奨 ❌
  2. Dockerfile使用

    • 設定ファイルをもとにイメージを自動生成
    • 実務で最も一般的 ✅

✅ 3. Dockerfileの主要コマンド

コマンド 説明
FROM ベースイメージの指定
RUN シェルコマンドの実行(イメージ作成中)
CMD コンテナ起動時のデフォルトコマンド
COPY ホスト → コンテナへファイルコピー
EXPOSE 使用するポートの指定(ドキュメント用)
WORKDIR 作業ディレクトリの設定
FROM ubuntu:20.04
COPY . /app
WORKDIR /app
RUN apt-get update
CMD ["python3", "app.py"]

✅ 4. コンテナの状態(ライフサイクル)

  • Created: docker create
  • Running: docker run, start
  • Pause: docker pause → CPU停止
  • Unpause: 再開
  • Stopped: docker stop → 終了
  • Deleted: docker rm → 完全削除

流れ: Created → Running → Pause → Stopped → Deleted


✅ 5. コンテナ vs 仮想マシン(VM)

項目 コンテナ 仮想マシン (VM)
実行単位 プロセス単位 OS全体
起動速度 高速(秒単位) 低速(分単位)
リソース使用 効率的 重い
カーネル ホストと共有 個別のOSカーネル必要
代表例 Docker, LXC VMware, VirtualBox

要約: コンテナは軽量・高速、VMは完全に分離された環境


✅ 6. 仮想化(Virtualization)の基本

仮想化とは、1つの物理リソースを複数の論理的な仮想環境に分割して利用する技術である。

📌 種類

  • ハイパーバイザー(Hypervisor)型

    • Type 1 (ベアメタル型): ハードウェア上で直接動作(例:ESXi)
    • Type 2 (ホスト型): OS上で動作(例:VirtualBox)
  • コンテナ型仮想化(例:Docker)

    • OSカーネルを共有しつつ、隔離された環境を提供

✅ 仮想化のメリット

  • リソースの効率化
  • 複数環境でのテストが容易
  • 隔離性とセキュリティ向上

一言で言えば: 仮想化は物理リソースを分割して複数の仮想環境を作る技術!


Discussion