近期由于众所周知的原因,许多docker镜像站都停止了服务,依然提供服务的在目前的环境下也随时有倒的可能性。这里介绍下给docker配置代理的方法,虽然会麻烦点,但主动权在自己手里。
启动代理
安装代理比较敏感不多赘述,但有个特殊情况需要介绍下。因为很多时候我们要在国内云服务商的主机上使用代理,这些机器一般对类似的软件检测比较严格,这时候我们可以在另一台自己的电脑上启用代理,然后通过ssh端口转发的方式转发给云主机使用。
比如我在本机7800端口开启了代理,可以通过
ssh -N -R 7800:localhost:10080 root@xxx.xxx.xxx.xxx
把本机的7800端口的代理服务转发给云主机的10080端口使用,后续云主机上http://127.0.0.1:10080
地址就可以当做http代理使用。
dockerd代理
官方文档Configure the daemon with systemd | Docker Docs
在执行docker pull
等命令的时候,是由dockerd
进程来执行的,因此我们设置代理也需要对其进行设置。
执行如下命令在systemd
文件夹下创建代理配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
在http-proxy.conf
文件中添加如下内容
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:10080"
Environment="HTTPS_PROXY=http://127.0.0.1:10080"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
其中NO_PROXY
可以根据自己的需要配置。配置完成后,重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
重启之后执行sudo systemctl show --property=Environment docker
查看,如果出现如下显示就说明配置成功了。
Environment=HTTP_PROXY=http://127.0.0.1:10080/ HTTPS_PROXY=http://127.0.0.1:10080/
容器代理
官方文档Configure Docker to use a proxy server | Docker Docs
创建或者修改~/.docker/config.json
文件,添加如下内容
{
"proxies": {
"default": {
"httpProxy": "http://proxyAddress:port",
"httpsProxy": "http://proxyAddress:port",
"noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
}
此后新启动的容器都会自动使用代理,此外,在启动容器的时候使用-e
参数也可以注入http_proxy
等环境变量。
Comments NOTHING