如何使用 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"
更多信息:
据我所知 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
使用 strace 检查进程并查找 execve 调用:
sudo strace -f -e execve -p <PID>
Restart/start 一些容器。您可能会看到一些电话,例如:
execve("/usr/sbin/runc", ["runc", "--root", "/var/run/docker/runtime-runc/mob"
更多信息: