2

私が知る限りrunc list、コンテナ ストレージのルート ディレクトリを渡すことができます。しかし、docker に渡すルート ディレクトリがわかりません。試してみ/var/lib/docker/containersましたが、コンテナが存在しないと表示されます。docker ps(fyi)にコンテナが表示されます。

それとも、docker がまだ runc を使用してコンテナーを実行していると仮定するのは間違っていますか?

編集:ニクラスの答えに基づいています。docker またはファイル システムのスキャンから、runc のルート ディレクトリを見つける方法はありますか?

4

1 に答える 1

7

ルートディレクトリは別の場所にあります。あなたが使用することができます

sudo runc --root /run/docker/runtime-runc/moby  list

ルート ディレクトリを見つける 1 つの方法は、init 引数を探すことです。

 ps aux | grep runtime-root

の引数を表示する必要があり、通常、Docker の場合、-runtime-root少なくとも名前付きのディレクトリがあります。moby

2番目の方法は、Dockerのcontainerd構成を調べることです

/var/run/docker/containerd/containerd.toml

デフォルトはどこですかruntime_root

3 番目の方法として、/etc/docker/daemon.json既にある場合は、構成する場所がありruntimeます。

4 番目の方法 (これには注意してください!)。の PID を取得containerd

strace を使用してプロセスを検査し、execve 呼び出しを探します。 sudo strace -f -e execve -p <PID>

コンテナを再起動/開始します。そして、次のような呼び出しが表示される場合があります。

execve("/usr/sbin/runc", ["runc", "--root", "/var/run/docker/runtime-runc/mob"

詳細: runc および ctr コマンドで docker イメージとコンテナーが表示されない

于 2020-05-11T22:10:53.780 に答える