更新导致孤儿图像的docker图像

我可以用

docker build -t yzx2003209/my_image . 

build立由yzx2003209 / my_image:latest标记的新图像

但是,最初的yzx2003209 / my_image:latest将成为一个<none>图像,我必须手动rmi这个孤儿图像。

有没有什么办法可以更新图像,而无需手动删除孤立图像?

没有办法更新图像 – 图像是不可变的 – 当你执行docker构build产生不同的图像,它也移动标签 – 旧图像本身没有任何变化 – 它只是没有一个标签了。 如果你想删除所有这些图像,你可以在docker build之后执行下一个命令:

 docker build -t yzx2003209/my_image . docker rmi `docker images -q --filter "dangling=true"` 

该命令将删除所有没有标签的图像。 或者你可以按照不同的顺序来做 – 在Docker构build之前删除旧的图像 – 虽然它仍然有一个标签:

 docker rmi yzx2003209/my_image docker build -t yzx2003209/my_image . 

但是,如果你的构build失败,你将没有形象。 您可以在构build之前获取图像ID,并在成功构build后移除图像:

 old=`docker images -q yzx2003209/my_image` docker build -t yzx2003209/my_image . docker rmi $old 

您也可以使用–rm选项在成功构build之后移除中间容器:

 docker build --rm -t yzx2003209/my_image . docker rmi `docker images -q --filter "dangling=true"`