Docker构建失败--如何通过sha 256散列运行映像?

5jdjgkvh  于 2023-01-01  发布在  Docker
关注(0)|答案(1)|浏览(160)

我在尝试构建一个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。

7gcisfzg

7gcisfzg1#

您已经指出了根本原因,即Buildkit构建系统
Buildkit不会创建中间映像,也不会使它运行的容器在Docker Run中可见(两者都有非常好的理由)。

  • -source
    在撰写本文时,a proposal正在解决这一需求。
    使用Buildkit执行调试的替代解决方案:
  • 使用目标执行部分构建并调试其输出,如this answer中所述。
  • 使用buildg交互式调试器。

也许可以使用Buildkit的buildctl命令进行调试,但我没有详细检查。

相关问题