如何删除 Docker 群中所有节点的图像?
How to remove an image across all nodes in a Docker swarm?
在本地主机上,我可以使用 docker image rm
或 docker rmi
删除图像。
如果我当前的主机是 Docker 群中的管理器节点,并且我希望在整个群中级联此操作怎么办?
当我第一次创建 Docker 服务时,图像被拉到 swarm 中的每个节点上。删除服务并没有删除图像,所有节点都保留了图像的副本。
感觉很自然,如果有办法 "push" 将图像输出到所有节点,那么应该有同样自然的方法来删除它们,而不必通过 SSH 连接到每台机器:'( Plus ,这才是真正的问题,节点迟早会没有磁盘space!
据我所知,目前还没有这样的选项。每个节点负责自己的清理。有一个命令 docker system prune -f
可用于清除容器数据。
但是标记的图像只能使用 docker rmi
来删除。请参阅以下问题
这是可行的。在您的管理器节点上的 /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
中列出的所有节点上的所有图像。
在本地主机上,我可以使用 docker image rm
或 docker rmi
删除图像。
如果我当前的主机是 Docker 群中的管理器节点,并且我希望在整个群中级联此操作怎么办?
当我第一次创建 Docker 服务时,图像被拉到 swarm 中的每个节点上。删除服务并没有删除图像,所有节点都保留了图像的副本。
感觉很自然,如果有办法 "push" 将图像输出到所有节点,那么应该有同样自然的方法来删除它们,而不必通过 SSH 连接到每台机器:'( Plus ,这才是真正的问题,节点迟早会没有磁盘space!
据我所知,目前还没有这样的选项。每个节点负责自己的清理。有一个命令 docker system prune -f
可用于清除容器数据。
但是标记的图像只能使用 docker rmi
来删除。请参阅以下问题
这是可行的。在您的管理器节点上的 /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
中列出的所有节点上的所有图像。