开启Linux子系统功能,在Windows商店下载安装Ubuntu 18.04 LTS
打开cmd,查看wsl版本
wsl -l -v
更改版本为 wsl 2
wsl --set-version Ubuntu-18.04 2
提示需要更新内核组件,访问 https://aka.ms/wsl2kernel,下载安装Linux kernel update后重新执行上述命令。
在Windows 10上安装Docker Desktop
本机为Windows 10家庭版,参考 https://docs.docker.com/docker-for-windows/install-windows-home/,在docker hub下载安装包并安装。
配置Docker Desktop
如果是标准用户,管理员身份安装docker desktop之后,可能作为标准用户无法启动,报错提示必须在 docker-users group 中,参考
在计算机管理将用户添加到docker-users组中,家庭版没有“本地用户和组”这个选项,因此只能把标准用户提升为管理员,或者升级到专业版,专业版系统中docker desktop还可以与hyper-v集成。
参考
https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers
配置wsl 2为后端引擎,启用与已安装的Linux分发版本集成。
在Ubuntu wsl上docker安装seafile
参考seafile服务器手册,下载docker-compose.yml,根据自己情况修改,本次未作修改。
打开Ubuntu wsl,把yml文件保存到子系统目录。在yml所在目录下,输入以下命令启动seafile服务:
docker-compose up -d
需要确定80端口未被占用,否则失败:
ERROR: for seafile Cannot start service seafile: driver failed programming external connectivity on endpoint seafile (b6ad93342001174bb2b92240782fb5585a7cdcf951b86d2a745fb4154cd1a1ea): Bind for 0.0.0.0:80 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
之后打开docker desktop,可以发现多了镜像和容器。
test是在wsl中创建的标准用户,上述命令也是在用test用户身份登录时输入的,可以发现 wsl 2结合 docker desktop,不需要必须是root才能用docker命令,而且可以直观地用图形界面管理镜像和容器。
也可以在wsl中用docker images 命令查看镜像。
打开seafile验证
在docker desktop中浏览器打开seafile,出现登录界面,可以按照seafile服务器手册以管理员身份登录,进一步配置。实际使用发现存在问题,网络错误,无法进行上传和下载,暂时还无法解决。
安装nextcloud
在powershell中
docker pull nextcloud
docker run -d -p 8080:80 nextcloud
安装nextcloud后可以上传下载,但是没有共享文件夹的方法,每个用户有自己的单独空间,只能单开一个账号专门用来共享。
总结
docker desktop加wsl 2的方式容易上手,但是还要考虑以下问题。
实机部署往往是纯Linux环境,更加复杂。
docker和下面容器的设置还需要以后深入研究,比如seafile多机联网,自定义用户数据库和文件存储路径,以及实际传输文件的性能。