2

据我所知runc list,允许传递容器存储的根目录。但我不知道要为 docker 传递什么根目录。我试过/var/lib/docker/containers了,但它说容器不存在。我确实有容器出现在docker ps(仅供参考)。

或者我假设 docker 仍然使用 runc 来运行容器是错误的?

编辑:基于 Niklas 的回答。有没有办法从 docker 或扫描文件系统中找到 runc 的根目录?

4

1 回答 1

7

根目录位于不同的位置。你可以使用

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

查找根目录的一种方法是查找 init 参数:

 ps aux | grep runtime-root

应该显示参数-runtime-root,并且内部通常至少有moby命名目录,以防 Docker。

第二种方法是查看 Docker 容器配置

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

默认在哪里runtime_root

第三种方式,如果你/etc/docker/daemon.json有的话,还有runtime配置的地方。

第四种方式(小心这个!)。获取 PIDcontainerd

使用 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 回答