參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

您的開發環境

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

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

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

選擇開發環境的指南

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

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

  3. 除錯在容器中執行的服務是可能的,但這會增加額外的複雜性。預設情況下使用常規除錯,並在需要時在容器中進行除錯。

容器工具擴充套件原生支援 .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 虛擬機器。

在遠端機器上安裝並執行 Docker 後,您可以使用 VS Code 的 Remote - SSH 擴充套件(來自 Remote Development 擴充套件包)連線到您的遠端機器並在那裡工作。

  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. 在擴充套件檢視中,安裝容器工具擴充套件(在遠端主機上)(此步驟後可能需要重新載入)。

    Screenshot - Installing the Container Tools extension

注意:如果您使用容器工具擴充套件構建容器映象並擁有原始碼,上述方法可能意味著您的原始碼在遠端主機上,而不是在您的開發人員工作站上。如果您只是使用容器工具擴充套件的容器資源管理器功能,則可以忽略此項。

本地 Linux 虛擬機器

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

或者,您可以在開發環境中只安裝 Docker CLI,並使用Docker 上下文機制將 CLI 指向在開發人員工作站上執行的 Docker 主機(引擎)。這種方法的主要問題是確保從虛擬機器到主機上的 Docker 引擎的網路連線,並以安全的方式進行連線。一個選項是使用SSH 隧道遠端隧道到開發人員工作站。另一個選項是讓 Docker 引擎監聽 HTTPS 埠。您需要精通 SSH 和公鑰基礎設施 (PKI) 才能從在虛擬機器中執行的 Docker CLI 使用主機 Docker 引擎。對於大多數使用者,我們建議在虛擬機器中進行完整的 Docker 安裝。

在容器中除錯

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

在容器中除錯可能比常規除錯更難設定,因為容器是一種比程序更強的隔離機制。特別是:

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

由於上述原因,通常建議使用常規除錯,並在必要時使用容器內除錯。

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

後續步驟

繼續閱讀以瞭解更多資訊