更新 docker 个图像导致孤立图像

Update docker image resulting in orphan image

我可以用

docker build -t yzx2003209/my_image .

构建由 yzx2003209/my_image:latest

标记的新图像

但是,原来的 yzx2003209/my_image:latest 会变成 图片,我有手动 rmi 这个孤儿图像。

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

无法更新图像 - 图像是不可变的 - 当你执行 docker 生成不同图像的构建时,它也会将标签移动到那里 - 旧图像本身没有任何变化 - 它只是没有一个标签了。如果你想删除所有这些图像,你可以在 docker build:

之后执行下一个命令
docker build -t yzx2003209/my_image .
docker rmi `docker images -q --filter "dangling=true"`

此命令将删除所有没有标签的图像。或者您可以按不同的顺序进行 - 在 docker 构建之前删除旧图像 - 虽然它仍然有一个标签:

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

但是如果您的构建失败,您将没有图像。您可以在构建前获取图像 ID,并在成功构建后删除图像:

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

您还可以在成功构建后使用 --rm 选项删除中间容器:

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