🚀 在 VS Code 中

在 WSL 2 中使用 Docker

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

去年六月,Docker 團隊宣布他們將投資讓 Docker 在 Windows Subsystem for Linux (WSL) 上執行。這一切都歸功於最近 WSL 架構的變更,使其能在輕量型虛擬機器 (VM) 中執行,我們在先前一篇關於 WSL 2 的部落格文章中討論過。自從這項宣布以來,Docker 團隊已發布 Docker 技術預覽版,其中包含支援在 WSL 2 上執行。

本文說明 Docker Desktop 技術預覽版的運作方式,以及如何搭配技術預覽版使用 Docker 擴充功能。

運作方式

這個新的 Docker 架構運作方式非常類似 Visual Studio Code 的 WSL 遠端開發 支援,主機上執行的 Docker CLI 在遠端 WSL VM 上執行的 Docker Integration Package 內執行命令。

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 測試人員慢速通道非常穩定,但您可能會遇到一些問題。如果您發現任何無法如預期運作的問題,請透過 Windows 中的意見反應工具開啟問題。任何直接的 Docker 問題或意見回饋都可以在 Docker for Windows 存放庫中記錄。

程式碼快樂!

Matt Hernandez,VS Code 專案經理 @fiveisprime