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 常時稼働サービス

基礎から学ぶなら関連書籍が手がかりになる。

関連用語