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

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

最終更新日:Dec 19, 2024

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

実装と制限に関する比較

機能

containerd

Docker

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

クラスタータイプ

  • ACK管理クラスター

  • ACK専用クラスター

  • ACKエッジクラスター

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

  • ACK管理クラスター

  • ACK専用クラスター

Kubernetes バージョン

Kubernetes 1.31およびそれ以前

Kubernetes 1.22およびそれ以前

説明

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

Kubernetes 1.31およびそれ以前

ノード タイプ

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

  • ECS Bare Metalインスタンス

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

  • ECS インスタンス

  • ECS Bare Metalインスタンス

ECS Bare Metal

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

  • CentOS

  • Alibaba Cloud Linux

  • Windows for ACK 1.20.4以降

  • Ubuntu (ACKエッジクラスター)

  • CentOS

  • Alibaba Cloud Linux

Alibaba Cloud Linuxカスタマイズ版

コンテナーエンジン

containerd

Dockerエンジン

containerd

モニタリング

対応

対応

対応

ログ収集

対応

対応

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

Stdoutコレクション

対応

対応

対応

RuntimeClass

非対応

非対応

サポート対象 (runV)

ポッドスケジューリング

設定は必要ありません。

設定は必要ありません。

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

  • Kubernetes 1.14.xの場合、nodeSelectorパラメーターに次の設定を追加する必要があります。

    alibabacloud.com/sandboxed-container: Sandboxed-Container.runv
  • Kubernetes 1.16.x以降の場合、設定は必要ありません。

HostNetwork

対応

対応

非対応

exec/logs

対応

対応

対応

ノードデータディスク

任意

任意

必須 (少なくとも200 GiB)

ネットワークプラグイン

  • Flannel

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

  • Flannel

  • Terway

  • Flannel

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

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で一般的に使用されるコマンドを次の表に示します。

API 操作

Docker

containerd

ドッカー

crictl (推奨)

ctr

クエリコンテナー

ドッカーps

crictl ps

ctr -n k8s.io c ls

コンテナーの詳細の照会

docker inspect <container>

crictl inspect <container>

ctr -n k8s.io c info <container>

コンテナーログの照会

docker logs <container>

crictlログ <container>

非該当

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

docker exec <container>

crictl exec <container>

非該当

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

docker attach <container>

crictl attach <container>

非該当

リソース使用統計の照会

docker stats <container>

crictl stats <container>

非該当

コンテナーの作成

docker create <container>

crictl create <container>

ctr -n k8s.io c create <container>

コンテナーの起動

docker start <container>

crictl start <container>

ctr -n k8s.io run <container>

コンテナを停止する

docker stop <container>

crictl stop <container>

非該当

コンテナの削除

docker rm <コンテナ>

crictl rm <container>

ctr -n k8s.io c del <container>

画像のクエリ

dockerイメージ

crictl画像

ctr -n k8s.io i ls <image>

画像の詳細を照会する

docker inspect <image>

crictl inspecti <image>

非該当

プル画像

docker pull <image>

crictl pull <image>

ctr -n k8s.io i pull <image>

プッシュ画像

docker push <image>

非該当

ctr -n k8s.io i push <image>

画像の削除

docker rmi <image>

crictl rmi <image>

ctr -n k8s.io i rm <image>

ポッドの照会

非該当

crictlポッド

非該当

クエリポッドの詳細

非該当

crictl inspectp <ポッド名>

非該当

ポッドの起動

非該当

crictl runp <ポッド名>

非該当

停止ポッド

非該当

crictl stopp <ポッド名>

非該当