部署指南
在 Docker 里跑 CloudDrive2
镜像是 cloudnas/clouddrive2。容器里的挂载要能在宿主机上看见,宿主机的挂载传播得是 shared——很多系统默认就是,先查一下。这一页讲怎么查、必要时怎么开,以及一份可以直接复制的启动配置。
镜像
支持的架构
同一个镜像名下有三种架构的 tag,按宿主机的 CPU 选择。
| 架构 | Tag |
|---|---|
| x86-64 | amd64 |
| arm64 | arm64 |
| armv7 | arm32 |
如果遇到 Docker 镜像无法更新到最新版本的情况,请尝试禁止使用 Docker 镜像服务器(加速器),改为直接从官方源拉取。
运行前准备
先确认共享挂载是不是已经开着
容器里的挂载要能在宿主机上看见,宿主机那个目录的挂载传播必须是 shared。不少系统出厂就是开着的,先查一遍再决定要不要动。
CloudDrive 用 fuse3 挂载云存储。fuse3 要在 Docker 容器和宿主机之间共享挂载点,靠的就是这个传播属性;不是 shared 的话,容器里的挂载会直接失败并报「权限被拒绝」。
先查
把下面的路径换成你准备给容器用的那个目录:
findmnt -o TARGET,PROPAGATION /path/to/dir
PROPAGATION 那一列写着 shared 就说明已经开了,这一节可以整节跳过,直接看下面的启动配置。精简系统里没有 findmnt 的话,也可以直接看 /proc——输出里带 shared: 就是开着的:
grep ' / ' /proc/self/mountinfo
据我们所知,LibreELEC、CoreELEC 和飞牛 fnOS 不需要再做这一步。查一下确认即可,别白改。
没开的话怎么开
两个选项,按 Docker 的运行方式选一个即可。
选项 1 · Docker 以 systemd service 运行
在 Docker 服务中启用 MountFlags:
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
sudo systemctl restart docker.service
选项 2 · Docker 不是以 systemd service 运行
在宿主机上直接启用共享挂载选项。把 /path/to/dir 换成你准备给容器用的那个目录——和上面查的是同一个;df 会找出它所在的挂载点,mount --make-shared 再把那个挂载点设为共享:
sudo mount --make-shared $(df -P /path/to/dir | tail -1 | awk '{ print $6 }')
mount --make-shared 只在当前运行的系统中生效,重启后需要重新执行。如需重启后自动运行 CloudDrive,请把这条命令加入系统启动项。
使用方法
启动容器
Compose 与 CLI 两种写法等价,任选一种。
Docker Compose
version: "2.1"
services:
cloudnas:
image: cloudnas/clouddrive2
container_name: clouddrive2
environment:
- TZ=Asia/Shanghai
- CLOUDDRIVE_HOME=/Config
volumes:
- <path to accept cloud mounts>:/CloudNAS:shared
- <path to app data>:/Config
- <other local shared path>:/media:shared #optional media path of host
devices:
- /dev/fuse:/dev/fuse
restart: unless-stopped
pid: "host"
privileged: true
network_mode: "host"
Docker CLI
docker run -d \
--name clouddrive \
--restart unless-stopped \
--env CLOUDDRIVE_HOME=/Config \
-v <path to accept cloud mounts>:/CloudNAS:shared \
-v <path to app data>:/Config \
-v <other local shared path>:/media:shared \
--network host \
--pid host \
--privileged \
--device /dev/fuse:/dev/fuse \
cloudnas/clouddrive2
三个需要你自己填的路径
-
<path to accept cloud mounts>→/CloudNAS:shared云盘挂载出现的位置。带
shared标记,挂载才能传播回宿主机。 -
<path to app data>→/Config配置与数据目录,对应环境变量
CLOUDDRIVE_HOME=/Config。容器重建后配置要还在,这个卷就不能少。 -
<other local shared path>→/media:shared可选。宿主机上的其他本地目录,需要在 CloudDrive 里一起管理时才加。
配置
打开管理界面
http://<ip>:19798
容器跑起来之后,用浏览器访问宿主机的这个地址,就能注册账号、添加云存储、设置挂载点。后面所有事情都在这个界面里完成,详见帮助。