web-dev-qa-db-ja.com

dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim

このようなものは今、本当に混乱しています。誰かが何が起こっているのか説明してください。直線的なライナーの違いです。

  • dockerd
  • libcontainerd
  • containerd
  • docker-containerd
  • docker-runc
  • docker-containerd-ctr
  • docker-containerd-shim

ありがとう

42
Ijaz Ahmad Khan

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の間にあるコンポーネントです。

55
johnharris85

ドキュメントから:

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

3
Ijaz Ahmad Khan