部署指南

在 Docker 里跑 CloudDrive2

镜像是 cloudnas/clouddrive2。容器里的挂载要能在宿主机上看见,宿主机的挂载传播得是 shared——很多系统默认就是,先查一下。这一页讲怎么查、必要时怎么开,以及一份可以直接复制的启动配置。

镜像

支持的架构

同一个镜像名下有三种架构的 tag,按宿主机的 CPU 选择。

CloudDrive2 Docker 镜像支持的架构与对应 tag
架构Tag
x86-64amd64
arm64arm64
armv7arm32
镜像拉不到最新版本时

如果遇到 Docker 镜像无法更新到最新版本的情况,请尝试禁止使用 Docker 镜像服务器(加速器),改为直接从官方源拉取。

运行前准备

先确认共享挂载是不是已经开着

容器里的挂载要能在宿主机上看见,宿主机那个目录的挂载传播必须是 shared。不少系统出厂就是开着的,先查一遍再决定要不要动。

CloudDrive 用 fuse3 挂载云存储。fuse3 要在 Docker 容器和宿主机之间共享挂载点,靠的就是这个传播属性;不是 shared 的话,容器里的挂载会直接失败并报「权限被拒绝」。

先查

把下面的路径换成你准备给容器用的那个目录:

findmnt -o TARGET,PROPAGATION /path/to/dir

PROPAGATION 那一列写着 shared 就说明已经开了,这一节可以整节跳过,直接看下面的启动配置。精简系统里没有 findmnt 的话,也可以直接看 /proc——输出里带 shared: 就是开着的:

grep ' / ' /proc/self/mountinfo
这些系统默认就开着

据我们所知,LibreELECCoreELEC飞牛 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 }')
选项 2 重启后会失效

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

容器跑起来之后,用浏览器访问宿主机的这个地址,就能注册账号、添加云存储、设置挂载点。后面所有事情都在这个界面里完成,详见帮助

装在别的地方?

Windows、Linux、macOS、Android 和群晖/威联通的安装方式都在下面两页。