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

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

最終更新日:Nov 20, 2024

コンテナと画像は、ソフトウェアのパッケージングと配送の業界標準となっています。 Kubernetesは、コンテナー化されたクラウドネイティブアプリケーションを構築、開発、管理するための標準プラットフォームになりました。 Container Service for Kubernetes (ACK) でアプリケーションをデプロイする企業や顧客の数が増えています。 ACKは、containerd、Docker、およびSandboxed-containerのコンテナーランタイムをサポートします。 このトピックでは、これらのランタイムを、実装、制限、および展開アーキテクチャに関して比較します。 このトピックでは、Docker Engineとcontainerdで提供される一般的に使用されるコマンドも比較します。 これにより、ビジネス要件とシナリオに基づいてコンテナーランタイムを選択できます。

実装と制限に関する比較

機能

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およびCentOS (ACK Edgeクラスター)

  • CentOS

  • Alibaba Cloud Linux

Alibaba Cloud Linuxカスタマイズ版

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

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

コンテナーエンジン

containerd

Dockerエンジン

containerd

なし

モニタリング

対応

対応

対応

なし

ログ収集

対応

対応

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

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

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

kubelet -> dockerd -> containerd -> containerd-shim -> runC containers

containerd

kubelet -> containerd -> containerd-shim -> runC containers

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

kubelet->(CRI)containerd
\-> containerd-shim -> runC containers
\-> containerd-shim-rund-v2 -> runV sandboxed containers

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

Dockerは、コンテナのライフサイクル管理にDocker Engineを使用します。 Sandboxed-コンテナはコンテナのライフサイクル管理にcontainerdを使用します。 これらのツールは、イメージとコンテナの管理に使用できるさまざまなコマンドを提供します。 Docker Engineおよびcontainerdで一般的に使用されるコマンドを次の表に示します。

API 操作

Docker

containerd

ドッカー

crictl (推奨)

ctr

クエリコンテナー

ドッカーps

crictl ps

ctr -n k8s.io c ls

コンテナーの詳細の照会

ドッカー検査

crictl inspect

ctr -n k8s.io c情報

コンテナーログの照会

dockerログ

crictlログ

なし

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

docker exec

crictl exec

なし

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

dockerアタッチ

crictlの接続

なし

リソース使用統計の照会

ドッカー統計

crittlの統計

なし

コンテナーの作成

docker create

crictl create

ctr -n k8s.io c create

コンテナーの起動

docker start

crictl start

ctr -n k8s.ioの実行

コンテナを停止する

docker停止

crittlストップ

なし

コンテナの削除

ドッカーrm

crictl rm

ctr -n k8s.io c del

画像のクエリ

dockerイメージ

crictl画像

ctr -n k8s.io i ls

画像の詳細を照会する

ドッカー検査

crittl inspecti

なし

プル画像

docker pull

crictlプル

ctr -n k8s.io i pull

プッシュ画像

dockerプッシュ

なし

ctr -n k8s.io iプッシュ

画像の削除

docker rmi

crictl rmi

ctr -n k8s.io i rm

ポッドの照会

なし

crictlポッド

なし

クエリポッドの詳細

なし

crittl inspectp

なし

ポッドの起動

なし

crictl runp

なし

停止ポッド

なし

crittlストップ

なし