我可以用
docker build -t yzx2003209/my_image .
建立一个由 yzx2003209 / my_image标记的新图片:最新
但是,原来的 yzx2003209 / my_image:latest 会变成< none> 图像,我必须手动rmi这个孤儿图像。
有没有办法在不手动删除孤立图像的情况下更新图像?
答案 0 :(得分:2)
无法更新图像 - 图像是不可变的 - 当您执行生成不同图像的docker build时,它也会在那里移动标记 - 旧图像本身没有任何变化 - 它只是不再有标记了。如果要删除所有此类图像,可以在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"`