如何在Jenkins Job中删除Docker镜像

3
我想从Jenkins中删除一些Docker操作的残留物。但是以下行似乎无效...问题似乎出在圆括号上。有什么建议吗?
我希望能够从Jenkins中删除部分Docker操作的遗留文件。但是下面的代码似乎不起作用...问题似乎与括号有关。请问有什么建议吗?
if [ docker images -f dangling=true -q|wc -l > 0 ]; then docker rmi --force $(docker images -f dangling=true -q);fi

docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi - Jinna Balu
4个回答

7
新版本的Docker现在有一个名为system prune的命令。
要删除悬空镜像:
$ docker system prune

要删除悬空和未使用的图像:

$ docker system prune --all

删除卷的方法:

$ docker system prune --volumes

修剪宇宙:
$ docker system prune --force --all --volumes

docker system prune将删除所有未使用的数据(所有已停止的容器,所有未使用的网络,所有悬空镜像...),如果只想删除悬空的镜像,则docker image prune更好。 - Corey
不建议在没有备份的情况下使用“docker system prune”命令。应根据具体情况使用特定的命令。 - Jinna Balu
这会删除当前运行的其他作业的图像吗? - Ray

1

docker image prune 命令用于删除所有悬空镜像。而 这篇文章 解释了什么是悬空镜像和未使用的镜像。 简单来说:悬空镜像指没有标签的镜像,未使用的镜像指没有关联容器的镜像。Docker image prune -a 命令可以删除未使用的镜像。


谢谢你的回答,herm。 不幸的是,“docker image”在我的机器上不存在... 可能是更简洁、更短的解决方案... - user2656732
你的意思是说docker image prune命令不存在吗?那是一个相对较新的命令,但docker image ls和其他命令都比较老。 - herm
是的,它不存在......Docker文档中还显示了一个*,表示Docker镜像下有相关内容。但我不知道那个星号的含义。 - user2656732

1

移除悬空的图片

使用-xargs需要--no-run-if-empty (-r)来绕过执行没有参数的docker rmi

docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi

使用普通的bash命令进行检查和删除。
 if docker images -f "dangling=true" | grep ago --quiet; then
    docker rmi -f $(docker images -f "dangling=true" -q)
 fi

0
我会存储docker images命令的输出,然后使用它:
images=$(docker images -f dangling=true -q); if [[ ${images} ]]; then docker rmi --force ${images}; fi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接