違い: 1.containerd は dockershim を経由する必要がないため、呼び出しチェーンは短くなりますが、docker は dockershim を経由する必要があるため、呼び出しチェーンは長くなります; 2. docker は cni "docker-shim" を呼び出します、containerd は cni を「containerd-cri」と呼びます。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
containerd と docker の違いは何ですか
k8s を使用する場合、docker とcontainerd を使用する呼び出しチェーンは次のとおりです。
containerd を使用すると、呼び出しチェーンが短くなり、dockershim と dockerデータ ディレクトリを経由する必要がないことがわかります。
docker のデフォルトのデータ ディレクトリが /var/lib/docker ディレクトリにあることは誰もが知っていると思いますが、containerd に切り替えると、データ ディレクトリはデフォルトで /var/lib/containerdになります。
Log
k8s を使用する場合、docker がランタイムとして使用されている場合、実際には docker がコンテナー プログラムのログをディスクに書き込む役割を果たします。 /var/log/pod および /var/log/container の下のログ ファイルは、/var/lib/docker の下の対応するログ ファイルにソフトリンクされます。ログのいくつかのパラメータを設定する必要がある場合は、直接変更できます。 docker 構成ファイル。;そして、containerd をランタイムとして使用する場合、kubelet がコンテナー ログの配置を担当します。/var/log/container の下のログ ファイルは、/var の下のログ ファイルにソフト接続されます。 /log/pod. ログパラメータの調整が必要な場合は、kubelet 関連の設定を変更する必要がありますCNI
docker をランタイムとして使用する場合、docker-shim kubelet では cni を呼び出す役割があり、containerd を実行時に使用する場合、containerd に組み込まれているcontainerd-cri が cni[plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d"
ストリーミング サービス
を呼び出す役割を果たします。 k8s に詳しい友人は、kubectl exec や kubelet log などのコマンドを渡す必要があることを知っています。API サーバーは、ストリーミング サービスを含むコンテナと通信します。 docker API 自体は、kubelet の docker-shim が docker API ストリームを通じて転送されることをサポートしていますが、containerd は別途設定する必要があります[plugins."io.containerd.grpc.v1.cri"] stream_idle_timeout = "4h0m0s" stream_server_address = "127.0.0.1" stream_server_port = "0" enable_tls_streaming = false推奨される学習: 「
docker ビデオ チュートリアル 」
以上がContainerd と Docker の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。