docker网络代理
一、前提:
docker 官方镜像无法直接访问的,解决方法有两个,第一个是使用国内加速镜像,第二个是使用网络代理,不知道是不是我用的wsl有啥问题,使用国内加速镜像一直访问不了,所以只能采用第二种方式了。
如果读者也是使用wsl环境的话,可能需要先设置一下,再看后面的内容:
wsl使用代理网络
二、设置
1.创建配置 和设置参数
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
## 然后填写代理配置
[Service]
Environment="HTTP_PROXY=http://你的代理服务器地址:端口/"
Environment="HTTPS_PROXY=http://你的代理服务器地址:端口/"
Environment="NO_PROXY=localhost,127.0.0.1,*.test.example.com,.example2.com"
注意:如果是wsl环境的话填写wsl宿主机的ip端口号,有啥填啥
2. 重启生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
- 检验是否成功:
# 查看代理参数
sudo systemctl show --property=Environment docker
# 拉去镜像。docker pull hello-world

三、扩展:
第二步设置是在bash-docker层面用来访问官方镜像的,容器运行程序本身也可以设置代理从而访问:
3.1 全局设置
sudo mkdir -p .docker/config.json
sudo mkdir vim .docker/config.json
填入参数:
{"proxies": {"default": {"httpProxy": "http://你的代理服务器地址:端口","httpsProxy": "http://你的代理服务器地址:端口","noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"}}
}
保存后,之后创建的新容器会自动应用这些代理设置。
3.1 单容器设置
3.1.1docker 编写的时候直接指定环境变量
docker run -d --name my_container \--env HTTP_PROXY="http://你的代理服务器地址:端口/" \--env HTTPS_PROXY="http://你的代理服务器地址:端口/" \--env NO_PROXY="localhost,127.0.0.1" \你的镜像名称
3.1.2 加速镜像
有些时候可能也不需要网络代理,个人感觉能用加速镜像就用加速镜像,比如go 加速镜像
docker run -d --name my_container \--env GOPROXY=https://goproxy.cn,direct\你的镜像名称
