DockerとKubernetesは現代のWebアプリケーション開発において必須のスキルです。本記事では、Docker Composeを使ったローカル開発環境構築から、Kubernetesによる本番環境へのデプロイまで解説します。
Dockerとは?コンテナ技術の基礎
Dockerは軽量なコンテナ環境を作成・管理するプラットフォームです。VMと比較して起動時間が秒単位、リソース消費はMB単位と非常に効率的です。
Docker基本コマンド
docker pull nginx:latest
docker run -d -p 8080:80 --name my-nginx nginx:latest
docker ps
docker logs my-nginx
docker stop my-nginx && docker rm my-nginx
Dockerfileの書き方(Pythonアプリ例)
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN adduser --disabled-password appuser
USER appuser
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Docker Compose:マルチコンテナ構成
version: "3.9"
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
- redis
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
postgres_data:
Kubernetesの基本概念
- Pod:最小デプロイ単位
- Deployment:Pod管理・自動復旧
- Service:ロードバランサー
- ConfigMap/Secret:設定管理
Kubernetesデプロイメントマニフェスト
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:v1.0.0
ports:
- containerPort: 8000
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
まとめ:習得ロードマップ
- Week 1-2:Docker基本(Dockerfile、イメージ管理)
- Week 3-4:Docker Composeでマルチコンテナ構築
- Week 5-6:Kubernetes基礎・minikubeで学習
- Week 7-8:本番クラスター(EKS/GKE)デプロイ
- Week 9-10:Helm、GitOps、Prometheus監視
DockerとKubernetesをマスターすることで、DevOpsエンジニアとして年収UP・市場価値向上につながります。