前言
前些日子,因为搞了点Docker入门的知识,再加上作为一名移动+web前端工程师对后端的渴望,还有一直受限于使用他人的VPN/Shadowsocks的痛苦,遂买下了服务器亲手操刀Docker以及Shadowsocks的实践。
在我搭建起整个服务并且投入使用,公诸于世后被一些老司机朋友说“Shadowsocks只不过是一个跑在Vps上的一个socks5服务而已,没必要用Docker”。听完这个我脸都黑了,宝宝买vps专门是用来倒腾服务器后端的,Shadowsocks本来就是为了实践docker而玩的嘛~
购买Vps
DO介绍
作为一名长期患有选择困难症的选手来讲,做这样的选择简直就是煎熬,就目前来讲,我选择了DigitalOcean,以下是DO( 这里下文中的DO专指DigitalOcean )的价位截图:
值得一提的是DO是按量付费的,在一个DO账户中可以有多个Droplets(即一个服务器,我也搞不清楚为什么要用小水滴Droplets这个词,可能是和DigitalOcean数据海洋对应吧~),多个Droplets并行收费。
DO的按量付费规则是:即用即扣费,删除服务器(Droplets)则扣费停止
我的选择
放弃搬瓦工
最开始我买的并非DO,而是更加实惠2美刀的搬瓦工,跟每月5美刀的DO比起来看起来好多了,然而事实并非如此。搬瓦工是一个基于OpenVZ的虚拟容器,暂且把它理解为Docker上的一个容器吧!直接搭建Shadowsocks服务也还行,但是想要在这么一个容器上再跑Docker,就会因为无法升级Linux内核(docker要求环境的Linux内核必须为3.0以上)而无法启动docker。因为OpenVZ和Docker一样,容器与宿主机共用内核,因此容器作为寄生者肯定是没有升级内核的权限的,这也是我放弃搬瓦工的原因,2.x的Kernel内核我就呵呵了….放弃Linode
Linode从大众反馈来讲还是非常棒的,但是它的起跳价格是10$/month,性价比和DO几乎一致,但是作为一名刚毕业的新人(工作一年多的老司机)来讲还是有压力的,因此我选择了门槛更低的DODO注意事项
- DO起跳套餐是5美金每月,虽然是按量收费,但也别为了5美刀而耗费自己额外的精力,而且1T的流量肯定是管饱的。
- 每一名DO用户的在成功邀请一名新用户后,邀请者和被邀请者均有一定的奖励~ 在个人的Settings页面即可找到邀请入口,邮箱和连接分享均可。
- DO也有让人头疼的地方,在注册并绑定信用卡后,还需要经过一个用户审核的阶段,我想这也是为了防止恶意注册账户领取奖励吧~ 在注册完毕后,网站会提示他们会在2小时内完成人工审核,我当时是等了大概不到一个小时吧,毕竟美帝那时候已经是晚上了,理解万岁~ 在收到用户信息验证后让我回复持有身份证或护照的照片时,因为暂时不方便就给回复了学生证、身份证等信息后居然通过了,点赞!!!
安装docker
使用ssh连接服务器
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。
引自 阮一峰老师的《SSH原理与运用(一):远程登录》
在注册并创建服务器后,你会得到vps的IP地址和初始root账户的默认密码。
打开你的终端,输入 ssh root@你的ip地址
敲回车在输入密码即可远程登录你的服务器,接着就进入docker的安装环节啦~
docker的安装
我的服务器安装的是ubuntu14.04的操作系统
完整的安装流程见Docker官网
查看你的Linux内核版本
uname -a
命令
Docker的Linux安装环境要求:- 64位的操作系统
- Linux内核必须大于3.1
为APT安装带有CA证书的https方法
因为docker的包源要求,而且下一步我们就要开始为Linux添加docker源啦~安装证书
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates添加GPG key
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
为系统添加docker源
这条命令会让你用vi打开docker.list,如果没有会自动创建。
vi /etc/apt/sources.list.d/docker.list
添加源:
On Ubuntu Precise 12.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-precise main
On Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main
Ubuntu Wily 15.10
deb https://apt.dockerproject.org/repo ubuntu-wily main
Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main
根据你的操作系统将以上四种源之一粘入docker.list文件,记得要输入i进入编辑模式,粘贴完后:wq
保存退出
安装docker:
apt-get update
apt-get install docker-engine
至此docker就已经安装好了。为方便起见,我省去了部分步骤以及重启过程,就目前来讲还是OK的。
在Docker上跑起Shadowsocks容器
- 启动docker服务
service docker start
然后像brew一样使用search命令来搜一下官方源DockerHub 上都有哪些shadowsocks镜像
docker search shadowsocks
在以上源中,可以很容易看到排在第一位的镜像很受欢迎,
被下载数更是遥遥领先呀~
下载镜像并启动容器
docker pull oddrationale/docker-shadowsocks
拖取DockerHub上的镜像到本地docker run -d -p 2008:1993 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 1993 -k 0000 -m aes-256-cfb
在启动镜像时,有一点就是要求 宿主机映射到docker容器上的端口必须要和shadowsocks上的设置的端口一致,换句话说就是冒号后边的端口号和最后的端口必须要保证一致。因为想要外界能够访问容器内部应用,就需要给从宿主机通过-p参数给宿主机和容器之间的端口形成一对一的映射来访问,而容器内则需要保证shadowsocks的端口和被映射端口一致即可。此时
docker ps
即可看到已经跑起来的shadowsocks容器,如:我这里因为示范所以多跑了几个容器。
接下来就可以根据以下几样东西在Shadowsocks客户端(Windows, Mac, Windows, Android, iPhone) 上配置啦~
- 你的服务器IP
- 宿主机器分给docker容器的端口 (上边是2008)
- 密码 (上边是0000)
全端ss客户端下载地址
Windows
ShadowsocksR-win-3.7.4.1.7z
OS X
MacOSX ShadowsocksX-2.6.3.dmg
Linux 客户端
shadowsocks-gui - Cross-platform GUI powered node and by Webkit
iOS 客户端
需要自己app store购买 surge web或者shadowrocket app store 搜索即可
Android 客户端
shadowsocks-android
路由器 / Router 客户端
shadowsocks-openwrt - works on OpenWRT routers
End
你可以通过链接来注册并使用DO服务,这样你就可以直接获得10美金的起步资金,而我……什么都没有。当然,你在DO上支付25美金后,我也会得到同样的优惠~
我注册时忘记搞这个了….TT