win10使用WSL 2運行Docker Desktop,運行文件從C盤遷移到其他目錄
前言
前幾天重裝系統,把系統升到了Windows 10 2004,然後在安裝Docker Desktop(2.3.0.3版本)時發現跟以前不太一樣了。現在Docker Desktop默認使用WLS 2來運行,而不是以前的Hyper-V。
WLS
WLS:適用於 Linux 的 Windows 子系統。
- 什麼是適用於 Linux 的 Windows 子系統?
適用於 Linux 的 Windows 子系統可讓開發人員按原樣運行 GNU/Linux 環境 – 包括大多數命令行工具、實用工具和應用程式 – 且不會產生虛擬機開銷。
- 什麼是 WSL 2?
WSL 2 是適用於 Linux 的 Windows 子系統體系結構的一個新版本,它支援適用於 Linux 的 Windows 子系統在 Windows 上運行 ELF64 Linux 二進位文件。 它的主要目標是提高文件系統性能,以及添加完全的系統調用兼容性。
安裝完後試了一下,最明顯的感覺就是開啟docker的速度大大提升!!!
但是以前設置鏡像位置的功能不見了:
看官網說明,原來,啟用WSL後,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理!
安裝docker後,docker會自動創建2個發行版:
- docker-desktop
- docker-desktop-data
WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中,這對C盤空間緊張的人非常不友好。。。
WSL發行版遷移
網上查了一下wsl發行版遷移,幾乎都是說使用LxRunOffline.exe
經過我試驗,LxRunOffline.exe確實可以遷移自己安裝的發行版,卻遷移不了docker自動創建的2個發行版!
最後只能去github提了個issues://github.com/docker/for-win/issues/7348
下面是操作方法:
-
首先關閉docker
-
關閉所有發行版:
wsl --shutdown
-
將docker-desktop-data導出到D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar(注意,原有的docker images不會一起導出)
wsl --export docker-desktop-data D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar
-
註銷docker-desktop-data:
wsl --unregister docker-desktop-data
-
重新導入docker-desktop-data到要存放的文件夾:D:\SoftwareData\wsl\docker-desktop-data\:
wsl --import docker-desktop-data D:\SoftwareData\wsl\docker-desktop-data\ D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar --version 2
只需要遷移docker-desktop-data一個發行版就行,另外一個不用管,它佔用空間很小。
完成以上操作後,原來的%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx就遷移到新目錄了:
重啟docker,這下不用擔心C盤爆滿了!
參考:
//docs.microsoft.com/zh-cn/windows/wsl/
//docs.docker.com/docker-for-windows/wsl/