【发布时间】:2020-08-24 01:14:28
【问题描述】:
运行并行 docker 构建有时会出现错误消息:
Error removing intermediate container <id>: container <id>: driver
"windowsfilter" failed to remove root filesystem: hcsshim::GetComputeSystems:
Access is denied.
注意:<id> 是哈希值
例如 - 假设此错误消息出现在 docker 文件中第 3 步的末尾。然后,在 dockerfile 中的每个后续命令结束时,它会重新尝试删除在上一步中未能删除的中间容器,并从当前步骤中删除任何容器。有时它可能会成功。无论哪种方式 - 它都不会停止构建过程。但是,如果该进程无法在构建过程结束时删除容器,则会导致容器(非活动)和映像(悬空),从而浪费磁盘空间。
- 这种行为的原因是什么?
- 我知道
docker container prune -f和docker image prune -f可以分别用来清理容器和镜像。但是在并行构建期间是否有任何其他解决方案可以解决此错误消息和非活动容器/悬空图像? - docker 在运行并行构建方面是否有任何限制?
【问题讨论】:
-
我认为,如果您在所有管道完成后运行单个
docker image prune,事情会更简单。 -
即使在构建过程中不使用
prune,我也面临这个问题。我现在更新了问题。 -
@variable 只是想知道,您是否使用
buildkit作为构建的后端? -
没有。我正在使用具有多个代理的构建机器。
标签: docker dockerfile docker-image docker-build