配置Docker以使用代理服务器
预计阅读时间:2分钟
如果您的容器需要使用HTTP,HTTPS或FTP代理服务器,则可以通过不同的方式对其进行配置:
-
在Docker 17.07及更高版本中,您可以 配置Docker客户端以将代理信息自动传递到容器。
-
在Docker 17.06及更低版本中,您必须 在容器内设置适当的环境变量。您可以在构建映像时执行此操作(这会降低映像的可移植性),或者在创建或运行容器时执行此操作。
配置Docker客户端
-
在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" } } }
保存文件。
-
创建或启动新容器时,环境变量将在容器内自动设置。
使用环境变量
手动设置环境变量
在生成映像时,或者--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" |