Docker多阶段构建中如何删除前一阶段的镜像
关于多阶段构建中无标签中间镜像的删除问题
当然可以删除这个<none>的中间镜像!
你看到的这个无标签镜像,是Docker多阶段构建过程里第一阶段build-stage产生的临时中间产物。既然第二阶段已经通过COPY --from=build-stage /publish .把运行所需的文件都复制到最终镜像里了,这个中间镜像确实没有继续保留的价值。
几种处理方式:
手动删除单个中间镜像:直接用镜像ID执行删除命令就行:
docker rmi <你的<none>镜像ID>不用担心依赖问题,多阶段构建的中间镜像一般不会被其他镜像引用,所以可以安全删除。
批量清理所有无用的无标签镜像:如果有多个这类镜像,用这个命令一键清理:
docker image prune加上
-a参数还能清理所有不再使用的镜像(不仅仅是无标签的):docker image prune -a构建时自动清理中间镜像:下次构建的时候加上
--rm参数,Docker会在构建完成后自动删除中间阶段的镜像,不用事后手动操作:docker build --rm -t sample-api .
再补充下你的场景:你的Dockerfile分了两个阶段,第一阶段负责编译发布,第二阶段生成最终的运行镜像。第一阶段结束后留下的<none>镜像就是编译阶段的临时产物,完全可以放心删除,不会影响最终的sample-api镜像的运行。
内容的提问来源于stack exchange,提问作者Tandi Sunarto
相关产品推荐
相关产品推荐

