使用Docker容器安装shadowsocks-libev教程

本文将简单介绍如何使用docker安装shadowsocks-libev,同时也包含一些docker的使用技巧。
Views: 834
2 1
Read Time:2 Minute, 6 Second

相信很多小伙伴在搭建代理服务时都会采用诸多大佬的一键脚本或者是官方推荐的脚本,这些脚本在执行时会自动根据你的环境下载相关的依赖并进行配置,但是如果你的服务器本身运行着多种服务,不同服务间对某个组件的依赖存在版本冲突或者其他冲突,这些冲突是不可避免之时,容器技术就有很大的用处了。

此外还有一些其他场景,比如环境条件的配置比较复杂时,使用docker可以快速复制这些配置内容到其他服务器上,非常利于软件分发与应用;比如说当我不再需要某个服务时,我需要从我的服务器上将其删除,由于Linux服务是没有GUI与快捷的软件管理服务的,在我们想要彻底删除某个软件时会变得极其麻烦(因为要频繁使用rm -rf,靓仔哭泣),甚至有可能手残把不该删除的删除了,这时候如果你使用docker,你就会发现docker容器的好处了。

根据维基百科上的内容,我们来简单介绍一下Docker容器:

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器

相信大家对虚拟机一定不陌生吧,我们Windows系统上常用的VmWare就是虚拟机,不过虚拟机是从硬件层面上进行虚拟化,可以理解为将同一个硬件设备(如键盘、鼠标)虚拟成一个新的、适合用于另一个系统的硬件设备,从而可以使你在Windows系统的宿主机上运行其他系统。而Docker则是操作系统层面上的虚拟化,怎么理解操作系统层面上的虚拟化呢,大家其实将其理解为对内存管理、任务调度、IO管理等系统服务的另一种虚拟就行了。站在我的角度来看,我认为其就类似于Android系统中的Java虚拟机。不过Docker的颗粒度应该要更细一些。

在简单介绍了Docker容器后,我们就直入正题,那就是如何使用Docker安装shadowsocks-libev代理服务。关于shadowsocks-libev相关知识就不在这里细讲了,感兴趣地同学可以自行看我之前的博客。

1.安装docker引擎

安装docker第一步需要安装docker引擎,docker引擎是docker容器的基础。docker容器可以理解为集装箱,而docker引擎则是承载这些集装箱的货轮。在安装docker引擎时,有几个前提条件必须满足:

1.Linux系统,且内核版本必须较新

2.系统必须是64位系统,如x86_64,amd64或者arm64等等

3.RAM资源最好在512M以上

满足上述条件后,开始进行docker引擎的安装,在本教程的演示中,我的Linux系统为Ubantu 20.0 LTS,不同版本或者不同的Linux系统会有一定差异,这一点请大家注意。

1)更新软件源

sudo apt-get update

2)安装依赖项

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

3)添加Docker官方GPG Key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4)设定docker仓库源

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5)安装docker引擎

sudo apt-get update
 && sudo apt-get install docker-ce docker-ce-cli containerd.io

安装完成后应该是没有报错信息的,安装完成后的输出内容如下:

此时我们可以使用docker –version命令进行查看,我安装的版本信息如下:

至此Docker引擎安装完毕。

2.下载shadowsocks-libev的docker镜像

docker镜像是docker容器运行前的原始材料,如果说docker容器是集装箱,docker引擎是货轮,那么docker镜像就是集装箱的设计图。Docker官方存在一个存储docker镜像的公共仓库,也叫做Docker Hub,如果你是Python开发者,Docker Hub就类似PyPi.Docker Hub允许个人制作上传自己的Docker镜像,其他人可以免费从Docker Hub上进行下载,从而批量复制应用。

使用docker镜像需要从docker镜像仓库中进行下载,通过docker pull命令进行拉取。在本教程中,使用的docker镜像来自于秋水逸冰大佬,在此感谢秋水大大!镜像拉取命令如下:

docker pull teddysun/shadowsocks-libev

拉取成功后如下所示:

我们可以使用docker images来管理和查看我们服务器本地存在的docker镜像。

3.配置Shadowsocks

关于这一块儿,相信大家一定不陌生。无论你是采用官方推荐的snap安装,或者是其他一键脚本进行安装,都需要对Shadowsocks进行配置,配置的内容放入config.json文件内,当你运行docker容器时就会读取该Json文件的内容,从而完成服务端的配置。

首先,我们需要创建配置文件夹:

 mkdir -p /etc/shadowsocks-libev

之后进入到该文件夹,使用如下命令进行config配置:

cat > /etc/shadowsocks-libev/config.json <<EOF
{
    "server":"0.0.0.0",
    "server_port":9000,
    "password":"password",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":false,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp"
}
EOF

这里面的配置项在这里不做过多描述,重要的是server_port与password字段,请根据你自己的实际情况进行修改。

4.运行Docker容器

当我们需要运行Docker容器时我们使用docker run命令,这个命令十分重要,有着相当多的参数选项,通过docker run –help命令查看具体的使用细则。在这里,我们使用如下命令运行起我们的docker容器:

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

简单讲一下这条命令里面的一些参数:-d代表后台运行容器且打印容器id,相当于让我们的shadowsocks-libev服务一直保持后台运行。如果你使用一键脚本,则大多通过systemd的方式让其保持后台运行,在docker中则使用-d参数保持其后台运行。-p参数则用于指定端口,使用形式如:-p 宿主机端口:容器端口,即可将服务器的端口与docker容器的端口进行绑定。在本例中,则是将docker容器的9000端口与服务器的9000端口进行绑定。这样,docker容器与服务器外部的所有数据交换都将通过9000端口。实际上在设置时,服务器端口与容器端口可以设置为不同的值,只需要保证客户端连接时为服务器实际所对应的端口即可,数据处理的过程将在容器内进行。

至此我们整个安装就已经完成,接下来就是客户端上使用啦。客户端配置如下:

5.拓展

1.多端口配置:如果我们需要进行多端口配置,常规方法我们可以通过对config.json文件进行配置来实现。但如果使用docker,则可以通过运行多个docker容器的方式来实现,不同容器之间不会产生干扰,而且可以通过多个docker容器实现类似与负载均衡的效果。

2.查看docker容器状态:怎样确定我们docker容器的状态呢,我们可以通过docker ps命令进行查看,docker ps命令的输出内容如下:

输出的内容包含七列内容:

CONTAINER ID:容器ID,是容器运行时的身份表示,每一个运行中的容器ID都是独一无二的,我们获取到容器ID后可以将其作为参数在其他的一些命令中进行使用。所以容器ID是我们需要特别注意的一项输出内容。

IMAGE:docker镜像,该名与我们docker pull拉取镜像时的名称保持一致,用于表明该容器所使用的镜像名称。

COMMAND:容器所执行的指令。

CREATED:容器运行的时间。

STATUS:当前容器的状态,UP表示当前容器处于运行状态。

PORT:当前容器所开放的端口。

NAMES:当前容器的别名。

3.查看docker容器的日志输出:有些时候我们需要查看日志,这时我们需要使用docker logs +Contained Id进行查看。

4.终止某个容器:如果我们终止我们容器的运行,使用docker kill +Container Id命令即可。

以上,就是我们使用docker安装shadowsocks- libev的教程啦。大家可以自行搭建试试哦!

Happy
Happy
100 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %
FranzKafka95
FranzKafka95

极客,文学爱好者。如果你也喜欢我,那你大可不必害羞。

Articles: 85

Leave a Reply

Your email address will not be published. Required fields are marked *

en_USEN