開啟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 中,參考
https://docs.microsoft.com/en-us/visualstudio/containers/troubleshooting-docker-errors?view=vs-2019#:~:text=You%20must%20be%20a%20member%20of%20the%20'docker-users',Expand%20Local%20Users%20and%20Groups,%20and%20choose%20Groups.
在計算機管理將用戶添加到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多機聯網,自定義用戶數據庫和文件存儲路徑,以及實際傳輸文件的性能。