WebDAV,全称是 Web Distributed Authoring and Versioning,中文常译为"基于 Web 的分布式创作与版本控制协议"。
步骤:
-
拉取适合 arm 版的 docker 镜像:
docker pull mar10/wsgidav:release-4.3.3
release-4.3.3: Pulling from mar10/wsgidav
6e771e15690e: Pull complete
f88e0568d87b: Pull complete
45ccf01a8316: Pull complete
5f200fdec155: Pull complete
07f63b76f6fe: Pull complete
ad7530d583ae: Pull complete
5ee1ffa07d68: Pull complete
Digest: sha256:1df53045677caee724756e7eab789d33b8854380cc750e368a15df9eec27e988
Status: Downloaded newer image for mar10/wsgidav:release-4.3.3
docker.io/mar10/wsgidav:release-4.3.3 -
分配个短名称,利于记忆:
docker tag mar10/wsgidav:release-4.3.3 webdav -
在 /mnt 下建立目录名,并挂载准备做为 webdav 共享的数据盘:
mkdir -p /mnt/webdav
mount /dev/sde1 /mnt/webdav
#查看一下,确认挂载好了,这里的块设备 /dev/sde1 下事先建了个 dav 目录,做为 webdav 数据共享的根目录:
df -h /mnt/webdav
ls /mnt/webdav/dav -
运行 docker ,把 webdav 的 8080 端口映射到宿主机的 8081 上,方便访问:
docker run -d --name webdav --restart unless-stopped -p 8081:8080 -v /mnt/webdav/dav:/var/wsgidav-root webdav:latest
-
在网页上做测试:http://127.0.0.1:8081
-
可以看到目录了,但是无法上传,没关系,下一个支持 webdav 连接的工具如 gigolo 就可以上传了,当然需要事先把 dav 目录权限设置为所有人可读写

-
不用的时候,可以 docker stop webdav,用的时候重新 start
Tips:
mount只能挂载块设备,不能直接挂载块设备下的目录。
因为 mount 的作用对象是文件系统,不是文件系统里的某个子目录。/dev/sde1 是一个块设备,它上面有一个文件系统;在 mount 命令里,不能直接挂载 块设备/目录,不能像路径一样往下走。
块设备(如 /dev/sde1)和它内部的文件系统是两层概念。挂载时,内核需要知道"把哪个文件系统挂到哪个目录上"。/dev/sde1 代表整个分区,mount /dev/sde1 /mnt/webdav 的意思是"把这个分区上的文件系统挂到 /mnt/webdav"。
分区内部的 webdav 子目录,是文件系统挂载之后才能看到的路径,挂载动作本身发生在它之前,所以不能直接写成挂载源。