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

您的開發環境

您可以選擇在本地環境遠端環境中開發基於容器的服務。本地環境是您的開發者工作站的作業系統;使用本地環境意味著您將使用安裝在工作站上的 Docker 來構建和執行您的服務容器。Docker 支援 Windows、macOS 和各種 Linux 發行版;有關係統和硬體要求,請參閱Docker 安裝頁面

遠端開發環境與您的開發者工作站不同。它可以是可透過 SSH 訪問的遠端機器、在您的開發者工作站上執行的虛擬機器,或者開發容器。遠端環境可能比本地環境具有優勢,主要優勢在於能夠在開發期間和生產環境中執行服務時使用相同的作業系統。要使用遠端環境,您需要確保docker命令 (Docker CLI) 在該環境中可用且功能正常

第二個重要選擇是除錯作為普通程序執行的服務,還是除錯在容器中執行的服務。

選擇開發環境的指南

  1. 當您不關心以下情況時,請使用本地環境:

    • 開發和在服務容器內使用相同的作業系統。
    • 在本地環境中安裝必要的工具和依賴項。
  2. 如果您需要遠端環境,請首先考慮使用開發容器

  3. 在容器中除錯服務是可能的,但會帶來額外的複雜性。預設情況下使用正常除錯,並在需要時使用容器內除錯。

Container Tools 擴充套件原生支援 .NET、Node.js 和 Python 服務中的容器除錯。

在遠端開發環境中啟用 Docker CLI

在遠端開發環境中啟用 Docker CLI 的方式因您選擇的遠端環境型別而異。

開發容器

對於開發容器,您應該將容器內的 Docker CLI 重定向到本地計算機上執行的 Docker 守護程序。

首先,請確保 Docker CLI 已安裝到您的開發容器中。具體步驟取決於容器使用的 Linux 發行版

以下是基於 Ubuntu 的發行版的示例 (來自 .devcontainer/Dockerfile)

    ...
    && apt-get -y install software-properties-common \
    && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 2>/dev/null \
    && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" \
    && apt-get update -y \
    && apt-get install -y docker-ce-cli \
    && apt-get install -y python python-pip \
    && pip install docker-compose \
    ...

接下來,確保 Docker 套接字已對映到開發容器中 (在 .devcontainer/devcontainer.json 中)

    ...
    "runArgs": [ "-v", "/var/run/docker.sock:/var/run/docker.sock"]
    ...

適用於 Linux 的 Windows 子系統

適用於 Linux 的 Windows 子系統是 Windows 上進行基於容器的服務開發的絕佳選擇。強烈推薦使用適用於 Linux 的 Windows 子系統版本 2 (WSL 2)。Windows 版 Docker Desktop 已更新,可與 WSL 2 配合使用,並提供圖形化設定以在 WSL 2 發行版中啟用 Docker CLI。

Enable Docker inside WSL 2 distribution

要將 WSL 2 用於 Docker 開發,您需要 Windows 10 版本 2004 或更高版本,以及 Windows 版 Docker Desktop 版本 2.2.0.5 或更高版本。

舊版本的 WSL (WSL 1) 未提供連線到主機上 Docker 守護程序的便捷方法。

遠端機器

啟用遠端機器容器開發的推薦方法是在該機器上進行完整的 Docker 安裝,包括 Docker 守護程序。

注意:Docker Desktop 產品僅支援物理 Windows 和 macOS 機器,不支援虛擬機器。如果您想使用虛擬機器作為遠端開發環境,我們建議使用帶有Docker Engine 的 Linux VM。

在遠端機器上安裝並配置好 Docker 後,您可以從遠端開發擴充套件包中使用 VS Code 的遠端 - SSH 擴充套件來連線到您的遠端機器並在那裡工作。

  1. 開啟 VS Code 命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行命令 Remote-SSH: Add new SSH host...。按照提示設定到目標主機的連線。

  2. 執行命令 Remote-SSH: Connect to host... 並連線到主機。

  3. 將開啟一個新的 VS Code 視窗,在該目標機器的上下文中執行。如果您使用的是密碼身份驗證,則在此處會提示輸入密碼。我們強烈建議您設定SSH 金鑰身份驗證,以方便使用。

  4. 在 Extensions 檢視中,安裝 Container Tools 擴充套件 (在遠端主機上) (此步驟後可能需要重新載入)

    Screenshot - Installing the Container Tools extension

注意:如果您使用 Container Tools 擴充套件來構建容器映象並擁有原始碼,則上述方法可能意味著您的原始碼位於遠端主機上,而不是在您的開發者工作站上。如果您僅使用 Container Tools 擴充套件的 Container Explorer 功能,則可以忽略此項。

本地 Linux VM

要使用在您的開發者工作站上執行的 Linux 虛擬機器,您應該像在遠端機器上安裝 Docker 一樣,在 VM 中安裝 Docker,並使用VS Code Remote-SSH 擴充套件連線到 VM。

或者,您也可以僅在開發環境中安裝 Docker CLI,並使用Docker context 機制將 CLI 指向執行在開發者工作站上的 Docker host (engine)。這種方法的主要顧慮是確保 VM 與主機上的 Docker engine 之間的網路連線,並以安全的方式實現。一種方法是使用SSH 隧道Remote - Tunnels連線到開發者工作站。另一種方法是讓 Docker engine 在 HTTPS 埠上監聽。您需要精通 SSH 和公鑰基礎設施 (PKI) 才能從 VM 內執行的 Docker CLI 使用 host Docker engine。對於大多數使用者,我們建議在虛擬機器中進行完整的 Docker 安裝。

在容器中進行除錯

Container Tools 擴充套件支援除錯在容器中執行的 .NET 和 Node.js 服務。目前不支援其他程式語言。

在容器中進行除錯可能比常規除錯更難設定,因為容器比程序具有更強的隔離機制。具體來說:

  • 執行在 VS Code 程序內的除錯引擎需要與被除錯的服務程序進行通訊。對於在容器中執行的服務,這涉及到透過公共網路 (通常是 Docker host 網路) 進行網路通訊。容器需要透過 Docker host 網路公開適當的埠,以便除錯引擎連線到服務程序 (Node.js),或連線到容器內的偵錯程式代理 (.NET)。
  • 構建時生成的原始碼檔案資訊在構建環境 (VS Code 執行的環境) 的上下文中是有效的。容器檔案系統與構建環境檔案系統不同,需要重新對映原始碼檔案的路徑,以便在命中斷點時偵錯程式能夠顯示正確的原始碼檔案。

出於上述考慮,通常建議使用常規除錯,並在必要時採用容器內除錯。

有關如何在容器中設定除錯的更多資訊,請參閱ASP.NET Core 快速入門Node.js 快速入門Container Tools 擴充套件任務屬性 (docker-builddocker-run 任務)。

後續步驟

繼續閱讀以瞭解更多資訊

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