0. 先看这里

本文假设你已对如下项有所有了解:

  1. 怎样连接或打开SSH?
  2. 命令行或shell是干嘛的?
  3. 这瓜保熟吗?

本文实践环境为群晖系统(但大都是docker的通用的处理)。
所使用的是docker-compose命令,或者说是v1版的docker compose。
docker compose v2版,暂未经过详细的测试,不确定某些compose写法是否适合。

volume2是其中一个卷(可以理解为Windows的某个磁盘)的名称,并不是固定的,在操作过程中要按自己实际情况。比如OpenWRT,插上U盘,可能是/mnt/sda1

另外,如无特殊说明,本文所有命令都是使用root执行。

0.1 如果此前用docker run的方式安装过,怎么办?

所谓docker run的方式,就是用命令行创建容器,而不是用本文所说的docker-compose。

  1. # docker run --name clouddrive ......

这种情况,最好先删除之前的容器(放心只要config目录还在,数据就还在),避免容器冲突:

docker stop clouddrive
docker rm clouddrive

1. 设置挂载点为共享挂载

sudo -i
mount --make-shared /volume2

为什么这行命令的最后,是/volume2呢?

  1. 假设准备用于挂载的目录是/volume2/clouddrive
  2. 通过df -h查看系统的挂载点情况:

image.png
可以发现,在Mounted on这一列,有/volume2,因为/volume2/clouddrive明显是在/volume2里,
所以mount --make-shared xxx,这里的xxx就应该写/volume2

大概明白这个规律即可,要深究就看linux mount相关的资料。

1.1 系统启动时自动make-shared

上面执行的命令不是一直有效的, 重启系统后就会化为泡影。
所以,有必要在系统启动时让它自动做好这件事。

示例1:群晖

进入:”控制面板” > “任务计划”
image.png
image.png
image.png

mount --make-shared /volume2

示例2:OpenWRT

好吧,实际上我并没有安装有OpenWRT的设备,但大概步骤跟下图应该没差的。
image.png

其他系统,可能需要用到命令行来解决。
可以搜索一下“xx系统 添加开机启动项”。

2. 创建用于挂载网盘目录的上级目录

这个/volume2/clouddrive是我在群晖的File Station里创建的一个共享目录,这样只要挂载成功后,就可以直接通过samba共享查看到挂载的网盘文件了。

# 这个目录会映射到CloudDrive容器里的`/CloudNAS`目录(见下面docker-compose.yml便知),
# CloudDrive会自动在该目录下创建一个名为`CloudDrive`的挂载点(目录),
# 到时候添加的网盘默认都是挂载在`CloudDrive`这个目录下面的(如/CloudNAS/天翼云盘)。
mkdir /volume2/clouddrive

# 用于存放配置、账号信息、缓存等数据的目录,
# 只要保留这个目录,删除或升级容器,之前的数据还是会在的,不会丢。
mkdir /volume2/clouddrive/config

注:较新版CloudDrive已经支持挂载网盘到任意目录。

3. 创建.env环境变量文件

cd /volume2/clouddrive

vim .env
# 按下 i 键,进入编辑模式
# 输入内容如下面代码块所示:
###### .env 文件内容 #######
# 通用的
TIMEZONE=Asia/Shanghai

# clouddrive
## 监听端口,默认9798
CLOUDDRIVE_PORT=9798

# 较新版的CloudDrive已经移除了FuseUID和FuseGID
# CLOUDDRIVE_PGID=0
# CLOUDDRIVE_PUID=0
# 按ESC,然后输入以下指令,保存文件
:wq

其实env文件并不是必须的,你也可以在docker-compose.yml文件里把相关信息写成固定的。

4. 创建docker-composer.yml文件

cd /volume2/clouddrive

vim docker-compose.yml

# Ctrl + c 复制下面代码块的内容。
# 因为每个人的路径不一定相同,这里建议先打开一个可以输入多行文本的工具(比如记事本),
# 把下面的内容复制进去,修改成符合自己实际情况的之后,再进行复制。
###### docker-compose.yml 文件内容 #######
version: '3'

services:
  clouddrive:
    image: cloudnas/clouddrive
    container_name: clouddrive
    # 之前的FuseUID和FuseGID已经移除
    # environment:

    volumes:
      - /volume2/clouddrive:/CloudNAS:shared
      - /volume2/clouddrive/config:/Config
      # 你可以指定更多目录,以用于任意挂载
      # - /volume2/movie:/oh_movie:shared

    devices:
      - /dev/fuse:/dev/fuse

    ports:
      - ${CLOUDDRIVE_PORT}:9798

    privileged: true

    restart: always

    network_mode: bridge

    # 作用:在CloudDrive的下载任务里查看是什么进程在读取文件
    pid: host

networks:
  bridge:
   external: true
# 输入以下指令,以进入粘贴模式(非粘贴模式下粘贴的话,可能会出现格式错乱!)
:set paste

# 然后按下 i 键,以进入编辑模式 【别忘了这一步!】

# 接着就是 Ctrl + v 粘贴了

# 粘贴成功后,按ESC,输入以下指令,保存文件
:wq

5. 执行docker-compose up -d

cd /volume2/clouddrive

# 如果以前没安装过clouddrive,建议先手动拉取一下镜像。
# 虽然,docker-compose up 也会自动拉取镜像,但本人曾遇到过拉取很慢的情况,
# 而先手动拉取,再compose,就很快。
# docker pull cloudnas/clouddrive

docker-compose up -d

6. 升级

用docker-compose的方式安装,升级是比较简单的!

cd /volume2/clouddrive

# 拉取新镜像
docker-compose pull

# 重建容器
docker-compose up -d

7. 卸载

数据无价,请谨慎操作!
建议先在CloudDrive后台退出账号。
注:这个卸载处理,只是把CloudDrive的容器删除,其他数据仍然是保留的,比如config目录。也就是说以后再安装,使用原来的config目录,之前的信息仍然是还在的。

sudo -i
cd /volume2/clouddrive

# 停止容器并删除(删除容器)
docker-compose down

by 上下九村士
转载请注明出处、链接