如何批量删除中间镜像?


使用docker build -t pm-service:1.01 .构建镜像,会生成一些REPOSITORY和TAG都是<none>的镜像。在网上找到一些批量删除这些镜像的方法:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}" | tr -s ' ' | cut -d ' ' -f 3)
或者
docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")
但都提示:
docker: "rmi" requires a minimum of 1 argument. See 'docker rmi --help'.
有没有其他办法批量删除这些镜像?另外有命令可以在构建时避免生成这些镜像吗?
已邀请:

小飞侠 - TenxCloud合伙人

赞同来自: huangqg


可以试试下面的:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
先run一下: docker images | grep "^<none>" | awk "{print $3}", 看看是不是确实有 <none> 的image,如果没有,直接运行会有你现在的问题。

9lives - 爱生活,爱云计算。

赞同来自:


查了一下官方文档,因为没有实验不是很确定。

使用--rm参数在docker build中,自动删除中间的container但是image不知是否可以删除。你可以试一下。

补充一下:这些中间image应该是在build时产生的而且如果多次build,这些image会越来越多,很有可能撑爆硬盘空间。

欢迎大家讨论

小飞侠 - TenxCloud合伙人

赞同来自:


The default docker images will show all top level images, their repository and tags, and their virtual size.

Docker images have intermediate layers that increase reusability, decrease disk usage, and speed up docker build by allowing each step to be cached. These intermediate layers are not shown by default.

看样子 “docker images -a” 会显示所有的中间层,这些是当前镜像需要的中间层,为了是镜像层的重用性(减少磁盘使用),并加快docker build速度。所以一般不用关心这些中间层,如果把关联的镜像删除了,这些中间层也就一起删除了。

9lives - 爱生活,爱云计算。

赞同来自:


这里有一个非常长的讨论,看来暂时官方不支持删除中间的image
https://github.com/docker/docker/issues/928

要回复问题请先登录注册