如何在Docker群中的所有节点上删除图像?

时间:2017-09-10 18:42:09

标签: docker docker-swarm docker-image

在本地主机上,我可以使用docker image rmdocker rmi删除图片。

如果我当前的主机是Docker群中的管理器节点并且我希望在整个群中级联此操作,该怎么办?

当我第一次创建Docker服务时,图像被拉到了swarm中的每个节点上。删除服务不会删除图像,所有节点都会保留图像的副本。

如果有一种方法可以将图像“推送”到所有节点,那么很自然地应该有一种同样自然的方法来移除它们而无需SSH到每台机器上:'(另外,这是一个真正的问题。节点迟早不会有更多的磁盘空间!

2 个答案:

答案 0 :(得分:1)

AFAIK现在没有这样的选择。每个节点都负责自己的清理工作。您可以使用命令docker system prune -f来清除容器数据。

但只能使用docker rmi删除已标记的图像。见下面的问题

https://github.com/moby/moby/issues/24079

答案 1 :(得分:0)

这是可行的。在管理器节点的 /etc/hosts 中创建主机条目,如下所示

1.1.1.1    node01
1.1.1.2    node02
1.1.1.3    node03

然后运行

for i in {01..03}; do ssh host$i "docker rmi $(docker images -q)"; done

警告:此命令将删除 /etc/hosts 中列出的所有节点上的所有图像。