Ryan

从onekeyshell向docker转变之:使用docker运行ShadowsocksR
之前就了解过Docker了,不过仅限于用樱花云跑个ShadowsocksR。今年年初在公司接触到一个Docker项...
扫描右侧二维码阅读全文
04
2019/05

从onekeyshell向docker转变之:使用docker运行ShadowsocksR

之前就了解过Docker了,不过仅限于用樱花云跑个ShadowsocksR。今年年初在公司接触到一个Docker项目,就花了点时间入门,发现Docker这个东西很好用啊,有点像Java,一次制作,到处运行。当然啦,你要运行的程序如果和系统有强耦合性(比如绑定串口),那么这种应用我觉得没必要强迁移至Docker。

要求

机器上需要有 Docker 环境。具体参考 Docker 官方文档来安装 Docker-CE。


此外,还要使用 docker-compose 来管理服务,参考 docker-compose 的官方文档来安装。在 Linux 上可以一行命令安装:

# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose

映像主备

这一步其实可以省略,使用别人现成的Docker Image就可以了。

编写Dockerfile

从下面的 Dockerfile 就可以看出,和之前一键脚本安装ShadowsocksR没多大区别。

vi /data/ssr/Dockerfile

内容如下

FROM alpine
MAINTAINER Ryan Lieu <github-benzBrake@woai.ru>

RUN set -ex \
    && if [ $(wget -qO- ipinfo.io/country) == CN ]; then echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories ;fi \
    && apk --update add --no-cache libsodium py-pip \
    && pip --no-cache-dir install https://github.com/shadowsocksr-backup/shadowsocksr/archive/manyuser.zip

ENTRYPOINT ["/usr/bin/ssserver"]

构建映像

# cd /data/ssr
# docker build -t benzbrake/shadowsocksr .

benzbrake/shadowsocksr 是映像名称,可以使用你的docker id/映像名称或者直接是映像名称,博主写成benzbrake/shadowsocksr是为了发布到docker hub中

# docker image ls benzbrake/shadowsocksr
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
benzbrake/shadowsocksr   latest              fd0ee8f0bb08        35 hours ago        56.3MB

docker-compose.yml配置文件

假设你准备在/data中存放数据,新建一个目录:

# mkdir /data

准备服务描述文件

# cd /data
# cat >> docker-compose.yml <<EOF
version: '3'

services:
  shadowsocksr:
    image: benzbrake/shadowsocksr
    container_name: shadowsocksr
    restart: always
    ports:
      - "8388:8388"
    command: -s 0.0.0.0 -p 8388 -m aes-256-cfb -k youpassword -O auth_sha1_v4 -o tls1.2_ticket_auth
EOF
  • image参数是映像名称,你上边构建成什么名称用什么,或者直接使用benzbrake/shadowsocksr,docker会自动pull博主构建的映像
  • ports参数是端口映射,这样就可以通过127.0.0.1:端口或者服务器IP:端口的形式访问容器的指定端口
  • command用户指定运行参数。
  • container_name 是容器名,类似于Systemd的服务名

启动服务

# cd /data
# docker-compose up -d

查看状态

# docker-compose ps
    Name                  Command               State           Ports
------------------------------------------------------------------------------
shadowsocksr   /usr/bin/ssserver -s 0.0.0 ...   Up      0.0.0.0:8388->8388/tcp
搬瓦工年付$187机房套餐补货了,电信联通优化,512M内存/500G流量/1G带宽,建站稳定,优惠码:BWH1ZBPVK,【点击购买】!
搬瓦工年付$28CN2高速线路,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快,建站稳定,优惠码同上,【点击购买】!
Last modification:May 21st, 2019 at 12:45 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

2 comments

  1. Sam.Z

    Docker 蛮好用的,我适用范围仅限于群晖,各种神器~ ヾ(≧∇≦*)ゝ

  2. 奶爸de笔记

    (๑•̀ㅁ•́ฅ)关键字你不修改下,说不准哪天就接到网警电话了。