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

How to remove an image across all nodes in a Docker swarm?

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

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

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

感觉很自然,如果有办法 "push" 将图像输出到所有节点,那么应该有同样自然的方法来删除它们,而不必通过 SSH 连接到每台机器:'( Plus ,这才是真正的问题,节点迟早会没有磁盘space!

据我所知,目前还没有这样的选项。每个节点负责自己的清理。有一个命令 docker system prune -f 可用于清除容器数据。

但是标记的图像只能使用 docker rmi 来删除。请参阅以下问题

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

这是可行的。在您的管理器节点上的 /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 中列出的所有节点上的所有图像。