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

Container Service for Kubernetes:Docker、containerd、およびSandboxed-Containerの比較

最終更新日:Jan 26, 2025

Container Service for Kubernetes (ACK) は、containerd、Sandboxed-container、Dockerのコンテナーランタイムをサポートしています。 このトピックでは、これらのランタイムを実装、制限、配置アーキテクチャに関して比較し、ビジネス要件とシナリオに基づいてコンテナーランタイムを選択するのに役立ちます。

実装と制限に関する比較

機能

containerd

サンドボックス-コンテナ

Docker (メンテナンス中止)

クラスタータイプ

  • ACK管理クラスター

  • ACK専用クラスター

  • ACKエッジクラスター

  • ACK管理クラスター

  • ACK専用クラスター

すべてのタイプのACKクラスター

Kubernetes バージョン

Kubernetes 1.32およびそれ以前

Kubernetes 1.32およびそれ以前

Kubernetes 1.22およびそれ以前

説明

クラスター用にDockerをcontainerdにアップグレードすることを推奨します。 詳細については、「コンテナランタイムをDockerからcontainerdに変更する」をご参照ください。

ノード タイプ

  • Elastic Compute Service (ECS)インスタンス

  • 自己管理ノード (ACK Edgeクラスター)

ECS Bare Metalインスタンス

ECS インスタンス

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

ACKは、以下を含むオペレーティングシステム用のパブリックイメージを提供します。

  • ContainerOS

  • Alibaba Cloud Linux 3

  • Ubuntu

  • Windows

詳細については、「OSイメージ」をご参照ください。

Alibaba Cloud Linuxカスタマイズ版

  • Alibaba Cloud Linux

  • CentOS

コンテナーエンジン

containerd

containerd

Docker

モニタリング

対応

対応

対応

ログ収集

対応

ログ収集をサポートするには、サイドカーコンテナの手動設定が必要です。

対応

Stdoutコレクション

対応

対応

対応

RuntimeClass

非対応

サポート対象 (runV)

非対応

ポッドスケジューリング

設定は必要ありません。

次のルールに基づいてポッドを設定する必要があります。

  • 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-eniip: IPVLANで実行されない、または各ポッドモードに1つのENIを割り当てないterway-eniipのみがサポートされます。

  • Flannel

  • Terway

Kube-プロキシモード

  • iptables

  • IPVS

  • iptables

  • IPVS

  • iptables

  • IPVS

ボリュームプラグイン

CSI (ACKエッジクラスタを除く)

CSI

CSI

Container rootファイルシステム

OverlayFS

ディスククォータをサポートするOverlayFS

OverlayFS

説明
  • DockerとSandboxed-Containerの両方を同じノードにデプロイすることはできません。

  • DockerとSandboxed-Containerの両方を同じクラスターにデプロイするには、異なるタイプのコンテナランタイムを使用するノードプールを作成します。

  • サイドカー設定の詳細については、「CRDを使用してsidecarモードでコンテナテキストログを収集する」をご参照ください。

配置アーキテクチャに関する比較

ランタイム

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

Docker

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

containerd

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

サンドボックス-コンテナV2

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

Docker Engineとcontainerdが提供する一般的に使用されるコマンドの比較

Dockerは、コンテナのライフサイクル管理にDocker Engineを使用します。 Sandboxed-コンテナはコンテナのライフサイクル管理にcontainerdを使用します。 どちらのランタイムも、イメージとコンテナを管理するための独自のCLIツールを提供します。 Docker Engineおよびcontainerdで一般的に使用されるコマンドを次の表に示します。

操作

containerd

Docker

crictl (推奨)

ctr

ドッカー

クエリコンテナー

crictl ps

ctr -n k8s.io c ls

ドッカーps

コンテナーの詳細の照会

crictl inspect <container>

ctr -n k8s.io c info <container>

docker inspect <container>

コンテナーログの照会

crictlログ <container>

非該当

docker logs <container>

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

crictl exec <container>

非該当

docker exec <container>

ローカルのstdin、stdout、およびstderrをコンテナに接続する

crictl attach <container>

非該当

docker attach <container>

リソース使用統計の照会

crictl stats <container>

非該当

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タスクの一時停止 <container>

docker stop <container>

コンテナの削除

crictl rm <container>

ctr -n k8s.io c del <container>

docker rm <コンテナ>

画像のクエリ

crictl画像

ctr -n k8s.io i ls <image>

dockerイメージ

画像の詳細を照会する

crictl inspecti <image>

非該当

docker inspect <image>

プル画像

crictl pull <image>

ctr -n k8s.io i pull <image>

docker pull <image>

プッシュ画像

非該当

ctr -n k8s.io i push <image>

docker push <image>

画像の削除

crictl rmi <image>

ctr -n k8s.io i rm <image>

docker rmi <image>

ポッドの照会

crictlポッド

非該当

非該当

クエリポッドの詳細

crictl inspectp <ポッド名>

非該当

非該当

ポッドの起動

crictl runp <ポッド名>

非該当

非該当

停止ポッド

crictl stopp <ポッド名>

非該当

非該当