如何在执行 Docker 构建时禁用加载元数据?

How to disable loading metadata while executing Docker build?

Windows10,Docker桌面 v3.5.2,Dockerv20.10.7

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

Docker文件包含行 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 版本同步(即检查图像完整性),但想控制此网络 activity 并关闭此“加载元数据”(说我'我确保所有拉取的图像都很好)即使连接稳定。

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

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

我的解决方法:

  1. 当我的互联网连接仍然良好时,我 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 中,但它让我在长途旅行中保持高效。