docker pull 失败时,应配置 Docker 守护进程或 Docker Desktop。镜像下载发生在应用容器能够读取自身代理变量之前。

原生 Docker Engine

将这一段合入现有守护进程代理配置,替换文档示例端点并保留无关设置。如果允许使用公共代理做公共镜像拉取测试,HTTP 代理列表可提供候选端点:

{
  "proxies": {
    "http-proxy": "http://203.0.113.10:8080",
    "https-proxy": "http://203.0.113.10:8080",
    "no-proxy": "localhost,127.0.0.1,registry.example.internal"
  }
}

守护进程的键名使用连字符,与 Docker 客户端 ~/.docker/config.json 中的 camelCase 键名不同。客户端代理配置为新容器和构建提供环境变量,既不配置守护进程的下载,也不改变现有容器的环境。

按安装方式对应的文档重启守护进程,事先评估对当前工作负载的影响。另一种方式是在守护进程启动环境中传入代理变量;稍后在终端里 export 不会更新运行中的服务。

Docker Desktop

使用 Desktop 自己的代理设置。Docker 文档说明 Desktop 会忽略 daemon.json 中的代理项,因此反复修改原生 Engine 示例也无法配置这个产品所走的路径。

更新真正负责的组件后,再试拉取镜像。看清失败的是仓库访问、认证、重定向还是镜像层下载。已有容器内一次成功的 HTTP 请求只验证那个应用的路径。不要让代理凭据出现在共享截图和提交的文件中;守护进程配置与容器环境都不是秘密存储。

相关文章