runc 和 ctr 命令不显示 docker 个图像和容器
runc and ctr commands do not show docker images and containers
我在 VM 上有多个 Docker 映像和容器 运行。但是像 "runc list" 这样的命令没有列出任何这些。
如何让 runc/containerd 知道我现有的 docker 图片?
运行时(runc
)使用so-called运行时根目录来存储和获取容器信息。在这个根目录下,runc
放置sub-directories(每个容器一个),每个包含state.json
文件,容器状态描述所在。
运行时根目录的默认位置是 /run/runc
(对于 non-rootless 容器)或 $XDG_RUNTIME_DIR/runc
(对于无根容器)——后者通常也指向 /run
(例如 /run/user/$UID/runc
)。
当容器引擎调用 runc
时,它可能会覆盖默认的运行时根目录并指定自定义目录(runc
的 --root
选项)。 Docker 使用这种可能性,例如在我的盒子上,它指定 /run/docker/runtime-runc/moby
作为运行时根。
也就是说,要让 runc list
看到您的 Docker 容器,您必须通过指定 --root
选项将其指向 Docker 的运行时根目录。此外,鉴于 Docker 容器默认情况下不是无根的,您将需要适当的权限来访问运行时根(例如使用 sudo
)。
所以,这应该是这样工作的:
$ docker run -d alpine sleep 1000
4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69
$ sudo runc --root /run/docker/runtime-runc/moby/ list
ID PID STATUS BUNDLE CREATED OWNER
4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69 18372 running /run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69 2019-07-12T17:33:23.401746168Z root
至于图像,你不能让runc
看到它们,因为它根本没有图像的概念——相反,它在[=26=上运行].创建包(例如基于图像)是调用者的责任(在你的情况下 - containerd)。
我在 VM 上有多个 Docker 映像和容器 运行。但是像 "runc list" 这样的命令没有列出任何这些。
如何让 runc/containerd 知道我现有的 docker 图片?
运行时(runc
)使用so-called运行时根目录来存储和获取容器信息。在这个根目录下,runc
放置sub-directories(每个容器一个),每个包含state.json
文件,容器状态描述所在。
运行时根目录的默认位置是 /run/runc
(对于 non-rootless 容器)或 $XDG_RUNTIME_DIR/runc
(对于无根容器)——后者通常也指向 /run
(例如 /run/user/$UID/runc
)。
当容器引擎调用 runc
时,它可能会覆盖默认的运行时根目录并指定自定义目录(runc
的 --root
选项)。 Docker 使用这种可能性,例如在我的盒子上,它指定 /run/docker/runtime-runc/moby
作为运行时根。
也就是说,要让 runc list
看到您的 Docker 容器,您必须通过指定 --root
选项将其指向 Docker 的运行时根目录。此外,鉴于 Docker 容器默认情况下不是无根的,您将需要适当的权限来访问运行时根(例如使用 sudo
)。
所以,这应该是这样工作的:
$ docker run -d alpine sleep 1000
4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69
$ sudo runc --root /run/docker/runtime-runc/moby/ list
ID PID STATUS BUNDLE CREATED OWNER
4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69 18372 running /run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4acd4af5ba8da324b7a902618aeb3fd0b8fce39db5285546e1f80169f157fc69 2019-07-12T17:33:23.401746168Z root
至于图像,你不能让runc
看到它们,因为它根本没有图像的概念——相反,它在[=26=上运行].创建包(例如基于图像)是调用者的责任(在你的情况下 - containerd)。