群晖使用rclone挂载本地alist

Monologue 发布于 2024-09-29 942 次阅读


AI 摘要

在这篇文章中,我们将深入探讨如何将本地的 Alist 通过 rclone 挂载到群晖上,让你在多个 Docker 容器之间实现文件的无缝共享与传播。使用共享挂载(--make-shared)将使得容器内的变化即时反映到宿主机,让你体验到真正的灵活和高效。无论是复杂的存储架构,还是简单的多容器管理,这都是你不可错过的操作技巧!准备好了吗?让我们开始吧!

废话不多说,直接上图,懂的都懂
file
file

以下命令均需要在root用户下执行

sudo su root

设置共享挂载:

mount --make-shared /volume1
#这行命令需要在计划任务添加触发任务开机自启以root用户执行

这个命令的目的是将 /volume1 挂载点设置为共享挂载(shared mount)。
具体要看你要挂载的目录在哪个volume
共享挂载的目的:
在 Linux 上,挂载点可以有不同的 "传播模式"(propagation mode)。这些模式决定了挂载点的变动(如新增、删除挂载)是否能够传播到其他挂载点,或者从其他挂载点传播回来。--make-shared 选项就是设置这个传播模式的一种。

当使用 --make-shared 选项时,挂载点上的任何变动(比如新增或移除的挂载)都会传播到使用该挂载点的其他挂载。简单来说:

共享挂载(shared mount):允许挂载的变化在容器和主机之间传播。这意味着如果你在容器内部挂载了某个目录,主机也会知道这个挂载的发生,反之亦然。
为什么要用 --make-shared?
你在使用 Docker 时,如果你在容器中进行挂载操作(比如 rclone 挂载一个远程存储),如果挂载点没有设置为共享模式,那么这个挂载只会在容器内部生效,宿主机无法感知到这些挂载。因此,如果需要容器内的挂载在宿主机上可见,那么就需要将宿主机的挂载点设置为共享挂载。

什么时候需要 --make-shared?
多容器之间共享挂载点:如果你希望在多个容器之间共享一个挂载点,并且希望这些容器可以感知挂载点的变化。
容器内挂载影响主机:如果你希望容器内部的挂载(比如通过 rclone 挂载的云存储)能够影响到主机上的文件系统。
复杂的存储架构:在一些复杂的存储架构中(例如使用 Kubernetes 和 Docker 的环境中),共享挂载有时是必需的。

放到同一个网络组

docker network create rclone_network

启动容器

alist容器

docker network connect rclone_network xhofe-alist-2
#假设你已经弄好了alist容器

rclone容器

docker run -d --name rclone2 --network rclone_network \
  --volume /volume1/docker/rclone1/config:/config \
  --volume /volume1/docker/rclone1/pan:/data:shared \
  --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined \
  rclone/rclone \
  mount webdav:/ /data \
  --allow-other \
  --allow-non-empty \
  --vfs-cache-mode writes \
  --config /config/rclone.conf

示例运行

rclone.conf可以由其他rclone创建后复制过来,也可以手动写
这里贴个webdav的

[webdav]
type = webdav
url = http://xhofe-alist-2:5244/dav
vendor = other
user = admin
pass = G3y4mqNG319TJV3yNyGeEW9beoh1695YjMmbjKo

密码需要在客户端先加密在填写

rclone obscure abcdefg    #abcd记得替换

最终成品:
file
file

此作者没有提供个人介绍。
最后更新于 2025-01-17