問題タブ [containerd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
145 参照

docker-compose - docker-compose と containerd を使用してイメージを構築しますか?

docker-compose で正常に動作するビルドがあります。ただし、containerd のみがインストールされているパイプラインを介してビルドするように要求されました。どのポートでもリッスンするように構成されていませんが、ソケット パスを使用します。

dockerd なしで、containerd だけで docker-compose を使用することは可能ですか?

0 投票する
1 に答える
198 参照

minikube - docker の代わりに containerd で minikube を起動するにはどうすればよいですか?

デフォルトの docker の代わりに containerd で minikube を起動するにはどうすればよいですか?

0 投票する
1 に答える
1509 参照

linux - Docker でコンテナー プロセスを containerd-shim にアタッチする方法

を使用してコンテナ内でタスクを実行するdocker execと、新しく生成されたプロセスがcontainerd-shim、このコンテナの他のプロセスに関連付けられます。これは予期された動作です。しかし、新しく生成されたプロセスがこのプロセスにどのように接続されるのか、詳しくはわかりません。

編集:いくつかの調査の後、プロセスが実際にruncによって生成され、それを使用しprctl(PR_SET_CHILD_SUBREAPER, 1);てruncを終了でき、プロセスがruncに接続されていることがわかりました。それでも、それはプロセスが私のシェルからこの runc プロセスに接続されている方法に「転送」される方法を説明していませんcontainerd-shim

たとえば、プロセスを生成するとsudo strace docker exec 104f931f77ee sleep 99、次の ps ツリーが作成されます (わかりやすくするために簡略化しています)。

によるとstrace、コンテナがこのプロセスにアタッチされているときにシステムコールが実行されcontainerd-shimないため、これは直接の原因ではありません。containerd-shim(スポーン時ではなく、コンテナが死亡したときにのみ起こされるため)

(編集を参照)これは特に奇妙です:

プロセスをシェルの子として開始することはできません。その後、別のプロセスが親になるように「再親化」します。

したがって、子プロセスを明示的に開始する親プロセスを使用する必要があります。

また、この strace によると、産卵プロセスとcontainerd-shim

では、コンテナをcontainerd-shim親として作成するにはどうすればよいでしょうか。


注: 問題は、コンテナがこのアーキテクチャを必要とする理由ではありません (コンテナを生成したプロセスが中断することなく終了できることはわかっています: コンテナはシェルから切り離された状態で実行を継続できます)。しかし、これを技術的にどのように行うことができるか。