すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Docker、containerd、サンドボックスコンテナランタイムの比較

最終更新日:Mar 27, 2026

Container Service for Kubernetes (ACK) は、containerd、Sandboxed-Container、Docker の 3 種類のコンテナランタイムをサポートしています。本ドキュメントでは、サポートされるクラスタータイプ、機能制限、デプロイメントアーキテクチャ、CLI コマンドを比較し、ワークロードに適したランタイムを選択するための情報を提供します。

重要

Docker ランタイムは廃止されました。クラスターで Docker を使用している場合は、containerd に移行してください。手順については、「Docker から containerd への移行」をご参照ください。

Kubernetes ノードにおけるコンテナランタイムの位置付け

コンテナランタイムは、各ノード上でコンテナの実行とライフサイクルを管理します。kubelet はコンテナランタイムインターフェース (CRI) を介してランタイムと通信し、コンテナの起動、停止、監視を行います。使用するランタイムの選択により、隔離モデル、サポートされるノードタイプ、およびコンテナ管理に使用する CLI ツールが決まります。

ACK は以下のランタイムをサポートしています。

  • containerd — ほとんどのワークロードに推奨されるランタイムです。軽量で CRI に直接準拠しており、中間のデーモンレイヤーがありません。

  • Sandboxed-Container — 軽量 VM (runV) を使用して、各 Pod を分離されたカーネル内で実行します。

  • Docker (廃止済み) — 非推奨となり、メンテナンスも終了しています。containerd に移行してください。

実装と制限事項の比較

機能

containerd

Sandboxed-Container

Docker (メンテナンス終了)

クラスタータイプ

  • ACK マネージドクラスター

  • ACK 専用クラスター

  • ACK Edge クラスター

  • ACK マネージドクラスター

  • ACK 専用クラスター

すべての種類の ACK クラスター

Kubernetes バージョン

バージョン 1.20 以降

Kubernetes 1.16 以降

Kubernetes 1.22 以前

ノードタイプ

  • ECS

  • セルフマネージドノード (ACK Edge クラスター)

ECS ベアメタルインスタンスファミリーのみサポートされます

ECS

ノードオペレーティングシステム

Container Service for Kubernetes は、Alibaba Cloud Linux 3 コンテナ最適化版ContainerOSAlibaba Cloud Linux 3、Ubuntu、Windows などのオペレーティングシステム向けパブリックイメージを提供しています。詳細については、「オペレーティングシステム」をご参照ください。

  • Alibaba Cloud Linux

  • CentOS

コンテナエンジン

containerd

containerd

Docker

モニタリング

サポートされています

サポートされています

サポートされています

コンテナログ収集

サポートされています

手動でのサイドカー注入が必要です。「CRD を使用してサイドカー方式でコンテナのテキストログを収集する」をご参照ください。

サポートされています

コンテナ stdout 収集

サポートされています

サポートされています

サポートされています

RuntimeClass

サポートされていません

サポートされています (runV)

サポートされていません

Pod スケジューリング

構成は不要です。

以下のルールに基づいて構成を追加する必要があります。

  • Kubernetes 1.14.x の場合、nodeSelector パラメーターに以下の構成を追加します。

    alibabacloud.com/sandboxed-container: Sandboxed-Container.runv
  • Kubernetes 1.16.x 以降の場合、構成は不要です。

構成は不要です。

HostNetwork

サポートされています

サポートされていません

サポートされています

ノードデータディスク

任意

必須です。データディスクは 200 GiB 以上である必要があります。

任意

ネットワークプラグイン

  • Flannel

  • Terway (ACK Edge クラスターを除く)

  • Flannel

  • Terway を使用する場合、専用 ENI モードおよび DataPath v2 機能はサポートされません。

  • Flannel

  • Terway

kube-proxy モード

  • iptables

  • IPVS

  • iptables

  • IPVS

  • iptables

  • IPVS

ボリュームプラグイン

CSI プラグイン (ACK Edge クラスターを除く)

CSI プラグイン

CSI プラグイン

コンテナルートファイルシステム

OverlayFS

ディスククォータ構成付き OverlayFS

OverlayFS

説明

Docker と Sandboxed-Container を同じノード上にデプロイすることはできません。クラスター内で両方のランタイムタイプを実行するには、Docker ランタイム用ノードプールと Sandboxed-Container ランタイム用ノードプールを別々に作成してください。

説明

Sandboxed-Container は containerd 上に実装されています。kubectl get node コマンドで Sandboxed-Container ノードを確認したり、ACK コンソールでノード一覧を表示したりすると、ランタイムは containerd と表示されます。

デプロイメントアーキテクチャの比較

デプロイメントアーキテクチャは、kubelet からコンテナまでのコンポーネント呼び出しチェーンを示しています。レイヤーが少ないほど、オーバーヘッドや運用の複雑さが低くなります。

ランタイム

デプロイメントアーキテクチャ

Docker

kubelet
└── dockerd
    └── containerd
        └── containerd-shim
            └── runC containers

containerd

kubelet
└── containerd
    └── containerd-shim
        └── runC containers

Sandboxed-Container v2

kubelet
├── (CRI) containerd
│   ├── containerd-shim
│   │   └── runC containers
│   └── containerd-shim-runv2
│       └── runV sandboxed containers

containerd は Docker に必要な dockerd レイヤーを削除し、kubelet がランタイムに直接 CRI 経由でアクセスできるようにします。Sandboxed-Container v2 は containerd を拡張し、追加の shim (containerd-shim-runv2) を使用して runV により軽量 VM 内で Pod を実行することで、標準の runC コンテナと同一ノード上でカーネルレベルの隔離を実現します。

containerd および Docker の CLI コマンド

containerd と Docker は、イメージおよびコンテナを管理するための異なる CLI ツールを使用します。crictl は CRI レベルで動作し、Kubernetes 環境間で一貫性があるため、containerd に推奨されるツールです。ctr は containerd の低レベル CLI であり、代替として利用可能です。

操作

crictl (containerd 推奨)

ctr (containerd 低レベル CLI)

docker

コンテナの照会

crictl ps

ctr -n k8s.io c ls

docker ps

コンテナの詳細情報の照会

crictl inspect <container>

ctr -n k8s.io c info <container>

docker inspect <container>

コンテナログの照会

crictl logs <container>

N/A

docker logs <container>

コンテナ内でのコマンド実行

crictl exec <container>

N/A

docker exec <container>

ローカルの stdin、stdout、stderr をコンテナにアタッチ

crictl attach <container>

N/A

docker attach <container>

リソース使用量統計の照会

crictl stats <container>

N/A

docker stats <container>

コンテナの作成

crictl create <container>

ctr -n k8s.io c create <container>

docker create <container>

コンテナの起動

crictl start <container>

ctr -n k8s.io run <container>

docker start <container>

コンテナの停止

crictl stop <container>

ctr -n k8s.io task pause <container>

docker stop <container>

コンテナの削除

crictl rm <container>

ctr -n k8s.io c del <container>

docker rm <container>

イメージの照会

crictl images

ctr -n k8s.io i ls <image>

docker images

イメージの詳細情報の照会

crictl inspecti <image>

N/A

docker inspect <image>

イメージのプル

crictl pull <image>

ctr -n k8s.io i pull <image>

docker pull <image>

イメージのプッシュ

N/A

ctr -n k8s.io i push <image>

docker push <image>

イメージの削除

crictl rmi <image>

ctr -n k8s.io i rm <image>

docker rmi <image>

Pod の照会

crictl pods

N/A

N/A

Pod の詳細情報の照会

crictl inspectp <pod name>

N/A

N/A

Pod の起動

crictl runp <pod name>

N/A

N/A

Pod の停止

crictl stopp <pod name>

N/A

N/A

次のステップ

参考