为何使用docker而不使用安装rclone为系统命令
群晖是一个相对封闭的系统,任何通过root自行安装的第三方软件,都有可能造成系统崩溃。而docker内的rclone,虽然也需要到ssh里用root进行操作,但是使用的都是群晖自带的软件,所以理论上不会造成系统问题。
对于rclone这个软件,在黑裙上使用了一年有余,没有出现过任何问题。但是最近由于生产环境的白群晖需要借用到rclone的功能,为了避免后续不必要的麻烦,所以就采用了docker版的rclone。
群晖Docker套件
1.1. 群晖自带了Docker套件,如果先前没有安装过的话,需要前往套件中心,先行安装Docker套件。
1.2. 进入Docker套件,安装rclone镜像。
1.3. 进入file station,创建配置文件及挂载文件夹。由于docker的便携性,我习惯将一个docker所需要用到的所有文件放在一起,方便于测试后打包放去正式环境。也更便于一键跑路
这里我在File Station能访问到的根目录下,创建了一个docker文件夹用于堆放所有docker的相关配置文件。其中rclone文件夹内就是rclone所需要用到的配置文件。
1.4. 这里的配置文件主要有两部分组成
rclone本身的配置(rclone_config文件夹)
image_2021-12-05_21-23-19.png .rclone.conf
就是配置文件
示例文件下载
- 挂载时所要调用到的sa文件(accounts.0-100文件夹)
这里堆放了自己申请的sa账户,sa的好处这里不在赘述。随便选其中一个sa账户的文件名,rclone配置文件的第五行,示例文件中使用了1.json
作为演示image_2021-12-05_21-29-22.png
1.5. 创建挂载团队盘的挂载点
- 这里使用 `mnt/example` 作为演示,成功挂载后,团队盘的根目录会出现在 `mnt/example` 中
连接ssh的后续操作
2.1. 通过ssh软件,连接群晖,并通过 sudo -i
升权至root账户,过程中会提示输入当前用户密码,此时输入密码不会有任何提示,输入正确密码后,回车即可切换至 root
账户
2.2. 输入以下命令,启动挂载
docker run \
-d \
--name mumiehub-rclone-opencd \
--restart=always \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--security-opt apparmor:unconfined \
-e RemotePath="gdmount01:" \
-e MountCommands="--allow-other --uid 1000 --gid 1000 --umask 022 --default-permissions --allow-non-empty --allow-other --buffer-size 32M --vfs-read-chunk-size=32M --vfs-read-chunk-size-limit 2048M --vfs-cache-mode writes --dir-cache-time 96h" \
-v /volume1/docker/rclone/rclone_config:/config \
-v /volume1/mnt/example:/mnt/mediaefs:shared \
-v /volume1/docker/rclone/accounts.0-100:/mnt/accounts.0-100/ \
mumiehub/rclone-mount:latest
2.3. 大部分人第一次操作会返回 docker ID
并伴随一个错误 linux mounts: path xx is mounted on xx but it is not a shared mount
此时需要输入如下指令使挂载点成为共享挂载点 sudo mount --make-shared /volume1
这里的volume1是指挂载点所在的盘,我的挂载点建立在 volume1
所以此处就以 volume1
做范例。
2.4. 如过出现 2.3 中的错误,并按照方法已经处理完,先使用 docker rm <2.3中返回的docker ID>
再使用 2.2 中的命令,重新启动docker进行挂载。
2.5. 成功挂载后,会简单的返回一个 docker ID
回到File Station内,即可在挂载点内看到所挂载团队盘的内容。