docker - 如何确定失败的 docker 构建中的最后一个成功层
问题描述
当在以前版本的 Docker 中构建失败时,我可以指望这样的输出:
---> 8f9941c285e2
Removing intermediate container 9a543227b6b8
Step 6/21 : RUN adduser -s /bin/sh -h /home/user -D user && mkdir -p /whl && chown -R user:user /srv /whl
---> Running in 93a90935664d
---> 7f700d063b68
Removing intermediate container 93a90935664d
如果该步骤失败,中间图像7f700d063b68
仍然存在。我能docker run
做到并试图弄清楚发生了什么。
但是现在,使用 docker client 20.10.2 我只得到这个输出:
=> [dev 1/3] COPY --from=build /whl /whl
.1s
=> [dev 2/3] COPY --chown=user:user . .
.9s
=> ERROR [dev 3/3] RUN python3 -m pip install --find-links /whl -e ".[bpython,test]" && command -v bpython
.3s
我在docker build --help
输出中看不到任何似乎在这里提供更多可调试性的东西。docker build
不接受--debug
或--verbose
标记。
我怎样才能发现最后一个成功的图像/层是什么,所以我可以输入它并使用上下文进行调试?
解决方案
我想你正在使用 BuildKit,如果变量DOCKER_VARIABLE
是DOCKER_BUILDKIT=1
?那么您正在使用 Buildkit。
要使用以前使用的内容来查看构建的输出,然后设置,
DOCKER_BUILDKIT=0 docker build -t sometag .
与以前的构建器相比,BuildKit 提供了许多改进。
有关 docker 文档的更多信息,
https://docs.docker.com/develop/develop-images/build_enhancements/
推荐阅读
- javascript - 如何使用 HTML/CSS 和 Javascript 直观地显示 Python 代码块?
- bash - 如何将一堆 m4a 文件拆分成块并用 ffmpeg 替换它们的元数据?
- magento2 - Magento 2 中购物车价格规则(促销)的内部架构是什么?
- angular - 角度动态组件更改检测不起作用
- javascript - lodash 流函数有什么作用?
- alamofire - Alamofire ImageDownloader 请求取消,错误代码 -999
- javascript - For..in 只返回第一项 - React js
- excel - 如何将其写入 IF 语句
- docker - Kubernetes 上微服务的最大允许图像大小应该是多少
- xamarin.forms - Master Detail 破坏参数?