几款 Shadowsocks 的 Docker 镜像

标签: shadowsocks docker 镜像 | 发表时间:2018-09-23 16:35 | 作者:Teddysun
出处:https://shadowsocks.be/

Shadowsocks Docker

Docker 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
Docker 利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一 Linux 实体下运作,避免启动一个虚拟机造成的额外负担。
简单概括起来就是,Docker 是个容器,什么都能往里塞,你也可以理解为是一个轻量化的虚拟机。
使用 Docker 的好处就是对当前系统的环境没有破坏性,基本上一款镜像可以跑在任意包含了 Docker 的机器上,可以说是十分方便了。
本文主要介绍一下我在学习 Docker 的过程中制作的几款 Shadowsocks 镜像,以及使用方法。

在内核大于等于 3.10 的系统里,执行如下脚本,直接安装 Docker:

  wget -qO- get.docker.com | bash

安装完成后,运行下面的命令,验证是否安装成功。

  docker version 

启动 Docker

  systemctl start docker 

查看 Docker 启动状态

  systemctl status docker

允许 Docker 开机自启动

  systemctl enable docker 

1. Shadowsocks-libev Docker Image

这是我第一款制作出来的 Docker 镜像,基于 alpine 镜像制作的,其特点就是文件容量非常小。

拉取镜像命令:

  docker pull teddysun/shadowsocks-libev:alpine 

创建 config 文件

比如在目录 /etc/shadowsocks-libev 下创建 config.json,完整路径也就是 /etc/shadowsocks-libev/config.json
范例内容如下:

  {
    "server":"0.0.0.0",
    "server_port":9000,
    "password":"password0",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":true,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp"
}

如果你想同时开启 simple-obfs,那么配置文件范例如下:

  {
    "server":"0.0.0.0",
    "server_port":9000,
    "password":"password0",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":true,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp",
    "plugin":"obfs-server",
    "plugin_opts":"obfs=tls"
} 

配置文件里面所有选项的含义,可以参考 这个链接

启动容器
在上面这个范例里,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:

  docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev:alpine 

参数解释
docker run:开始运行一个容器。
-d 参数:容器以后台运行并输出容器 ID。
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是映射 TCP,当需要映射 UDP 时,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以不一致。
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作。
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以不一致。
teddysun/shadowsocks-libev:alpine:这是镜像路径。

查看容器状态
利用如下命令可以查看所有已创建的 Docker 容器并显示容器的大小等信息:

  docker ps -as

2. ShadowsocksR Docker Image

拉取镜像
基于 python:3.6-alpine 镜像制作的

  docker pull teddysun/shadowsocks-r:alpine 

创建 config 文件

比如在目录 /etc/shadowsocks-r 下创建 config.json,完整路径也就是 /etc/shadowsocks-r/config.json
范例内容如下:

  {
    "server":"0.0.0.0",
    "server_ipv6":"::",
    "server_port":9000,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"password0",
    "timeout":120,
    "method":"aes-256-cfb",
    "protocol":"origin",
    "protocol_param":"",
    "obfs":"plain",
    "obfs_param":"",
    "redirect":"",
    "dns_ipv6":false,
    "fast_open":true,
    "workers":1
} 

ShadowsocksR 协议插件文档的含义,可以参考 这个链接

启动容器

在上面这个范例里,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:

  docker run -d -p 9000:9000 -p 9000:9000/udp --name ssr -v /etc/shadowsocks-r:/etc/shadowsocks-r teddysun/shadowsocks-r:alpine

3. Shadowsocks-Python Docker Image

拉取镜像
基于 python:3.6-alpine 镜像制作的

  docker pull teddysun/shadowsocks-python:alpine 

创建 config 文件

比如在目录 /etc/shadowsocks-python 下创建 config.json,完整路径也就是 /etc/shadowsocks-python/config.json
范例内容如下:

  {
"server":"0.0.0.0",
"server_port":9000,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"password0",
"timeout":120,
"method":"aes-256-cfb",
"fast_open":true
}

启动容器

在上面这个范例里,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:

  docker run -d -p 9000:9000 -p 9000:9000/udp --name ss -v /etc/shadowsocks-python:/etc/shadowsocks-python teddysun/shadowsocks-python:alpine

相关 [shadowsocks docker 镜像] 推荐:

几款 Shadowsocks 的 Docker 镜像

- - Shadowsocks非官方网站
Docker 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制. Docker 利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers).

Docker镜像仓库Harbor

- - 灰狐博客
Habor是由VMWare公司开源的容器镜像仓库. Habor是在Docker Registry上进行了相应的企业级扩展,这些企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等. 京东使用了Harbor搭建了自己的私有Dockr镜像仓库. 用Harbor实现容器镜像仓库的管理和运维.

mdblog/Docker镜像中心.md at master · downgoon/mdblog · GitHub

- -
手把手体验DockerHelloWorld. Docker Image: 它是用来运行出. Docker Container的. nodejs image等. Docker Registry Mirrors: 为了让大家方便使用,不需要每个人都去制作. Docker Image,我们可以分享:你制作一个.

Docker 最佳实践:构建最小镜像

- - IT瘾-dev
镜像大小其实是衡量我们容器打包技术的重要指标,我们应该在不影响应用正常运行的情况下,尽量让我们的容器镜像变得更小,这样,不管是从安全还是维护效率角度来讲,都是最佳实践. 本文我们从两种情况阐述我们的问题和解决方案,我们从实现我们的application的编程语言角度,按照语言是解释型还是编译型语言来演示如何解决容器镜像体积大的问题.

docker/kubernetes国内源/镜像源解决方式

- - Xinkun Blog
最近在使用kubeadm时,被各种连接不上搞到崩溃. 这里统一整理了国内的一些镜像源,apt源,kubeadm源等,以便查阅. Azure China提供了目前用过的质量最好的镜像源. 而且都支持匿名拉取,也就是不需要登录. 这里,我开发了一个小的脚本azk8spull,这个脚本可以自动根据镜像名称进行解析,转换为azure的mirror镜像源域名.

Docker 最佳实践:5 个方法精简镜像

- - IT瘾-dev
本文记录了精简Docker镜像尺寸的必要性及好处. 上篇文章回顾: HBase实战:记一次Safepoint导致长时间STW的踩坑之旅. 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患. 优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而有差异. 本文将介绍精简Docker镜像的几种通用方法.

Docker & Flatpak

- - IT瘾-dev
目前最流行的技术莫过于Docker,Docker和Docker衍生的东西用到了很多很酷的技术,目前deepin应用软件发布转变成flatpak,这些看似风牛马不相及的技术方案,实际都使用了一个共同的底层技术——Namespace,假如没有namespace支持,这些技术实现都将成为空中楼阁. 一句话总结,无论是Docker、sysmted-nspawn还是flatpak,都是在namespace基础上,针对不同的场景,生出的不同的解决方案.

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

OpenWRT+Shadowsocks科学上网教程

- - 细节的力量
本文中将会出现以下密码概念,请先准备:. 1.原厂路由器管理用户名密码,一般印在路由背面贴纸上,若已修改请使用修改后的密码或复位路由使用默认用户名密码. 2.路由器型号一般印在路由背面贴纸上,若未发现请联系销售给你路由器的商家. 3.宽带拨号用户名密码,一般在宽带账号开通单上,若不记得请联系当地接入商索取或修改.

Shadowsocks-go一键安装脚本

- - 深度VPS
Shadowsocks是做什么的,大家都懂吧. 系统支持:CentOS,Debian,Ubuntu. 日期:2015年08月01日. 一键安装 go 版的 shadowsocks 最新版本 1.1.4. 据说 go 版本有 buff. 与 python 版不同的是,其客户端程序能使用多个服务端配置,本脚本安装的是服务端程序.