如何使用 runc 列出 docker 个容器

How to list docker containers using runc

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

或者我假设 docker 仍然使用 运行c 到 运行 容器是错误的吗?

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

根目录在不同的地方。 你可以使用

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

查找根目录的一种方法是查找初始化参数:

 ps aux | grep runtime-root

其中应该显示 -runtime-root 的参数,在 Docker.

的情况下,内部通常至少有 moby 个命名目录

第二种方式是查看Docker containerd 配置

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

默认值在哪里runtime_root

第三种方式,如果你有 /etc/docker/daemon.json 存在,有地方可以进行 runtime 配置。

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

的 PID

使用 strace 检查进程并查找 execve 调用: sudo strace -f -e execve -p <PID>

Restart/start 一些容器。您可能会看到一些电话,例如:

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

更多信息: