据我所知runc list
,允许传递容器存储的根目录。但我不知道要为 docker 传递什么根目录。我试过/var/lib/docker/containers
了,但它说容器不存在。我确实有容器出现在docker ps
(仅供参考)。
或者我假设 docker 仍然使用 runc 来运行容器是错误的?
编辑:基于 Niklas 的回答。有没有办法从 docker 或扫描文件系统中找到 runc 的根目录?
根目录位于不同的位置。你可以使用
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"