Docker
アプリケーションをコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォーム
コンテナDevOps
Docker とは
Docker は、アプリケーションとその依存関係をコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォームである。2013 年に Solomon Hykes が公開し、コンテナ技術を普及させた。
VM との比較
| 観点 | Docker コンテナ | 仮想マシン (VM) |
|---|---|---|
| 起動時間 | ミリ秒 | 秒〜分 |
| サイズ | MB | GB |
| OS | ホスト OS のカーネルを共有 | ゲスト OS が必要 |
| 隔離 | プロセスレベル | ハードウェアレベル |
| オーバーヘッド | 小さい | 大きい |
基本コマンド
# イメージのビルド
docker build -t myapp .
# コンテナの起動
docker run -d -p 3000:3000 myapp
# 実行中のコンテナ一覧
docker ps
# ログの確認
docker logs -f <container-id>
# コンテナに入る
docker exec -it <container-id> /bin/sh
# 停止・削除
docker stop <container-id>
docker rm <container-id>
# イメージの削除
docker image prune -a
Dockerfile
FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY dist/ dist/
EXPOSE 3000
CMD ["node", "dist/index.js"]
Docker の構成要素
Docker は Dockerfile (イメージのビルド手順)、イメージ (読み取り専用のテンプレート)、コンテナ (イメージの実行インスタンス)、レジストリ (イメージの保存場所、ECR や Docker Hub)、Docker Compose (複数コンテナの定義・起動) で構成される。
AWS でのコンテナ実行
AWS では ECS (Fargate) でサーバーレスコンテナ実行、EKS でマネージド Kubernetes、ECR でコンテナレジストリ、Lambda のコンテナイメージデプロイ、App Runner で最もシンプルなコンテナ実行が可能。
Lambda vs ECS
| 観点 | Lambda | ECS (Fargate) |
|---|---|---|
| 実行時間 | 最大 15 分 | 無制限 |
| スケーリング | 自動 (ミリ秒) | 自動 (分) |
| コスト | リクエスト課金 | 時間課金 |
| 用途 | イベント駆動、API | 常時稼働サービス |
基礎から学ぶなら関連書籍が手がかりになる。