我在尝试构建一个Dockerfiles时遇到错误,
❯ docker build --build-arg env=development . --progress=plain
#1 [internal] load build definition from Dockerfile
#1 sha256:c3c9b42a729c6c2731ead1895724c3f53c55d67fe58c7ce2fcd2093556b293d6
#1 transferring dockerfile: 32B 0.0s done
#1 DONE 0.0s
...
#8 [4/4] RUN yarn install --frozen-lockfile --production=false --non-interactive
#8 sha256:82e644b842f91e7584561a70e10518eaa645543d3d7a525140f5e26c4e93ea0d
#8 0.318 yarn install v1.22.19
...
#8 ERROR: executor failed running [/bin/sh -c yarn install --frozen-lockfile --production=false --non-interactive]: exit code: 1
------
> [4/4] RUN yarn install --frozen-lockfile --production=false --non-interactive:
------
executor failed running [/bin/sh -c yarn install --frozen-lockfile --production=false --non-interactive]: exit code: 1
我假设sha256:82e644b842f91e7584561a70e10518eaa645543d3d7a525140f5e26c4e93ea0d
是它试图在其中运行yarn install
的映像,但当我尝试
$ docker run --rm -it --entrypoint sh a45dc5a92caf2f0a57593e5181c60e4fbe1f6a32ae8aa5e1cbaf30a2bd005407 -c '{ command -v zsh && exec zsh -il ;} || { command -v bash && bash -il ;} || { command -v ash && ash -il ;}'
docker: Error response from daemon: No such image: sha256:a45dc5a92caf2f0a57593e5181c60e4fbe1f6a32ae8aa5e1cbaf30a2bd005407.
See 'docker run --help'.
如何在构建失败之前获得实际的映像名称或散列,以便我可以 *docker运行 * 它?
我相信它使用的是buildkit,但我不确定如何验证。我确实想要buildkit。
1条答案
按热度按时间7gcisfzg1#
您已经指出了根本原因,即Buildkit构建系统
Buildkit不会创建中间映像,也不会使它运行的容器在Docker Run中可见(两者都有非常好的理由)。
在撰写本文时,a proposal正在解决这一需求。
使用Buildkit执行调试的替代解决方案:
也许可以使用Buildkit的
buildctl
命令进行调试,但我没有详细检查。