我在VM上运行了多个Docker映像和容器。但是像"runc“这样的命令并没有列出其中的任何一个。
我如何使runc/收集器知道我现有的码头映像?
发布于 2019-07-12 17:35:22
运行时(runc)使用所谓的运行时根目录来存储和获取有关容器的信息。在这个根目录下,runc放置子目录(每个容器一个),每个子目录都包含容器状态描述所在的state.json文件。
运行时根目录的默认位置要么是/run/runc (对于非根容器),要么是$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看到它们,因为它根本没有图像的概念-相反,它在捆绑上运行。创建包(例如,基于图像)是调用者的责任(在您的例子中是容器)。
https://stackoverflow.com/questions/57009928
复制相似问题