构建完成后如何移除Docker构建产生的中间镜像?
多阶段Docker构建的中间镜像那些事儿
当你用 docker build -t myimage . 构建多阶段Dockerfile时,确实会生成标记为myimage的最终镜像,同时冒出一堆标记为<none>的中间镜像——先明确下:咱们聊的是镜像,不是容器,别搞混啦。
这些<none>的中间镜像可不是没用的垃圾,它们是Docker构建缓存的核心。要是自动把它们清掉,那构建缓存直接就废了:下次再构建的时候,所有阶段的步骤都得从头跑一遍,完全没法复用之前已经构建好的层,速度会慢到让你怀疑人生。
给你几个实用的小技巧:
- 如果你只是想清理那些真正“悬空”的
<none>镜像(也就是没有被任何标签或其他镜像依赖的),可以用docker image prune命令,它会智能识别并删除这类无用镜像,不会动到有效的构建缓存。 - 要是想在构建过程中就自动清理临时容器(不是中间镜像哦),可以给build命令加个
--rm参数:docker build --rm -t myimage .,这个参数会在构建完成后自动移除构建时产生的临时容器,让你的容器列表更干净。 - 除非你确定构建缓存已经出问题了,否则别轻易用
docker builder prune,这个命令会清空整个构建缓存,包括所有中间镜像,下次构建就得从零开始了。
内容的提问来源于stack exchange,提问作者Andrew Savinykh
相关产品推荐
相关产品推荐

