在折腾完 RAID 之后,为了让作为 NAS 的 ArchLinux 发挥可用作应用服务器的作用,所以今天则要开始弄 Docker 了,废话不多说直接开始吧!

简介

安装 Docker

安装 Docker 的途径有两种,第一种是透过 pacman 直接安装 docker 官方包,而另一种则是透过 Arch 用户软件仓库(Arch User Repository,AUR)第三方用户仓库中生成并安装开发版本 docker-git,下面使用 pacman 演示安装流程:

1
2
3
4
# pacman -S docker
# systemctl start docker
# systemctl enable docker
# docker info
  1. 使用 pacman -S docker 下载并安装 docker
  2. 使用 systemctl start dockersystemctl enable docker 使 docker 服务启动与开机自启。
  3. 使用 docker info 查询 docker 当前运行状态,确保 docker 顺利安装并启动。

配置 Docker

为用户添加使用 docker 命令权限

为了让非 root 用户能正常使用 docker 命令,我们需要把目标用户添加到 docker 组内(如果组别不存在,你可以使用 groupadd docker 创建):

1
# usermod -a -G docker a9032676

并且登出账号重新登陆,输入 docker 确认是否已拥有权限使用。

配置 daemon.json 文件

daemon.json 文件是 docker 守护进程的运行配置

创建文件

首先使用 nano / vim 之类文本编辑器创建文件 /etc/docker/daemon.json

镜像加速服务

首先鉴于地区网络质量差异问题,在远程使用 docker pull 拉取镜像的时候可能会较慢,因此我们可以选择性地配置 docker 的镜像服务器加速下载:

1
2
3
4
5
6
7
8
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}

重启 docker 使配置生效:

1
# systemctl restart docker

迁移本地镜像目录

在安装完成之后默认的镜像存放位置是位于 /var/lib/docker 目录下方的,而我们需要透过添加 systemd 的配置以更改 docker 的镜像储存位置:

首先使用 mkdir 新增 docker.service.d 目录:

1
# mkdir /etc/systemd/system/docker.service.d/

然后在目录下新建 docker-storage.conf 文件,并添加下列内容:

1
2
3
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root=/path/to/new/location/docker -H fd://

--data-root 选项更改成你目标的目录并保存即可,再将 /var/lib/docker 内的内容复制到你的目录上。

完成之后我们需要使用如下命令重启下 docker.service 服务:

1
2
systemctl daemon-reload
systemctl restart docker

最后可使用 systemctl status docker 查询服务是否成功启动。

相关应用推荐

Portainer

简介

由于 docker 日常都需要使用命令行管理各种容器 / 镜像与网络设置等等这些东西,有没有一个方法能够可视化地编辑及部署容器呢?那当然是有的,答案就是 Portainer 啦!

仓库地址

portainer/portainer

部署容器

这里仅演示 Linux 平台的安装与方式,我们需要创建一个卷,并命名为 portainer 即可。另外容器本身需要两个端口运作,因此需要把任意两个外部端口映射成 80009000 即可:

1
2
# docker volume create portainer_data
# docker run -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

在正式跑起来之后进入网页后台 http://[your_address]:9000 创建新账号并登陆即可。

Samba

简介

Samba 提供了安全,可靠且快速的文件共享系统,且透过 SMB / CIFS 协议传输数据,并且完全兼容 DOS 与 Windows,OS/2,Linux 与其他更多的系统。

仓库地址

dperson/samba

部署容器

1
2
3
# docker run -it --name samba -p 139:139 -p 445:445 \
-v /path/to/directory:/mount \
-d dperson/samba

AriaNg

简介

很好用很方便的一个 Aria2 下载工具,自带网页可视化管理且完全兼容 Linux / 群晖 / FreeNAS 等系统。

仓库地址

auska/docker-aria2

创建容器

由于需要填写的变量以及选项较多,推荐直接于 Portainer 内直接下载并新建容器,当然这里也只讲述下命令行启动的方法:

1
2
3
4
5
6
# docker create --name=aria2_web \
-v /home/a9032676/downloads:/mnt \
-v /home/a9032676/.aria2_conf:/config \
-e PGID=1000 -e PUID=1000 -e SECRET=PASSWORD \
-p 6800:6800 -p 80:80 \
auska/docker-aria2

参数说明:

  • --name=<CONTAINER_NAME> 设置容器名字。
  • -v <DOWN_PATH>:/mnt 把容器内的 /mnt(默认下载存放位置) 目录映射到卷上,或可选择在宿主机(Host)上指定的目录挂载。
  • -v <CONF_PATH>:/config 同上,只不过这个是配置文件目录。
  • -e PGID=1000 -e PUID=1000 -e SECRET=<PASSWORD> 这里指定三个环境变量(Environment)参数,第一二个参数请使用 id USER 命令获取,而第三个为你的 RPC 服务器密钥,请自行更改。
  • -p <HOST_PORT>:6800 -p <HOST_PORT>:80 由于该容器需要两个端口,6800 为 RPC 服务监听端口,而 80 则为 Aria2 网页下载管理端口,请按照自己宿主机的端口进行映射。

Transmission

相信使用过 Transmission 下载 BT 文件的对它都不陌生,它的配置简洁,而且下载高效,且开源的性质,相信也吸引了很多人使用。而在 docker 上也有相关的第三方实现。

仓库地址

linuxserver/transmission

创建容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# docker create \
--name=transmission \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/HongKong \
-e TRANSMISSION_WEB_HOME=/combustion-release/ `#optional` \
-p 9091:9091 \
-p 51413:51413 \
-p 51413:51413/udp \
-v path to data:/config \
-v path to downloads:/downloads \
-v path to watch folder:/watch \
--restart unless-stopped \
linuxserver/transmission

参数说明:

  • -e PGID=1000 -e PUID=1000 请使用 id USER 命令获取 PGID 与 PUID。
  • -e TZ=Asia/HongKong 时区设置。
  • -e TRANSMISSION_WEB_HOME=/combustion-release/ 指定 WebUI 的目录位置(可选)。
  • -p 9091:9091 为你的 Transmission 下载网页端口
  • -p 51413:51413 -p 51413:51413/udp 为 Torrent 的 TCP 与 UDP 端口
  • -v path to data:/config 为配置目录
  • -v path to downloads:/downloads 为下载目录
  • -v path to watch folder:/watch Torrent 文件的 watch 目录