小刻也能看懂的Unraid系统使用手册:Docker篇


小刻也能看懂的Unraid系统使用手册

Docker篇

Docker可以做什么?

通过创建共享,并在其他计算机上访问共享的方式,已经可以实现 NAS 的文件存储和访问功能了。但这仅仅是基础功能,通过 Docker 提供的各种应用和服务,我们可以把这台 Unraid NAS 服务器变成家庭影音中心、私有网络云盘、24小时在线的下载机,还可以在服务器上搭建网站、博客等。

Docker的基础知识

Docker 技术的思想来源于集装箱,正如它的图标所展示的那样,通过 Docker 技术,开发者把应用程序和所需的运行环境放到一个“集装箱”里,这些“集装箱”之间互不影响,应用程序在各自的“集装箱”里运行。通过这个技术,实现了应用程序之间互相隔离,避免了因为运行环境混乱导致的兼容问题和冲突。这让应用和服务的部署变得非常轻松。你甚至可以通过 Docker 在同一个服务器上安装多个相同的应用。

镜像 Image

开发者把应用程序和所需的运行环境打包成为一个镜像,然后发布出去,供使用者下载。镜像是用来创建容器的。

容器 Container

使用者下载到应用的镜像后,使用 Docker 运行,将会创建一个容器,应用在该容器里运行。因为容器内外是隔离的,所以如果要控制容器内的应用程序的话,则需要映射一个由主机到容器的端口。容器内的应用想要访问容器外的文件,则需要设置一个磁盘路径的映射。

仓库 Repository

仓库是开发者发布镜像的地方,使用者可以在仓库搜索镜像,查看镜像配置参数。

Docker 官方的镜像仓库地址:https://hub.docker.com/

查看Docker设置

Unraid 系统已经集成了 Docker 环境,通过 SETTINGS >> Docker 进入 Docker 设置界面。在这里可以查看当前运行的 Docker 版本,启用或禁用 Docker。还有两个路径,是需要注意的:

Docker vDisk location

这是 Unraid 为 docker 运行创建的虚拟磁盘,安装的所有 Docker 都在该虚拟磁盘上,它默认使用 /mnt/user/system/docker/docker.img 路径,存放在 system 共享所在的磁盘上。

Default appdata storage location

这是容器内的应用数据存储的位置。在使用者安装 Docker 应用的时候,需要将 Docker 应用的配置文件路径映射到这里,否则 Docker 重启时会恢复默认设置。

安装Docker应用

Unraid 提供了两种安装 Docker 应用的方式:一种是通过 Unraid 社区应用商店(Community Applications)安装,另一种是通过 Docker 容器安装。通过社区商店安装较为简单,但为了演示 Docker 参数配置的过程,也为了后续安装一些社区商店没有的 Docker,先使用 Docker 容器进行安装。

1. 搜索 Docker 镜像

以 FileBrowser 的安装为例,FileBrowser 是一个有 WebGUI 的文件管理器,可以在线浏览服务器上的文件,支持上传下载,支持一些媒体文件的播放,功能丰富。

首先,要去仓库里搜索 FileBrowser 镜像,访问 hub.docker.com 在搜索栏输入 FileBrowser 回车,搜索结果有很多,其中获得 Stars 数量最多的是 FileBrowser 官方的镜像,但这里我们选择 80x86/filebrowser,它是开发者荒野无灯大神制作的增强版。点进去可以看到详情页面,这里有该 Docker 的介绍和开发者写的安装说明,接下来我们需要按照这个说明去配置 Docker 的参数完成安装。

由于国内网络的不稳定,hub.docker.com 这个网站可能无法访问,这种情况可以通过修改 DNS 地址解决,比如修改为 114.114.114.114。如果修改 DNS 地址的方法无效,可以参考 Unraid中文版入门指南 中“使用Docker”部分的解决方法。

2. 阅读 Docker 说明

安装一个陌生的 Docker 时,一定要仔细阅读它的说明文档,Docker 的开发者一般会以表格的形式列出需要使用者配置的参数。在 FileBrowser 的说明文档中,很容易就找到这些参数列表,如图所示。这些参数分为下面几种类型:

Path 路径

前面介绍过 Docker 运行在容器里,容器与主机是隔离的,在容器里创建一个文件,容器外是无法访问到的,为了让 Docker 可以正常访问修改主机上的文件,需要引入 Path 路径参数。Path 参数要设置两个值,一个是容器路径,一个是主机路径。通过 Path 的设置,Docker 访问容器路径的时候就相当于访问了主机路径。

在 FileBrowser 的参数列表中,/config/myfiles 就是容器路径,作者在表格中详细描述了这两个路径的用途。

/config 是配置文件的路径,可以映射到 /mnt/user/appdata/FileBrowserEX/config 下。

/myfiles 是文件管理器根目录,可以映射到 /mnt/user/Movies/ 目录。

Port 端口映射

类似于路由器的端口映射,Port 参数也要设置两个值,一个是容器的端口,一个是主机端口。通过端口映射让主机可以访问容器。

在 FileBrowser 的参数列表中,只需要配置一个 Port 参数。

Variable 变量

变量参数的数量一般比较多,作用也各不相同,常见的有:PUID(代表用户ID),PGID(代表用户组ID),WEB_PORT(端口号)等。

注意!这里的端口号指 Docker 使用的端口号,它的类型是变量,只需要填写一个值。

而 Port 类型的端口,指端口映射,需要填写两个值。

Label 标记

暂时没有用过这种类型的参数。TBD

Device 设备

这是一个特殊的参数,指定系统中的设备文件,主要用于加载硬件驱动。

在 FileBrowser 的文档中给出了启用核显进行视频编解码的参数设置,就是利用 Device 参数添加了核显的驱动。这里暂不去配置它,后续在配置 Jellyfin 硬件解码的时候会用到。

3. 添加容器

在仔细阅读了说明文档,知道该设置哪些参数后,就可以开始安装 Docker 了。实际上,安装 Docker 就是用 Docker 的镜像生成一个容器。

  1. 通过 DOCKER >> ADD CONTAINER 进入添加容器页面
  2. Template 是模板,记录以往添加容器时填写的内容,因为这是第一次添加容器,所以没有
  3. Name 是容器名称,输入 "FileBrowserEX"
  4. Repository 是 Docker 镜像的地址,输入 "80x86/filebrowser"
  5. 然后点击 Add another Path, Port, Variable, Label or Device 链接来设置参数
  6. 需要按照 Docker 说明文档,依次添加参数,如图
  7. 全部填写完成后点击 APPLY 将开始下载镜像并创建容器
  8. 如图显示 Successfully 表示容器创建完成!

4. 使用 Docker

DOCKER 页面可以看到系统中已有的容器,如图所示,列表中已经显示出刚才创建的 FileBrowserEX。在 PORT MAPPINGS(APP TO HOST) 一列显示了容器 IP 端口和主机 IP 端口的对应关系,使用浏览器访问右边的主机地址 10.0.0.110:7001 就可以打开 FileBrowserEX 的 WebGUI 页面进行使用了。

5. Docker 高级选项

DOCKER 页面点击 FileBrowserEx 容器名称超链接,进入修改容器设置的界面,点击右上角的 BASIC VIEW(基础视图) 切换到 ADVANCED VIEW(高级视图) 在这里可以进行容器高级选项的配置。

5.1 给 Docker 添加图标

没有图标的 Docker 是没有灵魂的,在参数列表中有 Icon URL 这一项,将找到的图标网址粘贴到这里就可以给 Docker 指定漂亮的图标了。

5.2 添加快捷链接

使用 Docker 要输入 IP 地址和端口,非常麻烦,而且有时会忘记端口号。其实可以通过设置高级选项中的 WebUI 参数来给 Docker 添加一个快捷链接。

设置 WebUI 参数为 http://[IP]:[PORT:7001] 其中 "7001" 是 Docker 的主机端口号。

添加快捷链接后,可以直接点击 Docker 图标选择 WebUI 进入网页。

5.3 Extra Parameters 附加参数

附加参数是一个很容易被忽略的选项,很多作者在 Docker 发布页的参数列表上并不会列出附加参数,而是把它写在创建容器的命令里。比如在 FileBrowser 的说明文档里就没有提及附加参数这个选项,萌新可能会忽略了这个参数的填写。所以说在安装 Docker 的时候也要注意看一下它的命令行示例。

在 FileBrowser 说明文档后面,有作者写的通过命令行创建容器的示例代码:

IMAGE_NAME=80x86/filebrowser 

WEB_PORT=8082
FB_AUTH_SERVER_ADDR="127.0.0.1"
mkdir -p $HOME/docker/fb/config $HOME/docker/fb/myfiles #创建文件夹的命令
podman run -d --name fb \
  --restart=unless-stopped \ #附加参数:容器自动重启(这里不使用)
  -e PUID=$UID \             #变量:PUID
  -e PGID=$GID \             #变量:PGID
  -e WEB_PORT=$WEB_PORT \    #变量:端口号
  -e FB_AUTH_SERVER_ADDR=$FB_AUTH_SERVER_ADDR \  #变量:认证服务器地址(这里不使用)
  -p $WEB_PORT:$WEB_PORT \                       #端口映射:端口映射
  -v $HOME/docker/fb/config:/config \            #路径:配置文件路径
  -v $HOME/docker/fb/myfiles:/myfiles \          #路径:根目录路径
  --mount type=tmpfs,destination=/tmp \          #附加参数:设置临时文件挂载点
  ${IMAGE_NAME}:2.9.3-amd64

笔者在代码上进行了注释,可以看出来这段命令其实和创建 Docker 容器时配置参数的过程是一样的。仔细观察可以发现命令中有两行和其他行不太一样,分别是第一行 --restart=unless-stopped 和 最后一行 --mount type=tmpfs,destination=/tmp,这两行其实就是附加参数。

第一个附加参数的意思容易理解,它是保证容器在异常退出后自动重启的。第二个参数笔者一开始也不明所以,经过查找资料,才明白它的意思,它的意思是:在系统内存中分配一个用于存储 tmp 临时文件的磁盘,并挂载到 /tmp 容器路径上。这个参数是可以提高 Docker 性能的。所以在高级视图里把这段代码粘贴到 Extra Parameters 选项里,应用设置并重建容器。

Docker总结

虽然仓库中的 Docker 应用种类繁多,功能各异 ,但它们的配置方法其实和上文中的 FileBrowser 所差无几,无非是多几个需要配置的参数,所以在安装 Docker 的时候一定要仔细阅读说明文档,也要多参考网上其他作者写的教程。

Unraid 还可以通过 “Community Applications” 社区应用商店来安装 Docker,方法和上文大体相同,如果掌握了通过容器添加 Docker 的方法,那么通过社区商店安装 Docker 将触类旁通。

Community Applications

“Community Applications”(社区应用程序),包括 Unraid 社区的插件、Docker 容器和应用商城。若要安装,请转到“PLUGINS”(插件)标签页,选择“Install Plugin”(安装插件)并复制粘贴下列 URL 的其中之一:

https://gitee.com/BlueBuger/community.applications/raw/master/plugins/community.applications.plg

https://www.52help.net/ad/nas/Squidly271/community.applications/master/plugins/community.applications.plg

完成上述操作后,Unraid WebGUI 的顶部栏上方将会新增一个“APPS”(应用)选项卡。