6b0e39ba33f3df92e71f6c650233f3ca.png
Docker 容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker 也为容器提供更强的业界的隔离兼容。[2]

使用 docker 的 nas 用户几乎都遇到过性能不足的情况,这时候服务器就卡住无法动弹,常见的情况就有:

  1. 视频转码
  2. bt 太多
  3. 内存分配冲突

一旦这种情况出现,就特别想要换一台不是那么坑的高性能机器。但是呢,更换机器的成本也不小,买机器得花钱吧,旧的机器得淘汰吧,旧机器得处理吧,如果跨平台,还得转移数据,还得调试配置。零零总总加起来,也是一堆麻烦事。

那其实有一种方法,可以不必更换高性能 NAS,那就是再加一个机器,专门跑 Docker 。
请不要认为我在搞笑,这个方法可行,并且比更换设备要好许多,原因如下:

  1. 首先,新增设备的存储问题不用担心。
    使用 NAS 提供的 NFS 服务,就可以远程挂载存储空间,并且性能损耗也非常小。(具体测试结果已经丢了,有兴趣的可以自行测量)
  2. 其次,新机器在 cpu、内存、ssd、平台上有非常多的选择。
    无论是购买低价的高性能设备(比如入门级,已经疯狂涨价的 N1,CpuMark : 18478 Scores,ARM,2G内存,8G EMMC 存储,单网口,双USB,一个HDMI,从70元 涨到了120元),还是自组机器,都有不错的选择性。
  3. 不用处理旧机器,不用换平台,不用新配置。
  4. 耦合度小,这一点有些朋友深有体会。
    有些朋友设备的耦合度超高,什么东西都往里面塞,一个 nas 炸了,所有的东西全部炸。有备份的恢复数据,没有备份的重新配置,玩上了 docker 还得重新下一遍并且还得重新配(没有心理阴影的人应该没有备份 docker 吧),挂载种子多的就...。总之,这些所有东西加起来,一周的时间说不定就过去了。

【教程部分】

教程共有三步,其中第三步的是在 docker 中挂载 NFS 并创建镜像,全 GUI (图形界面) 操作。

cd8862aff6500f94d963b61a043e3d18.png
  1. 挂载存储使用 NFS 协议,首先在 NAS 上开启 NFS 服务。
NFS 是一个在本地挂载远程的协议,协议性能好,开销小。
我们将使用 NFS 挂载的方式让 Docker 能够访问到 NAS 中的文件夹

77f3c04265a6b886000f85c161b92523.png

2. 然后在文件夹中开启 NFS 权限,注意装载路径,有些是 volume2/3/4 ,注意有用户权限的控制。

2cdb7a4bacdfd7a42b588fd8442257cc.png
#(如果想要在docker之外挂载NFS,可以登录SSH,使用以下命令挂载)
mount -t nfs IP地址:/volume1/qbit(远程地址) /root/remote_dir(目标地址)

e3ed944f9403c97c200a539a30ca955f.png
Portainer 是一个轻量级的管理 UI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。它由可在任何 Docker 引擎上运行的单个容器组成,旨在使部署更简单 。
简单来说,Portainer是一个 web页面,让你几乎不使用代码的方式管理 docker

假设 docker 已经按照完毕,还未安装的朋友可以点击下方相应平台进行安装。

  • win安装docker
  • macos安装docker
  • linux安装docker
  1. 首先确认 docker 命令可用

22c77a58e7893c6a74f49dcea37bca61.png

2. 安装并运行 Portainer

# docker pull portainer #这一步可以省略,run会自动下载
docker run -d -p 9000:9000 --restart=always --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /Users/lee/dev/docker_file/portainer/data:/data docker.io/portainer/portainer

(网络情况不好的朋友可以配置代理,或者在每天早上8-11点下载(此时网络情况较好))

a. 创建账号

2130ecc2687f22cf76b0487371b854bf.png

b. 连接docker服务器。点击本地(因为docker服务器安装在本地)

5ee2d164b1ad9039ff507689d795cd7f.png

c. 安装成功。界面如下

5321691be328cd2ce54aec33648f88d1.png

f0da6628390783cb9fcbfaecae8d19bb.png
对于只想使用代码的朋友,大概解释一下思路:
1. 首先创建 volumes ,利用 nfs 挂载的方式创建
2. 创建 containers 的时候使用 volumes 中的映射过去就好
  1. 下载镜像,点击Images

现在以 transmission 的映像为例

213b4d217488e4b7b321c9542efb0be7.png

a. 下载映像

d9ccd125b24d26d1d652bdb38577c4f6.png

b. 在下方点击映像,查看详细信息。

1328af209fa1191fae3f57b0029b6338.png

c. 在详细信息中寻找如下信息

6b0f470ac9cfd390b7ab2e556136f7ee.png

在详细信息可以看到,有两个端口,51413与9001,存储空间有配置,下载,监视三个位置。其中,下载和监视可以使用nfs挂载远程,配置文件放在本地存储。(这样,性能主机和NAS完成了解耦,即使NAS炸掉,docker的配置文件都还在,重新映射一下下载和监视就可以继续使用)

2. 创建存储空间,点击Volumes,点击添加卷

49ea5da82c1ca70d0f1ca99c2f363fb9.png

a. 配置卷信息

328afce39a98c90d58c54a0729d1ea4a.png

(卷可以重复使用。即,一次配置,多个镜像都可以使用)

3. 部署镜像,点击Containers

点击添加

ab4fc8611286fc94a066224fe1dc75e1.png

a. 基本配置

5d8fbcd1930704bc6e7be40cc26ccee9.png

b. 配置卷

338cb19f7c6cb6cb6db2d0222298fc41.png
配置示例如图,可以在右方设置读写权限

c. 选择网络

039354a493c25ad9ce9d7792b218581d.png

主流选项有bridge(桥接)与host(主机):

  • 桥接方式通过内网以及端口转发进行,常见的问题有没有ipv6地址(需要复杂的配置)
  • 主机模式将共享主机的所有网络条件(但要注意端口是否冲突)

由于tr需要下载做种,所以选择host模式方便使用,保留ipv6地址。

d. 完成安装

e. [可选] 使用 NAS 反代协议进行反代

利用反代,可以仅使用一个 IP 进行所有服务的访问。同时可以利用 https 加密 http 流量 ,无需再次配置新证书。

e143c61096c5cf142c12a3d852b4ec4c.png

【如果这篇文章对你有用就点个赞吧,点赞又不要钱】

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐