诺志
软硬件开发技术笔记
使用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
...
分类
2篇
c
1篇
8篇
18篇
8篇
2篇
搜索