Docker

クラウド | IT用語集

この用語をシェア

概要・定義

Dockerは、アプリケーションをコンテナとしてパッケージ化し、どこでも実行できるようにするコンテナ仮想化プラットフォームです。2013年にDotCloud社(現在のDocker, Inc.)によって公開され、現在ではコンテナ仮想化のデファクトスタンダードとなっています。

Dockerは、アプリケーションとその依存関係を独立したコンテナとしてパッケージ化し、「ビルド、シップ、ラン」というコンセプトで、環境の独立性、ポータビリティ、スケーラビリティを実現します。

主要な特徴・利点

1. 環境の独立性

アプリケーションとその依存関係をコンテナに含め、ホスト環境に依存しない実行を実現します。

2. ポータビリティ

一度ビルドしたアプリケーションを、開発環境から本番環境まで、一貫して同じように実行できます。

3. 軽量性

仮想マシンと比較して、リソース消費が少なく、起動が高速です。

4. スケーラビリティ

コンテナのレプリケーションとスケールアウトが容易で、マイクロサービスアーキテクチャに適しています。

主要コンポーネント

1. Docker Engine

Dockerのコアコンポーネントで、コンテナの作成、実行、管理を行います。

2. Docker Image

アプリケーションとその依存関係を含む読み取り専用のテンプレートです。

3. Docker Container

Docker Imageから作成された実行可能なインスタンスです。

4. Dockerfile

Docker Imageを作成するためのスクリプトファイルです。

5. Docker Registry

Docker Imageを保存、共有するためのリポジトリサービスです。

使用例・実装方法

基本的なDockerコマンド

# コンテナの実行
docker run hello-world

# インタラクティブモードでコンテナ実行
docker run -it ubuntu:latest /bin/bash

# バックグラウンドでコンテナ実行
docker run -d nginx:latest

# ポートマッピングでコンテナ実行
docker run -d -p 8080:80 nginx:latest

クラウドでのコンテナ運用(ECS・Cloud Run)

Dockerで作成したコンテナイメージは、ローカル環境だけでなく各クラウドのマネージドサービス上で本番運用するのが一般的です。開発環境の一貫性という文脈を超えて、クラウド上での実行・スケーリングという観点で主要なサービスを整理します。

主要なコンテナ実行サービス

  • Amazon ECS(Elastic Container Service): AWS独自のコンテナオーケストレーションサービス。EC2上またはFargate(サーバーレス)で実行可能
  • Amazon EKS: AWS上でKubernetesを運用するマネージドサービス
  • Google Cloud Run: リクエスト単位で自動スケール(ゼロスケール可)するサーバーレスコンテナ実行環境
  • Azure Container Apps / ACI: Azure上での軽量なコンテナ実行サービス

Cloud Runへのデプロイ例

# Dockerイメージをビルドしてレジストリにpush
docker build -t gcr.io/my-project/my-app:latest .
docker push gcr.io/my-project/my-app:latest

# Cloud Runにデプロイ
gcloud run deploy my-app \
  --image gcr.io/my-project/my-app:latest \
  --platform managed \
  --region asia-northeast1 \
  --allow-unauthenticated

デメリット・注意点

1. セキュリティ管理の複雑さ

コンテナ間でOSカーネルを共有するため、カーネル脆弱性が全コンテナに影響するリスクがあります。イメージの脆弱性スキャン(Docker Scout、Trivy等)を継続的に行う運用が必要です。

2. 永続データの扱い

コンテナ自体はステートレスな設計が前提のため、データベースなど永続化が必要なワークロードでは、外部のマネージドサービス(RDS等)やボリュームの設計を別途検討する必要があります。

3. 運用の学習コスト

本番運用でKubernetes等のオーケストレーションを組み合わせる場合、Dockerの知識に加えて別途学習コストが発生します。小規模な用途であればECSやCloud Runのようなフルマネージド型サービスの方が運用負荷を抑えられます。

クラウドコンテナサービスの比較

項目Amazon ECS/FargateGoogle Cloud RunKubernetes(EKS/GKE等)
運用の複雑さ中程度低い(フルマネージド)高い
ゼロスケールFargateは非対応が基本対応(未使用時は課金ゼロ)構成次第(KEDA等で対応可)
マルチクラウド対応AWS専用GCP専用(Knativeベース)高い(業界標準)
向いている用途AWS中心の中〜大規模システムAPIやWebアプリ等のリクエスト駆動処理複雑な大規模システム、マルチクラウド

実務での活用シーン

  • マイクロサービスの本番運用: 各サービスをDockerイメージ化し、ECSやKubernetesでスケール運用
  • CI/CDパイプラインでのビルド・テスト環境統一: GitHub Actions等でDockerイメージをビルドし、そのままステージング・本番へデプロイ
  • バッチ処理・ジョブ実行基盤: 一時的なワークロードをコンテナ化し、Cloud RunジョブやAWS Batchで実行
  • レガシーアプリのコンテナ化(リフト&シフト): オンプレミスのアプリをコンテナ化してクラウド移行を段階的に進める

最新動向(2025-2026年)

Dockerは2025年現在も開発環境の標準ツールとして広く使われており、コンテナエコシステム全体が成熟・進化しています。

  • Docker Desktop 4.x系の進化 - WSL2(Windows)、macOS Apple Siliconのネイティブサポートが改善。Dev Containersとの統合により、チーム全体での開発環境統一が容易に
  • Docker BuildKit(Bake)の普及 - マルチプラットフォームビルド(x86/ARM)のサポートが強化され、Apple SiliconとAWS Gravitonの両方に対応したイメージを1コマンドでビルド可能
  • OCI(Open Container Initiative)標準化 - コンテナランタイムの標準化が進み、containerd(Docker内部で使用)やPodmanなどの代替ランタイムとの相互運用性が向上
  • AIワークロードへの対応 - NVIDIA Container ToolkitによるGPUアクセラレーションが成熟。Dockerコンテナ内でCUDAを使ったAI/ML処理が容易に
  • Docker Businessプラン強化 - セキュリティスキャン(Scout)機能が強化。コンテナイメージの脆弱性管理がCI/CDパイプラインに統合しやすくなった

よくある質問(FAQ)

Q. DockerとVMの違いは何ですか?

仮想マシン(VM)はハイパーバイザー上でゲストOSを含む完全な仮想環境を実行します。一方、DockerコンテナはホストOSのカーネルを共有しながら、プロセス空間とファイルシステムを分離します。その結果、コンテナはVMより起動が数秒〜数十倍速く、リソース消費が少ないです。VMは完全な隔離が必要なセキュリティ要件に向いており、コンテナはマイクロサービスやCI/CD環境の効率化に向いています。

Q. DockerとKubernetesの関係は?

DockerはコンテナのビルドとローカルでのRunが中心のツールです。Kubernetes(K8s)はコンテナを本番環境で大規模に運用するためのオーケストレーションプラットフォームです。Dockerでイメージを作成し、それをKubernetesで複数のサーバーに分散配置して管理するという使い分けが一般的です。小規模なら「Docker Compose」で複数コンテナを管理し、大規模になったらKubernetesに移行するケースが多いです。

Q. Dockerは無料で使えますか?

Docker Engineはオープンソースで無料です。Docker Desktop(Windows/Mac向けのGUIアプリ)は、個人や小規模チーム(従業員250人未満かつ売上1,000万ドル未満)は無料で利用できますが、企業での商用利用では有料のサブスクリプション(Docker Business等)が必要になる場合があります(2022年の利用規約変更以降)。Linuxでは引き続きDockerを無料で使用できます。

外部リンク

関連用語

この用語についてもっと詳しく

Dockerに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。

カテゴリ

クラウド IT用語集