なぜDockerが必要なのか
「自分の環境では動くのに本番では動かない」という問題は、エンジニアなら誰もが経験します。Dockerはアプリケーションと実行環境をまとめてパッケージ化することで、この問題を解決します。
コンテナとVMの違い
| 比較項目 | VM | Docker |
|---|---|---|
| 起動時間 | 分単位 | 秒単位 |
| リソース消費 | 大 | 小 |
| ポータビリティ | 低 | 高 |
| OSの扱い | 完全なOS | ホストOS共有 |
コンテナはOSカーネルを共有するため、軽量かつ高速です。
基本的なDockerコマンド
# イメージの取得と実行
docker pull nginx
docker run -d -p 80:80 nginx
# コンテナ管理
docker ps # 実行中コンテナ一覧
docker stop [ID] # 停止
docker rm [ID] # 削除
docker images # イメージ一覧
Dockerfileの書き方
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0"]
Docker Composeで複数サービスを管理
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
docker compose up -d # バックグラウンド起動
docker compose down # 停止・削除
docker compose logs -f # ログ確認
よくあるユースケース
- 開発環境の統一:チーム全員が同じ環境で開発
- CI/CDパイプライン:テスト・ビルドをコンテナで実行
- マイクロサービス:各サービスを独立したコンテナで運用
- 本番デプロイ:Kubernetes連携でスケーラブルな運用
Dockerをマスターすることでインフラへの理解が深まり、DevOpsエンジニアへの道が開けます。





