🐳
🐳 Dockerと仮想化の基本整理【初心者向けまとめ】
🐳 Dockerと仮想化の基本整理
✅ 1. Dockerイメージ vs コンテナ
項目 | Dockerイメージ (Image) | Dockerコンテナ (Container) |
---|---|---|
状態 | 静的(実行前) | 動的(実行中) |
役割 | 実行環境のテンプレート | 実際に動作するインスタンス |
作成 | docker build |
docker run |
変更 | 不可(不変) | 可(書き込み可能) |
例え | 設計図 | 実際に動く機械 |
要約: イメージは設計図、コンテナは実行されたオブジェクト
✅ 2. Dockerイメージの作成方法
-
docker commit
- 実行中のコンテナの状態をイメージ化
- 自動化が困難 → 実務では非推奨 ❌
-
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