拉取镜像
1
| docker pull bytemark/webdav
|
通过docker启动
1 2 3 4 5
| mkdir <本机的webdav共享文件夹目录> docker run --restart always -v <本机的webdav共享文件夹目录>:/var/lib/dav/data \ -e AUTH_TYPE=Digest -e USERNAME=test01 -e PASSWORD=123 \ --publish 80:80 --name webdav \ -e LOCATION=/webdav -d bytemark/webdav
|
停止容器
通过docker-compose启动(推荐)
将配置写入yaml避免每次启动带一堆参数
1 2 3 4
| mkdir mkdir compose cd compose vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| version: '1' services: webdav: container_name: mydav image: bytemark/webdav restart: always ports: - "80:80" environment: AUTH_TYPE: Digest USERNAME: test01 PASSWORD: 123 volumes: - <本机的webdav共享文件夹目录>:/var/lib/dav/data
|
启动docker-compose
此时可以访问服务器的ip,能看到共享文件夹的内容
关闭
设置密码
除了在docker-compose.yml中设置密码也可以将验证信息写入文件user.passwd,这样可以多用户访问,并且密码更改可以不用重启docker-compose
1 2 3 4 5 6
| yum install httpd-tools
touch user.passwd htdigest -c user.passwd WebDAV <你的用户名>
|
htdigest用法
中文乱码修复
通过测试发现,当文件名中出现中文时会出现乱码,解决方案参考issue
1 2 3
| docker ps docker exec -it <容器id> /bin/bash vi conf/conf-enabled/dav.conf
|
1 2 3 4 5 6 7 8 9 10 11 12
| <Directory "/var/lib/dav/data/"> Dav On Options Indexes FollowSymLinks
AuthType Basic AuthName "WebDAV" IndexOptions Charset=utf-8 <-----------添加这一行 AuthUserFile "/user.passwd" <RequireAny> Require valid-user </RequireAny> </Directory>
|
从容器创建一个新的镜像
1
| docker commit <容器id> bytemark/webdav:v1.1
|
最终的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| version: '1' services: webdav: container_name: mydav image: bytemark/webdav:v1.1 restart: always ports: - "80:80" environment: LOCATION: /dav AUTH_TYPE: Digest ANONYMOUS_METHODS: '' volumes: - <本机的webdav共享文件夹目录>:/var/lib/dav/data - /root/compose/user.passwd:/user.passwd
|
客户端测试
windows
客户端使用RaiDrive进行测试,可以将webdav的共享文件夹挂载到本地硬盘
如果是http不勾选地址,端口使用80
设置完成后在文件资源管理器中看到挂载的共享盘,使用方式和正常的文件夹相同
mac
右键访达连接服务器,输入http:///dav,按提示输入账户密码即可使用
ref
参考
Run your own WebDAV server with Docker
Docker使用WebDav服务器
docker-webdav github