このようなものは今、本当に混乱しています。誰かが何が起こっているのか説明してください。直線的なライナーの違いです。
dockerd
libcontainerd
containerd
docker-containerd
docker-runc
docker-containerd-ctr
docker-containerd-shim
ありがとう
dockerd-Dockerデーモン自体。リスト内の最高レベルのコンポーネントであり、リストされている唯一の「Docker」製品です。 DockerのすべてのNice UX機能を提供します。
(docker-)containerd-UnixソケットをリッスンするデーモンもgRPCエンドポイントを公開します。すべての低レベルのコンテナ管理タスク、ストレージ、イメージ配布、ネットワーク接続などを処理します...
(docker-)containerd-ctr-containerdと直接通信する軽量のCLI。それは、「docker」が「dockerd」になることと考えてください。
(docker-)runc-実際にコンテナを実行するための軽量なバイナリ。 cgroup、名前空間などのLinux機能との低レベルのインターフェイスを扱います。
(docker-)containerd-shim-runCが実際にコンテナーを実行した後、終了します(コンテナーに責任のある長時間実行プロセスがないようにします)。シムは、これを容易にするためにcontainerdとruncの間にあるコンポーネントです。
ドキュメントから:
runCは、Dockerエンジンのインストールを実行するのと同じコンテナライブラリであるlibcontainer上に構築されます。バージョン1.11より前は、ボリューム、ネットワーク、コンテナー、イメージなどの管理にDockerエンジンが使用されていました。現在、Dockerアーキテクチャは4つのコンポーネントに分割されています。
Docker engine
containerd
containerd-shm
runC.
バイナリはそれぞれ呼ばれます:
docker
docker-containerd
docker-containerd-shim
docker-runc.
https://i.stack.imgur.com/lAtSR.png
https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426