docker cli proxy 和 daemon proxy 的区别

在 Docker 中,CLI Proxy 和 Daemon Proxy 作用于不同的阶段,配置位置和生效对象完全不同。

  • CLI Proxy 影响的是“容器运行时的内容”
  • Daemon Proxy 影响的是“Docker 引擎拉取镜像的过程”。

Docker CLI Proxy(客户端代理)

这是为容器内部设置的环境变量。
当运行 docker run 或 docker build 时,Docker 会自动将这些代理设置注入到容器的环境变量中。

  • 生效对象:容器内的进程(如在容器里执行 curl、apt-get、pip install)。
  • 配置位置:通常在当前用户的家目录下:~/.docker/config.json。
  • 示例:
    {
     "proxies": {
       "default": {
         "httpProxy": "http://192.168.1.10:7890",
         "httpsProxy": "http://192.168.1.10:7890",
         "noProxy": "*.test.com,localhost"
       }
     }
    }
    

Docker Daemon Proxy(守护进程代理)

为 Docker 引擎后台服务设置的代理。它决定了 Docker 守护进程自身如何连接外网。

  • 生效对象:Docker 引擎本身的操作。最典型的场景是 docker pull(拉取镜像)。如果你的服务器无法直接访问 Docker Hub,必须配置这个代理。
  • 配置位置:通常通过 Systemd 配置文件:/etc/systemd/system/docker.service.d/http-proxy.conf(或通过 daemon.json 在某些版本中配置)。
  • 配置示例(Systemd 方式):
    [Service]
    Environment="HTTP_PROXY=http://192.168.1.10:7890"
    Environment="HTTPS_PROXY=http://192.168.1.10:7890"
    

核心区别

在这里插入图片描述

  • 如果拉不下镜像,配置 Daemon Proxy。
  • 如果镜像拉下来了,但在 docker build 过程中报错或容器里上不了网,配置 CLI Proxy。

更多推荐