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

下面是操作方法:

  1. 首先關閉docker

  2. 關閉所有發行版:
    wsl --shutdown

  3. 將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

  4. 註銷docker-desktop-data:
    wsl --unregister docker-desktop-data

  5. 重新導入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/

Tags: