問題タブ [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.
docker-compose - docker-compose と containerd を使用してイメージを構築しますか?
docker-compose で正常に動作するビルドがあります。ただし、containerd のみがインストールされているパイプラインを介してビルドするように要求されました。どのポートでもリッスンするように構成されていませんが、ソケット パスを使用します。
dockerd なしで、containerd だけで docker-compose を使用することは可能ですか?
minikube - docker の代わりに containerd で minikube を起動するにはどうすればよいですか?
デフォルトの docker の代わりに containerd で minikube を起動するにはどうすればよいですか?
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
親として作成するにはどうすればよいでしょうか。
注: 問題は、コンテナがこのアーキテクチャを必要とする理由ではありません (コンテナを生成したプロセスが中断することなく終了できることはわかっています: コンテナはシェルから切り離された状態で実行を継続できます)。しかし、これを技術的にどのように行うことができるか。