我制作了一个Dockerfile来构建基于另一个Dockerfile的映像。它以Alpine Linux为基础。
一切正常,但是当我使用--all
开关查看图像时,我得到了多个实例,这些实例似乎是我的图像以及基于以下内容的Alpine Linux图像:
$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5577c25bccd9 20 hours ago 137MB
<none> <none> 48f944e609b5 20 hours ago 137MB
paradroid/myapp latest f2a0f99986a6 20 hours ago 137MB
<none> <none> d846706db3f4 20 hours ago 137MB
<none> <none> f1410e1d307e 20 hours ago 137MB
<none> <none> e52e6203864a 20 hours ago 137MB
<none> <none> dd3be52289ce 20 hours ago 5.59MB
<none> <none> 8559960a8bd0 20 hours ago 5.59MB
<none> <none> 04020d8307b3 20 hours ago 5.59MB
<none> <none> fe0f1e73261c 20 hours ago 5.59MB
<none> <none> 12229a67b395 20 hours ago 5.59MB
alpine latest cc0abc535e36 13 days ago 5.59MB
构建基于它的Dockerfile时不会发生这种情况。
docker system prune
不会删除它们,并且尝试单独删除它们都会给出以下响应:
$ docker image rm d846706db3f4
Error response from daemon: conflict: unable to delete d846706db3f4 (cannot be forced) - image has dependent child images
我如何找出造成这种情况的原因?
答案 0 :(得分:4)
<none:none>
图像是docker build
产生的中间层。
Docker映像由层组成。 Dockerfile中的每条指令都会产生一个层。这些图层可在不同的图像之间重复使用。这样可以有效利用磁盘空间。因此,如果一个图层正在被其他图像使用,则将无法删除该图层。
您可以运行以下命令,该命令将删除所有图像中未引用的图层。这些层称为dangling
。
docker rmi $(docker images -f "dangling=true" -q)
https://www.projectatomic.io/blog/2015/07/what-are-docker-none-none-images/
答案 1 :(得分:0)
使用
docker image rm -f imageid
多个
docker image rm -f imageid imageid