如何根据容器名称或容器ID查找容器图像路径

时间:2018-09-20 04:38:18

标签: docker kubernetes containers openshift

假设我有一个3节点集群(master01,node01,node02)

如何找到节点上正在运行的容器路径? 我可以通过“ oc describe pod”看到容器ID

Container ID:   docker://9982c309a3fd8c336c98201eff53a830a1c56a4cf94c2861c52656855cba3558

例如:在节点01上,我可以在“ /var/lib/openshift/openshift.local.volumes/pods/”下看到很多目录;但不确定如何映射到容器名称或容器名称。 似乎无效的容器映射/装载,但如何清理鼠尾草?

任何帮助都非常感谢。谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用此列表以窗格名称列出容器图像:

kubectl get pods POD_NAME -o=jsonpath='{..image}'

来源:Docs

答案 1 :(得分:1)

感谢您的回答。

我在另一个小组中找到了它,并在下面给出。

方法1:

kubectl get pods <pod name> -o jsonpath={.metadata.uid}

然后在Pod所在的节点上查找/var/lib/kubelet/pods/<uid>(或/var/lib/openshift/pods/<uid>)中返回的uid。

方法2:

kubectl describe pod <podname>

从那里获取容器ID

然后在节点上运行docker inspect <containerid>

然后在Pod所在的节点上查找/var/lib/kubelet/pods/<uid>(或/var/lib/openshift/pods/<uid>)中返回的uid。

答案 2 :(得分:0)

通常,所有容器文件系统和映像都位于docker主目录下,该目录默认为/ var / lib / docker。您还可以通过查看当前的dockerd进程来查看它是否已自定义配置:

ps -Af | grep dockerd

因为您正在运行docker作为运行时。您可以用来清理所有垃圾:

docker system prune -a --force

基本上,它会修剪掉所有已退出的容器以及未被任何容器使用的图像。

希望有帮助!