配置Docker以使用代理服务器

预计阅读时间:2分钟

如果您的容器需要使用HTTP,HTTPS或FTP代理服务器,则可以通过不同的方式对其进行配置:

  • 在Docker 17.07及更高版本中,您可以 配置Docker客户端以将代理信息自动传递到容器。

  • 在Docker 17.06及更低版本中,您必须 在容器内设置适当的环境变量。您可以在构建映像时执行此操作(这会降低映像的可移植性),或者在创建或运行容器时执行此操作。

配置Docker客户端

  1. 在Docker客户端上,~/.docker/config.json在启动容器的用户的主目录中创建或编辑文件。添加如下所示的JSON,用httpsProxy或替换代理的类型,并ftpProxy在必要时替换代理服务器的地址和端口。您可以同时配置多个代理服务器。

    通过将noProxy密钥设置为一个或多个逗号分隔的IP地址或主机,您可以选择不让主机或范围通过代理服务器。*如本示例所示,支持将字符用作主机的通配符,并将CIDR表示法用于IP地址。

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://127.0.0.1:3001",
         "httpsProxy": "http://127.0.0.1:3001",
         "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
       }
     }
    }
    

    保存文件。

  2. 创建或启动新容器时,环境变量将在容器内自动设置。

使用环境变量

手动设置环境变量

在生成映像时,或者--env在创建或运行容器时使用标志时,可以将以下一个或多个变量设置为适当的值。此方法使映像的可移植性降低,因此,如果您具有Docker 17.07或更高版本,则应配置Docker客户端

多变的 Dockerfile示例 docker run 例子
HTTP_PROXY ENV HTTP_PROXY="http://127.0.0.1:3001" --env HTTP_PROXY="http://127.0.0.1:3001"
HTTPS_PROXY ENV HTTPS_PROXY="https://127.0.0.1:3001" --env HTTPS_PROXY="https://127.0.0.1:3001"
FTP_PROXY ENV FTP_PROXY="ftp://127.0.0.1:3001" --env FTP_PROXY="ftp://127.0.0.1:3001"
NO_PROXY ENV NO_PROXY="*.test.example.com,.example2.com" --env NO_PROXY="*.test.example.com,.example2.com"
网络网络代理客户