前言

前些日子,因为搞了点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几乎一致,但是作为一名刚毕业的新人(工作一年多的老司机)来讲还是有压力的,因此我选择了门槛更低的DO

  • DO注意事项

    • 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官网

  1. 查看你的Linux内核版本
    uname -a命令

    Docker的Linux安装环境要求:

    • 64位的操作系统
    • Linux内核必须大于3.1
  2. 为APT安装带有CA证书的https方法
    因为docker的包源要求,而且下一步我们就要开始为Linux添加docker源啦~

    1. 安装证书

      $ sudo apt-get update 
      $ sudo apt-get install apt-transport-https ca-certificates
    2. 添加GPG key

      $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  3. 为系统添加docker源

    1. 这条命令会让你用vi打开docker.list,如果没有会自动创建。

      vi /etc/apt/sources.list.d/docker.list
    2. 添加源:

      • 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保存退出

  4. 安装docker:

    apt-get update
    apt-get install docker-engine

至此docker就已经安装好了。为方便起见,我省去了部分步骤以及重启过程,就目前来讲还是OK的。

在Docker上跑起Shadowsocks容器

  1. 启动docker服务
    service docker start
  2. 然后像brew一样使用search命令来搜一下官方源DockerHub 上都有哪些shadowsocks镜像 docker search shadowsocks

    在以上源中,可以很容易看到排在第一位的镜像很受欢迎,

    被下载数更是遥遥领先呀~

  3. 下载镜像并启动容器

    • 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容器,如:

      我这里因为示范所以多跑了几个容器。

  4. 接下来就可以根据以下几样东西在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

donation