【问题标题】:How to list docker containers using runc如何使用 runc 列出 docker 容器
【发布时间】:2020-08-27 12:53:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: docker runc


    【解决方案1】:

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

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

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

     ps aux | grep runtime-root
    

    应该显示-runtime-root的参数,并且里面通常至少有moby命名的目录,如果是Docker的话。

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

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

    默认runtime_root在哪里

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

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

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

    重启/启动一些容器。您可能会看到一些调用,例如:

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

    更多信息:runc and ctr commands do not show docker images and containers

    【讨论】:

    • 是的,我看到了这个,但是帖子并没有谈到找到这个根目录。
    • 我添加了一种查找方式。
    • 根 1450 0.0 0.5 1307236 68028 ? ssl Apr30 11:14 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    • 这就是我得到的,没有 --runtime-root 在那里
    • 我注意到那里有问题,它预计 docker 在路径名中,新更新
    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 2021-01-12
    • 2013-05-26
    • 2019-11-22
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多