使用ssh端口转发作为docker代理
2017-10-17
由于家里网络比较差,导致在使用docker公网服务的时候访问速度很慢,甚至出现无法访问的问题,因此需要使用代理
设置ssh代理
以下地址根据你的实际情况修改
# 192.168.2.20 是内网你的任意一台服务器用来做跳转,当然也可以是docker自己的那台服务器
# 183.154.146.130 是外网你的代理服务器地址
[root@dev25 ~]# ssh -qTfnN -D 192.168.2.20:7070 root@183.154.146.130
# ssh端口转发启动好后,可以通过curl命令验证下是否正常,如果有返回说明配置正常
[root@dev25 ~]# curl --socks5-hostname 192.168.2.20:7070 https://baidu.com
配置docker使用代理
http-proxy.conf
默认是不存在的,需要手动创建
[root@dev25 ~]# mkdir -p /etc/systemd/system/docker.service.d/
[root@dev25 ~]# vim /etc/systemd/system/docker.service.d/http-proxy.conf
在http-proxy.conf
文件中,加入如下信息,192.168.2.20:7070
是上一步设置ssh代理的时候配置的内网地址
[Service]
Environment="all_proxy=socks5://192.168.2.20:7070"
Environment="NO_PROXY=localhost,127.0.0.1,private.docker.registry.com"
重启docker服务
[root@dev25 ~]# systemctl daemon-reload
[root@dev25 ~]# systemctl restart docker
# 后面再使用docker pull/search这类会访问外网的命令时,会通过代理转发
[root@dev25 ~]# docker pull centos
验证
如果要验证配置是否成功,可以通过如下方法
# 安装net-tools工具
[root@dev25 ~]# yum install net-tools -y
# 登录你的转发服务器,比如示例中的192.168.2.20,当使用docker pull images的时候
# 使用如下命令,检查是否有从docker服务器发过来的请求,如果有说明配置成功
[root@dev20 ~]# netstat -anp | grep 7070
补充
yum使用socks5代理,在/etc/yum.conf
中配置
# cat /etc/yum.conf
...
proxy=socks5://192.168.2.20:7070
...
git使用socks5代理,在~/.gitconfig
中配置
# cat ~/.gitconfig
...
[http]
proxy = socks5://192.168.2.20:7070
...