Docker
アプリケーションをコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォーム
Docker とは
Docker は、アプリケーションとその依存関係をコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォームである。2013 年に Solomon Hykes が公開し、コンテナ技術を普及させた。
VM との比較
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
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 の違いを以下にまとめる。
| 観点 | Lambda | ECS (Fargate) |
|---|---|---|
| 実行時間 | 最大 15 分 | 無制限 |
| スケーリング | 自動 (ミリ秒) | 自動 (分) |
| コスト | リクエスト課金 | 時間課金 |
| 用途 | イベント駆動、API | 常時稼働サービス |
基礎から学ぶなら関連書籍が手がかりになる。
この記事は役に立ちましたか?
関連用語
コンテナ
アプリケーションとその依存関係をパッケージ化し、環境に依存しない一貫した実行環境を提供する仮想化技術
Dockerfile
Docker イメージのビルド手順を記述するテキストファイルで、アプリケーションの実行環境を再現可能にする
Docker Compose
複数のコンテナをまとめて定義・起動するツールで、ローカル開発環境の構築に使われる
コンテナオーケストレーション
コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム
Fargate
コンテナのためのサーバーレスコンピューティングエンジン
Init コンテナ
Kubernetes でメインコンテナの起動前に初期化処理を実行する特殊なコンテナ