前言
前幾天重裝系統,把系統升到了Windows 10 2004,而後在安裝Docker Desktop(2.3.0.3版本)時發現跟之前不太同樣了。如今Docker Desktop默認使用WLS 2來運行,而不是之前的Hyper-V。git
WLS
WLS:適用於 Linux 的 Windows 子系統。github
- 什麼是適用於 Linux 的 Windows 子系統?
適用於 Linux 的 Windows 子系統可以讓開發人員按原樣運行 GNU/Linux 環境 - 包括大多數命令行工具、實用工具和應用程序 - 且不會產生虛擬機開銷。docker
- 什麼是 WSL 2?
WSL 2 是適用於 Linux 的 Windows 子系統體系結構的一個新版本,它支持適用於 Linux 的 Windows 子系統在 Windows 上運行 ELF64 Linux 二進制文件。 它的主要目標是提升文件系統性能,以及添加徹底的系統調用兼容性。windows
安裝完後試了一下,最明顯的感受就是開啓docker的速度大大提高!!!
工具
可是之前設置鏡像位置的功能不見了:
看官網說明,原來,啓用WSL後,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理!
性能
安裝docker後,docker會自動建立2個發行版:spa
- docker-desktop
- docker-desktop-data
WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中,這對C盤空間緊張的人很是不友好。。。
命令行
WSL發行版遷移
網上查了一下wsl發行版遷移,幾乎都是說使用LxRunOffline.execode
通過我試驗,LxRunOffline.exe確實能夠遷移本身安裝的發行版,卻遷移不了docker自動建立的2個發行版!blog
最後只能去github提了個issues:https://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盤爆滿了!
參考:
https://docs.microsoft.com/zh-cn/windows/wsl/
https://docs.docker.com/docker-for-windows/wsl/