目的
某些情况下,我们可能需要让服务器能够下载到gcr.io,比如安装k8s/kubeflow的时候。这里设置ubuntu服务器环境下能让docker pull gcr.io镜像。
说在前面的话
如果服务器直接能直接下载,这个安装教程不适合你。
如果有shadowsocks服务器,可以参考这个教程进行设置。
如果没有SS服务器,并且需要gcr.io的镜像,可以先上dockerhub上搜索,是否有人已经下载,并重新上传到dockerhub。
要求
需要有shadowsocks服务器(网上可以百度如何搭建SS服务器,真的需要建议自己购买vps搭建)
搭建过程
接下来分为俩步:
(1)让服务器能连接外网
(2)配置docker文件,让其能下载grc.io镜像
这里采用的是:shadowsocks+polipo
让服务器连接外网
安装python和pip工具
1
2
|
sudo apt-get install python
sudo apt-get install python
|
安装shadowsocks
1
|
sudo pip install shadowsocks
|
配置shadowsocks
新建一个配置文件shawdowsocks.json,然后配置相应的参数:
1
2
3
4
5
6
7
8
|
{
"server": "{your-server}",
"server_port": your-server-port,
"local_port": 1080,
"password": "{your-password}",
"timeout": 600,
"method": "aes-256-cfb"
}
|
上面的参数是你搭建自己ss服务器的参数
启动shawdowsocks服务:
1
|
sudo sslocal -c shawdowsocks.json -d start
|
这里你发现现在还是不能连接外网,这是因为shawdowsocks是socks 5代理,需
要让整个系统都走shawdowsocks通道,接下来通过polipo实现。
安装polipo:
1
|
sudo apt-get install polipo
|
修改配置文件 /etc/polipo/config
1
2
3
4
5
6
7
8
9
10
11
|
logSyslog = true
logFile = /var/log/polipo/polipo.log
proxyAddress = "::0"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
proxyPort = 8123
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
|
启动polipo服务:
1
|
sudo /etc/init.d/polipo restart
|
终端配置http代理
1
|
export http_proxy="http://127.0.0.1:8123/"
|
验证是否成功上网:
如果得到响应,恭喜你成功了。
让docker能拉取grc.io镜像
上面虽然服务器能上网了,但是使用docker pull 的时候发现还是会失败。
原因是docker 有自己的代理设置,所以我们需要单独修改
创建代理配置文件,并修改
1
2
3
4
5
6
7
|
$ mkdir /etc/systemd/system/docker.service.d
$ cd /etc/systemd/system/docker.service.d
$ vim http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8123/"
Environment="NO_PROXY=localhost,127.0.0.0/8"
Environment="HTTPS_PROXY=http://127.0.0.1:8123/"
|
这里的意思是,为docker设置了http,https和不用代理的情况
重启daemon-reload
1
|
systemctl daemon-reload
|
验证代理环境是否已经应用成功
1
|
systemctl show --property Environment docker 这个命令会输出配置的代理环境
|
重启docker
1
|
systemctl restart docker
|
接下来你就可以使用docker pull gcr.io镜像了。