原文:Docker Desktop WSL 2 backend;
Docker Desktop WSL 2 后端
Windows Subsystem for Linux(WSL)2 采用了一個重大的體系結構變化,因為它是由Microsoft構建的完整的Linux內核,允許Linux容器在本機運行而無需模擬運行。在WSL 2上運行的Docker Desktop,用戶可以利用Linux工作區並避免維護Linux和Windows構建腳本。此外,wsl2還改進了文件系統共享、引導時間,並允許Docker桌面用戶訪問一些很酷的新功能。
Docker Desktop使用WSL2中的動態內存分配功能,大大提高了資源消耗。這意味着,Docker Desktop只使用所需數量的CPU和內存資源,同時使CPU和內存密集型任務(如構建容器)運行得更快。
另外,使用WSL 2,冷啟動后啟動Docker守護進程所需的時間明顯更快。啟動Docker守護進程所需時間不到10秒,而在Docker Deskto的前一版本中,這一時間幾乎為一分鍾。
先決條件
在安裝Docker Desktop WSL 2后端之前,必須完成以下步驟:
-
安裝Windows 10 2004版或更高版本。
-
在Windows上啟用WSL 2功能。有關詳細說明,請參閱用於 Linux 的 Windows 子系統安裝指南 (Windows 10)。
PS:參照文檔安裝Linux分發版,完成后先更新WSL 2 Linux 內核再啟動Linux 分發版,Linux分發版安裝完成后直接啟動可能報錯。錯誤代碼:0x800706be
-
下載並安裝Linux內核更新包。詳見更新 WSL 2 Linux 內核。
下載
下載Docker Desktop Stable 2.3.0.2版或者以后的版本
地址:https://www.docker.com/products/docker-desktop
安裝
在安裝Docker Desktop Stable 2.3.0.2版本之前確保已完成“先決條件”部分中描述的步驟。
-
按照通常的安裝說明安裝Docker Desktop。如果您運行的是受支持的系統,Docker Desktop會在安裝期間提示您啟用WSL2。閱讀屏幕上顯示的信息並啟用WSL 2以繼續。
-
啟動Docker Desktop。
-
從Docker菜單中,選擇Settings -> General。
-
選擇
Use WSL 2 based engine
復選框。 -
點擊 Apply & Restart
-
確保分發在WSL2模式下運行。WSK可以在v1或v2模式下運行發行版。
要檢查WSL模式,請運行
wsl -l -v
要將現有的Linux發行版升級到v2,請運行:
wsl --set-version (distro name) 2
-
當Docker Desktop重新啟動時,轉到Settings>Resources>WSL Integration。
WSL集成將在您的默認WSL發行版上啟用。要更改默認的WSL發行版,請運行
wsl --set-default <distro name>
例如,要將Ubuntu設置為默認的WSL發行版,請運行wsl --set-default ubuntu
。
或者,選擇要在其上啟用wsl2的任何附加發行版。
-
點擊 Apply & Restart
用Docker 和 WSL 2開發
以下部分介紹如何開始使用Docker和WSL2開發應用程序。我們建議您將代碼保存在默認的Linux分發中,以獲得使用Docker和wsl2的最佳開發體驗。在DockerDesktop上啟用WSL2之后,您可以開始在Linux發行版中使用代碼,理想情況下,您的IDE仍在Windows中。如果您使用的是VS Code,那么這個工作流可能非常直截了當。
- 打開VSCode並安裝遠程-WSL擴展。這個擴展允許您使用Linux發行版中的遠程服務器和仍在Windows上的IDE客戶端。
現在,您可以遠程使用VSCode。為此,請打開終端並鍵入:
wsl
code .
這會打開一個新的VSCode,它遠程連接到你默認的Linux發行版,您可以在屏幕的下角進行檢查。
或者,您可以在開始菜單中鍵入默認Linux發行版的名稱,打開它,然后運行code
。
當您在VS Code中時,您可以從您的Windows計算機使用VS Code中的終端來提取代碼,並開始本地工作。
最佳方法
-
在綁定裝載文件時獲取最好的文件系統性能:
-
在Linux文件系統存儲源代碼和其他被捆綁裝載到Linux容器的數據(i.e.,with
docker run -v <host path>:<container path>
),而不是在Windows文件系統。 -
如果原始文件存儲在Linux文件系統中,Linux容器只接受文件改變事件(“inotify事件”)。
-
當文件捆綁裝載在Linux文件系統中,而不是Windows時,性能要高得多。所以要避免
docker run -v /mnt/c/users:/users
(其中/mnt/c
從Windows裝載)。 -
取而代之的是,在Linux shell中使用一個命令,如
docker run -v ~/my-project:/sources <my-image>
其中~
由Linux shell擴展為$HOME
。
-
-
如果您擔心docker桌面數據VHDX的大小,或者需要更改它,請查看WSL tooling built into Windows .
-
如果您擔心CPU或內存使用情況,可以配置限制給分配到WSL 2 utility VM的內存、CPU、交換大小。
-
為了避免一切在Docker Desktop上使用WSL2的潛在沖突,在安裝Docker Desktop之前,您必須卸載Docker Engine的所有早期版本以及直接通過Linux發行版安裝的CLI。
反饋
你的反饋對我們很重要。請通過在Docker Desktop for Windows GitHub存儲庫創建問題並添加WSL 2標簽來讓我們知道你的反饋。