我正在尝试学习docker,但我在每个教程中读到的内容都有一些差异:当使用下面的命令docker build -t my-app:1.0 .时,由于Dockerfile中的一些错误,我的构建失败。在这个答案之后,我想运行最后一个中间容器ID。无论如何,与我迄今为止看到的所有教程相比,我的控制台没有显示任何中间容器ID:
docker build -t my-app:1.0 .
我在Windows 10上运行Docker 19。如何获取中间容器ID?
jchrr9hc1#
从18.09版开始,Docker增加了一个新的后端来构建镜像,buildkit。这提供了一堆好处,但不会像旧后端那样暴露中间容器。幸运的是,你可以禁用buildkit。你不需要为此永久禁用buildkit,也不应该这样做,因为这会让你所有的构建都变慢。你可以在Docker构建时设置一个环境变量,就像这样:
$env:DOCKER_BUILDKIT=0; docker build .
字符串
DOCKER_BUILDKIT=0 docker build .
型
set DOCKER_BUILDKIT=0& docker build .
zpjtge222#
我遇到了同样的问题。在~/.docker/daemon.json中将“buildkit”设置为false(在Windows中,你应该在C:\ProgramData\Docker\config中找到daemon.json)为我解决了这个问题:
~/.docker/daemon.json
{ "experimental": true, "features": { "buildkit": false } }
31moq8wy3#
我不太清楚其中的原因,但是使用Buildkit,你不能再像以前那样检查特定的缓存层了。你只需要注解RUN命令失败的地方,让它成功构建-然后你就可以检查它了。一个倒退的IMO。即使打开--progress=plain也会输出哈希值,但是你不能对它们做任何事情。即:尝试运行docker run -ti [hash_id] sh失败,因为它找不到映像。这是因为您关闭了buildkit,但它是macOS的默认设置,Windows表明更改守护程序的默认设置可能对将来的使用不利。
--progress=plain
docker run -ti [hash_id] sh
woobm2wo4#
展开Michael的答案,对于任何可能有点迷失的人来说。如果你在Windows上使用Docker桌面,你可以在“Docker Engine”选项卡下的设置窗口中找到daemon.json的配置。更改json和Apply & Restart。Settings window on the Docker Engine tab的
daemon.json
Apply & Restart
roqulrg35#
当使用“DOCKER_BUILDKIT=0”调试失败时。我看到一个警告,说遗留的构建器将被贬低。所以这种调试方法也将被渲染为不起作用。希望将来会有另一种方法这样做。我知道我可以编辑dockerfile到错误发生的地方,只是不太容易出错,不必编辑它。
5条答案
按热度按时间jchrr9hc1#
从18.09版开始,Docker增加了一个新的后端来构建镜像,buildkit。这提供了一堆好处,但不会像旧后端那样暴露中间容器。幸运的是,你可以禁用buildkit。
你不需要为此永久禁用buildkit,也不应该这样做,因为这会让你所有的构建都变慢。你可以在Docker构建时设置一个环境变量,就像这样:
Powershell
字符串
Linux/macOS
型
Windows命令
型
zpjtge222#
我遇到了同样的问题。在
~/.docker/daemon.json
中将“buildkit”设置为false(在Windows中,你应该在C:\ProgramData\Docker\config中找到daemon.json)为我解决了这个问题:字符串
31moq8wy3#
我不太清楚其中的原因,但是使用Buildkit,你不能再像以前那样检查特定的缓存层了。你只需要注解RUN命令失败的地方,让它成功构建-然后你就可以检查它了。一个倒退的IMO。即使打开
--progress=plain
也会输出哈希值,但是你不能对它们做任何事情。即:尝试运行docker run -ti [hash_id] sh
失败,因为它找不到映像。这是因为您关闭了buildkit,但它是macOS的默认设置,Windows表明更改守护程序的默认设置可能对将来的使用不利。woobm2wo4#
展开Michael的答案,对于任何可能有点迷失的人来说。如果你在Windows上使用Docker桌面,你可以在“Docker Engine”选项卡下的设置窗口中找到
daemon.json
的配置。更改json和Apply & Restart
。Settings window on the Docker Engine tab的
roqulrg35#
当使用“DOCKER_BUILDKIT=0”调试失败时。我看到一个警告,说遗留的构建器将被贬低。所以这种调试方法也将被渲染为不起作用。希望将来会有另一种方法这样做。我知道我可以编辑dockerfile到错误发生的地方,只是不太容易出错,不必编辑它。