第1章 Docker基本概念
更新日:2025年12月27日
この章を音声で聴く
1. Dockerとは
1.1 コンテナ仮想化
Dockerは、アプリケーションとその実行に必要なすべての依存関係(ライブラリ、設定ファイル、環境変数など)を「コンテナ」と呼ばれる隔離された環境にパッケージ化する技術である。コンテナは軽量で可搬性が高く、開発環境から本番環境まで一貫した動作を保証する。
コンテナ技術の核心は、Linuxカーネルの機能であるnamespace(名前空間)とcgroups(コントロールグループ)にある。namespaceによりプロセス、ネットワーク、ファイルシステムなどを隔離し、cgroupsによりCPU、メモリなどのリソース使用量を制限する。
1.2 VMとの違い
従来の仮想マシン(VM)との主要な違いを以下に示す。
Table 1. コンテナとVMの比較
| 項目 | コンテナ | 仮想マシン(VM) |
|---|---|---|
| 起動時間 | 秒単位 | 分単位 |
| サイズ | MB単位 | GB単位 |
| カーネル | ホストOS共有 | 各VM独自 |
| 隔離レベル | プロセスレベル | ハードウェアレベル |
| オーバーヘッド | 低い | 高い |
コンテナはホストOSのカーネルを共有するため軽量だが、セキュリティ面ではVMの方が強い隔離を提供する。用途に応じて使い分けることが重要である。
2. 基本アーキテクチャ
2.1 イメージとコンテナ
Dockerの中核となる概念は「イメージ」と「コンテナ」である。
イメージ(Image):アプリケーションの実行に必要なファイルシステムと設定をまとめた読み取り専用のテンプレート。Dockerfileから作成される。
コンテナ(Container):イメージから生成される実行中のインスタンス。イメージを「クラス」とすれば、コンテナは「インスタンス」に相当する。
2.2 レイヤー構造
Dockerイメージは複数のレイヤーで構成される。各レイヤーは前のレイヤーとの差分のみを保持するため、ストレージ効率が高い。
# 各命令がレイヤーを生成
FROM python:3.11-slim # ベースレイヤー
WORKDIR /app # レイヤー2
COPY requirements.txt . # レイヤー3
RUN pip install -r requirements.txt # レイヤー4
COPY . . # レイヤー5
レイヤーはキャッシュされるため、変更のないレイヤーは再利用され、ビルド時間が短縮される。
2.3 Docker Hub
Docker Hubは、Dockerイメージを共有・配布するための公開レジストリである。公式イメージ(Official Images)として、Python、Node.js、PostgreSQLなど多数のイメージが提供されている。
Table 2. 主要な公式イメージ
| イメージ名 | 説明 | タグ例 |
|---|---|---|
| python | Python実行環境 | 3.11, 3.11-slim, 3.11-alpine |
| node | Node.js実行環境 | 20, 20-slim, 20-alpine |
| postgres | PostgreSQLデータベース | 15, 16, latest |
| nginx | Webサーバー | latest, alpine |
3. 基本コマンド
3.1 イメージ操作
イメージの取得・一覧・削除に関する基本コマンドを以下に示す。
# イメージの取得(Docker Hubから)
docker pull python:3.11-slim
# ローカルイメージの一覧表示
docker images
# イメージの削除
docker rmi python:3.11-slim
# 未使用イメージの一括削除
docker image prune
3.2 コンテナ操作
コンテナの作成・起動・停止・削除に関する基本コマンドを以下に示す。
# コンテナの作成と起動(対話モード)
docker run -it python:3.11-slim bash
# コンテナの作成と起動(バックグラウンド)
docker run -d --name my-app python:3.11-slim
# 実行中コンテナの一覧
docker ps
# すべてのコンテナの一覧(停止中含む)
docker ps -a
# コンテナの停止
docker stop my-app
# コンテナの削除
docker rm my-app
# 実行中コンテナへの接続
docker exec -it my-app bash
-itオプションは-i(標準入力を開く)と-t(疑似TTY割り当て)の組み合わせ。対話的なシェル操作に必要。
4. インストールと環境構築
Dockerのインストール方法はOSによって異なる。以下に主要なプラットフォームでのインストール手順を示す。
Windows / macOS:Docker Desktopをインストール。GUIによる管理機能も提供される。
Linux(Ubuntu):aptパッケージマネージャーを使用。
# 必要なパッケージのインストール
sudo apt update
sudo apt install docker.io
# Dockerサービスの起動
sudo systemctl start docker
sudo systemctl enable docker
# 動作確認
docker run hello-world
実践ステップ
Step 1:Docker Desktop(Windows/macOS)またはdocker.io(Linux)をインストール
Step 2:docker run hello-worldで動作確認
Step 3:docker pull python:3.11-slimでPythonイメージを取得
Step 4:docker run -it python:3.11-slim pythonでPython REPLを起動
本章は2025年12月時点の情報に基づいています。Dockerのバージョンアップにより、コマンドや動作が変更される可能性があります。最新情報は公式ドキュメントをご確認ください。