Docker

アプリケーションをコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォーム

コンテナDevOps
Docker」の技術書を見る (153 冊) →

Docker とは

Docker は、アプリケーションとその依存関係コンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォームである。2013 年に Solomon Hykes が公開し、コンテナ技術を普及させた。

VM との比較

VM との主な違いを以下に比較する。

観点Docker コンテナ仮想マシン (VM)
起動時間ミリ秒秒〜分
サイズMBGB
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 の違いを以下にまとめる。

観点LambdaECS (Fargate)
実行時間最大 15 分無制限
スケーリング自動 (ミリ秒)自動 (分)
コストリクエスト課金時間課金
用途イベント駆動、API常時稼働サービス

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

この記事は役に立ちましたか?

関連用語

関連する記事