現已釋出!閱讀關於 11 月新增功能和修復的內容。

在WSL 2中使用Docker

2020年3月2日,作者:Matt Hernandez,@fiveisprime

去年六月,Docker團隊宣佈他們將投入資源使Docker與適用於Linux的Windows子系統(WSL)協同執行。這一切都得益於WSL架構的最新變化,使其能夠在輕量級虛擬機器(VM)中執行,我們在較早的關於WSL 2的博文中討論過這一點。自宣佈以來,Docker團隊已經發布了Docker的技術預覽版,其中包括對WSL 2執行的支援。

本文將解釋Docker Desktop技術預覽版的工作原理,以及如何將Docker擴充套件與技術預覽版一起使用。

工作原理

這種新的Docker架構與Visual Studio Code的WSL遠端開發支援非常相似,即在主機上執行的Docker CLI在遠端WSL VM上執行的Docker整合包中執行命令。

Docker in WSL 2

圖片來源:Docker Engineering

DockerD直接在WSL內部執行,因此不再需要Hyper-V VM,所有Linux容器都在Windows上的Linux使用者空間內執行,從而提高了效能和相容性。

設定

首先是先決條件

安裝後,Docker會識別您已安裝WSL並提示啟用WSL整合。對於本教程,您需要啟用WSL整合

Docker Desktop WSL integration dialog

此選項將允許您直接從Linux發行版內部透過Docker CLI訪問Docker Desktop。

如果您有多個Linux發行版,請確保僅在Docker設定中為正確的發行版開啟WSL整合

Docker settings dialog

配置完成後,所有命令都將在Linux上下文中執行——這包括從PowerShell執行的Docker命令,因此執行諸如docker run mongo…之類的命令將在WSL VM中啟動一個Linux容器。

docker run mongo command

在WSL中執行docker ps命令,您將看到預期的容器。請注意容器ID是匹配的。

docker ps command in WSL

使用VS Code

完成設定並執行後,您可以安裝VS Code Docker擴充套件並訪問您的容器。如果您已經在使用WSL 2和WSL擴充套件,這將幫助您將Docker整合到WSL工作流中,而無需在需要容器時切換上下文。而且由於Docker CLI的上下文設定為使用WSL中的DockerD,因此無論您是否使用WSL擴充套件開啟VS Code,該擴充套件都將與您的容器協同工作。

請注意在下面的截圖中,我連線並正在WSL中工作,並且仍然在構建/執行容器,而無需更改我偏好的環境(Ubuntu中的zsh)。

VS Code working with containers in WSL

主題:Noctis Sereno

我個人注意到使用此配置後容器執行時間有了巨大的改進,並且我典型的開發工作流程的每個部分都保持不變。我還在WSL內部使用開發容器擴充套件來測試特定環境,而無需直接在我的機器上進行設定。

我們需要您的反饋

請記住,您正在使用預釋出軟體,雖然Windows Insiders Slow ring非常穩定,但您可能會遇到一些問題。如果您確實發現某些功能未按預期工作,請透過Windows中的反饋工具開啟問題。任何直接的Docker問題或反饋都可以在Docker for Windows repo中記錄。

編碼愉快!

Matt Hernandez,VS Code專案經理 @fiveisprime

© . This site is unofficial and not affiliated with Microsoft.