首页 > 解决方案 > 如何在执行 Docker 构建时禁用加载元数据?

问题描述

Windows 10、DockerDesktop v3.5.2、Docker v20.10.7

每当我的计算机与 Internet 断开连接时,
该命令都会docker build -t my_image .产生如下输出。

Dockerfile 包含行FROM some_public_image:123

 => [internal] load build definition from Dockerfile                             0.0s
 => => transferring dockerfile: 187B                                             0.0s
 => [internal] load .dockerignore                                                0.1s
 => => transferring context: 2B                                                  0.0s
 => ERROR [internal] load metadata for docker.io/library/some_public_image:123   0.0s
------
 > [internal] load metadata for docker.io/library/some_public_image:123:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition:
failed to do request: Head https://registry-1.docker.io/v2/library/some_public_image/manifests/123: 
dial tcp: lookup registry-1.docker.io on 192.168.65.5:53: no such host

有时它会导致构建失败:不确定,但我猜当 Docker 守护进程启动和执行docker build.

我想它会尝试将拉取的图像与 repo 版本同步(即检查图像完整性),但想控制这个网络活动并关闭这个“加载元数据”(说我确定所有拉取的图像都很好)即使连接稳定。

如何在执行docker build命令时禁用加载元数据?

标签: dockerdocker-desktopdocker-build

解决方案


我也有这个问题,通过谷歌我发现其他人问这个问题没有好的解决方案。

我的解决方法:

  1. 当我仍然在良好的 Internet 连接上时,我docker pull some_public_image:123.
  2. docker tag some_public_image:123 this_is_stupid_but_i_retagged_some_public_image.
  3. 在我的 Dockerfile 中,我使用FROM this_is_stupid_but_i_retagged_some_public_image.

我不会将此 hack 合并到 main 中,但它让我在长途旅行中富有成效。


推荐阅读