原来安装openstack的时候曾经碰到访问国外资源的时候网络不稳定,后面通过租用VPS,上面安装shadowsocks服务端,在客户端linux上安装客户端sslocal和redsocks。其中linux客户端的安装还是比较麻烦的,现在开始学习k8s,软件源基本都是google公司的,有些源可以在国内镜像找到,但是有些还是不行,还是需要科学上网才能彻底解决这个问题。
这次的科学上网,在linux上我准备通过容器镜像来完成,这会比较干脆干净,本来k8s就安装了docker的,linux下的一切程序都容器化,也是一种好习惯。
注意,前提是已经有VPS,并在上面搭建了shadowsocks服务端程序。
直接在linux下执行命令:
[root@k8s1 software]# docker search sslocal INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/sgrio/alpine-sslocalproxy Tiny image which brings you a http proxy b... 2 [OK] docker.io docker.io/ahui/sslocal shadowsocks go client, size < 5m 1 docker.io docker.io/tangym/privoxy A caching proxy server with sslocal running. 1 [OK] docker.io docker.io/uglycat/shadowsocks-sslocal shadowsocks-sslocal 1 [OK] docker.io docker.io/wuwengang/docker-sslocal-privoxy Turn shadowsocks into socks5 and http 1 [OK]
看中了上面的最后一行“docker.io/wuwengang/docker-sslocal-privoxy”的镜像,使用sslocal + prixoxy 实现linux的http/https代理 。
找到这个镜像原始的git地址,直接git clone到本地进行制作:
原始定制方法: git clone https://github.com/wuwengang/docker-sslocal-privoxy.git 使用Docker基于alpine linux将shadowsocks转为socks5与http 一.使用方法 1.使用docker build -t 镜像名:版本号 路径 例子: docker build -t sslocal:latest . 表示使用当前路径的Dockerfile文件生成镜像 2.运行容器 docker run -ti --restart=always --name sslocal -d -p 8118:8118 -p 1080:1080 -e SS_SERVER=服务器ip地址 -e SS_SERVER_PORT=服务器端口 -e SS_S ERVER_PASSWD=123456 -e ENCRYPT_METHOD=aes-256-cfb -e SS_LOCAL_PORT=1080 sslocal:latest
为了以后更方便使用,直接将这个镜像export出来并下载到本机以备后用。
docker export -o sslocal.tar sslocal
编辑环境变量文件.bashrc ,将http/https代理指向上面容器sslocal中privoxy提供的本机8118端口,并wget www.google.com.hk进行测试,成功。
vi ~/.bashrc export http_proxy=http://127.0.0.1:8118 export https_proxy= [root@k8s1 tmp]# wget www.google.com.hk --2018-09-27 17:12:21-- http://www.google.com.hk/ Connecting to 127.0.0.1:8118... connected. Proxy request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘index.html’ [ <=> ] 16,475 57.9KB/s in 0.3s 2018-09-27 17:12:22 (57.9 KB/s) - ‘index.html’ saved [16475]
接下来,需要设置docker使用sslocal提供的socks5代理,这样docker可以直接通过sslocal程序提供的1080的socks5端口,进行科学上网。
注意,docker需要专门进行设置socks的代理,原来我的理解是设置了http/https的代理就可以了,但是发现不行,后面查了相关的文章才发现docker也需要设置代理才行。
设置docker代理配置
mkdir /etc/systemd/system/docker.service.d vim /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="ALL_PROXY=socks5://127.0.0.1:1080" 重启服务: root@:~# systemctl daemon-reload root@:~# systemctl restart docker 验证: root@:~#systemctl show --property=Environment docker Environment=ALL_PROXY=socks5://127.0.0.1:1080
接下来,就可以开心的yum安装以及docker下载外国镜像了。