为 Docker 启用代理加速镜像拉取与构建
本文介绍如何为 docker 启用代理,最近在家中进行 docker 构建的时候,那是真的感受到了家中网络对我的满满的恶意。
原来以为在终端中 export http_proxy
之后就万事大吉了,但是实际上速度并没有任何的变化,于是在连续几次测试之后,我发现终端的这个代理设置对 docker 并没有任何的作用,无论是使用 docker pull
拉取镜像的时候,还是使用 docker build
进行镜像构建的时候都不走终端的代理。 emmmmm
崩溃!
1. 配置 docker systemd 环境变量加速镜像拉取
容器内部的代理与 docker 服务所使用的代理配置不同、后续介绍如何为容器启用代理进行加速。
- 首先,为 Docker 服务创建一个 systemd 插入目录:
mkdir /etc/systemd/system/docker.service.d
- 然后新建一个
/etc/systemd/system/docker.service.d/http-proxy.conf
文件,并在此文件中填下类似下面的代理配置内容,添加HTTP_PROXY
环境变量的值。
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:port"
- 如果你有内部的 Docker 仓库,需要在不使用代理的情况下连接,可以通过
NO_PROXY
环境变量进行指定:
Environment="HTTP_PROXY=http://proxy.example.com:port"
Environment="NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"
- 刷新更改
$ sudo systemctl daemon-reload
- 验证更改是否生效
$ sudo systemctl show --property Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:port
- 重启 docker 服务使更改生效
$ sudo systemctl restart docker
2 配置使容器使用代理
如果您的容器需要使用 HTTP,HTTPS 或 FTP 代理服务器,则可以通过下面的方式对其进行配置:
方式 1:配置 Docker 客户端文件
在 Docker 客户端上,在启动容器的用户主目录中创建或编辑文件 ~/.docker/config.json
。添加一个 JSON 文件,如下所示,必要时用 httpsProxy
或 ftpProxy
替换代理类型,并替换代理服务器的地址和端口。您可以同时配置多个代理服务器。
通过将 noProxy
键设置为一个或多个逗号分隔的 IP 地址或主机,可以选择排除通过代理服务器的主机或范围。支持使用 *
字符作为通配符,如本示例所示。
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"httpsProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
创建或启动新容器时,环境变量会自动读取至容器内。
方式 2:使用环境变量
生成镜像或使用 --env
标志创建或运行容器时,可以将以下一个或多个变量设置为适当的值。此方法使镜像的可移植性降低,因此,如果您有 Docker 17.07 或更高版本,则应改为配置 Docker 客户端。
Variable | Dockerfile example | docker run Example |
---|---|---|
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 |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于