获取docker build以显示中间容器的ID

xuo3flqw  于 2023-11-17  发布在  Docker
关注(0)|答案(5)|浏览(114)

我正在尝试学习docker,但我在每个教程中读到的内容都有一些差异:
当使用下面的命令docker build -t my-app:1.0 .时,由于Dockerfile中的一些错误,我的构建失败。在这个答案之后,我想运行最后一个中间容器ID。无论如何,与我迄今为止看到的所有教程相比,我的控制台没有显示任何中间容器ID:

我在Windows 10上运行Docker 19。如何获取中间容器ID?

jchrr9hc

jchrr9hc1#

从18.09版开始,Docker增加了一个新的后端来构建镜像,buildkit。这提供了一堆好处,但不会像旧后端那样暴露中间容器。幸运的是,你可以禁用buildkit。
你不需要为此永久禁用buildkit,也不应该这样做,因为这会让你所有的构建都变慢。你可以在Docker构建时设置一个环境变量,就像这样:

Powershell

$env:DOCKER_BUILDKIT=0; docker build .

字符串

Linux/macOS

DOCKER_BUILDKIT=0 docker build .

Windows命令

set DOCKER_BUILDKIT=0& docker build .

zpjtge22

zpjtge222#

我遇到了同样的问题。在~/.docker/daemon.json中将“buildkit”设置为false(在Windows中,你应该在C:\ProgramData\Docker\config中找到daemon.json)为我解决了这个问题:

{
      "experimental": true,
      "features": {
        "buildkit": false
      }
    }

字符串

31moq8wy

31moq8wy3#

我不太清楚其中的原因,但是使用Buildkit,你不能再像以前那样检查特定的缓存层了。你只需要注解RUN命令失败的地方,让它成功构建-然后你就可以检查它了。一个倒退的IMO。即使打开--progress=plain也会输出哈希值,但是你不能对它们做任何事情。即:尝试运行docker run -ti [hash_id] sh失败,因为它找不到映像。这是因为您关闭了buildkit,但它是macOS的默认设置,Windows表明更改守护程序的默认设置可能对将来的使用不利。

woobm2wo

woobm2wo4#

展开Michael的答案,对于任何可能有点迷失的人来说。如果你在Windows上使用Docker桌面,你可以在“Docker Engine”选项卡下的设置窗口中找到daemon.json的配置。更改json和Apply & Restart
Settings window on the Docker Engine tab

roqulrg3

roqulrg35#

当使用“DOCKER_BUILDKIT=0”调试失败时。我看到一个警告,说遗留的构建器将被贬低。所以这种调试方法也将被渲染为不起作用。希望将来会有另一种方法这样做。我知道我可以编辑dockerfile到错误发生的地方,只是不太容易出错,不必编辑它。

相关问题