0. 先看这里
本文假设你已对如下项有所有了解:
- 怎样连接或打开SSH?
- 命令行或shell是干嘛的?
- 这瓜保熟吗?
本文实践环境为群晖系统(但大都是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。
# docker run --name clouddrive ......
这种情况,最好先删除之前的容器(放心只要config目录还在,数据就还在),避免容器冲突:
docker stop clouddrive
docker rm clouddrive
1. 设置挂载点为共享挂载
sudo -i
mount --make-shared /volume2
为什么这行命令的最后,是/volume2呢?
- 假设准备用于挂载的目录是
/volume2/clouddrive - 通过
df -h查看系统的挂载点情况:

可以发现,在Mounted on这一列,有/volume2,因为/volume2/clouddrive明显是在/volume2里,
所以mount --make-shared xxx,这里的xxx就应该写/volume2。
大概明白这个规律即可,要深究就看linux mount相关的资料。
1.1 系统启动时自动make-shared
上面执行的命令不是一直有效的, 重启系统后就会化为泡影。
所以,有必要在系统启动时让它自动做好这件事。
示例1:群晖
进入:”控制面板” > “任务计划”


mount --make-shared /volume2
示例2:OpenWRT
好吧,实际上我并没有安装有OpenWRT的设备,但大概步骤跟下图应该没差的。
其他系统,可能需要用到命令行来解决。
可以搜索一下“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 上下九村士
转载请注明出处、链接
