🚀 在 VS Code 中取得

您的開發環境

您可以選擇在本機環境或遠端環境中開發以容器為基礎的服務。本機環境是您開發人員工作站的作業系統;使用本機環境表示您使用工作站上安裝的 Docker 建置和執行服務容器。Windows、macOS 和各種 Linux 發行版本均支援 Docker;如需系統和硬體需求,請參閱 Docker 安裝頁面

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

第二個重要的選擇是偵錯以一般程序執行的服務,還是偵錯在容器中執行的服務。

選擇開發環境的指南

  1. 當您不擔心下列事項時,請使用本機環境

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

  3. 在容器中偵錯服務是可行的,但會帶來額外的複雜性。預設情況下使用一般偵錯,並在需要時使用容器中的偵錯。

Docker 擴充功能原生支援以 .NET、Node.js 和 Python 為基礎之服務的容器偵錯。

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

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

開發容器

對於開發容器,您應該將容器內的 Docker CLI 重新導向至在本機電腦上執行的 Docker daemon。

首先,請確定 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 socket 已對應至開發容器中 (在 .devcontainer/devcontainer.json 中)

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

適用於 Linux 的 Windows 子系統

適用於 Linux 的 Windows 子系統是在 Windows 上進行以容器為基礎之服務開發的絕佳選擇。強烈建議使用適用於 Linux 的 Windows 子系統版本 2 (WSL 2)。Docker Desktop for Windows 已更新為可與 WSL 2 搭配使用,並具有圖形化設定,可在 WSL 2 發行版本中啟用 Docker CLI

Enable Docker inside WSL 2 distribution

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

舊版 WSL (WSL 1) 未提供簡易的方式來連線至主機上的 Docker daemon。

遠端機器

使用遠端機器啟用容器開發的建議方式是在機器上進行完整的 Docker 安裝,包括 Docker daemon。

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

在遠端機器上安裝並運作 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. 在 [擴充功能] 檢視中,安裝 Docker 擴充功能 (在遠端主機上) (此步驟之後可能需要重新載入)

    Screenshot - Installing the Docker extension

注意:如果您使用 Docker 擴充功能來建置 Docker 映像並具有原始碼,則上述方法可能表示您的原始碼登錄在遠端主機上,而不是在您的開發人員工作站上。如果您僅將 Docker 擴充功能用於 Docker Explorer 功能,則可以忽略此事項。

本機 Linux VM

若要使用在您的開發人員工作站上執行的 Linux 虛擬機器,您應該在 VM 上安裝 Docker,方式與在遠端機器上安裝 Docker 的方式相同,並使用 VS Code Remote-SSH 擴充功能連線至 VM。

或者,您可以在開發環境中僅安裝 Docker CLI,並使用 Docker context 機制,將 CLI 指向在開發人員工作站上執行的 Docker 主機 (引擎)。此方法的主要考量是確保從 VM 到主機上 Docker 引擎的網路連線能力,並以安全的方式進行。其中一個選項是使用SSH 通道Remote - Tunnels 連線至開發人員工作站。另一個選項是讓 Docker 引擎接聽 HTTPS 連接埠。您需要精通 SSH 和公開金鑰基礎架構 (PKI),才能從 VM 內執行的 Docker CLI 使用主機 Docker 引擎。對於大多數使用者,我們建議在虛擬機器中完整安裝 Docker。

在容器中偵錯

Docker 擴充功能支援偵錯在容器內執行的 .NET 和 Node.js 型服務。目前不支援其他程式設計語言。

在容器中偵錯可能比一般偵錯更難設定,因為容器是比程序更強大的隔離機制。尤其

  • 在 VS Code 程序中執行的偵錯引擎需要與正在偵錯的服務程序通訊。如果服務在容器內執行,則表示需要透過通用網路 (通常是 Docker 主機網路) 進行網路通訊。容器需要透過 Docker 主機網路公開適當的連接埠,偵錯引擎才能連線至服務程序 (Node.js) 或在容器內執行的偵錯工具 Proxy (.NET)。
  • 在組建時間產生的原始檔資訊在組建環境 (VS Code 執行所在位置) 的內容中有效。容器檔案系統與組建環境檔案系統不同,且需要重新對應原始檔的路徑,偵錯工具才能在命中中斷點時顯示正確的原始檔。

由於上述考量,一般建議使用一般偵錯,並在必要時才在容器中使用偵錯。

如需關於如何在容器內設定偵錯的詳細資訊,請參閱 ASP.NET Core 快速入門Node.js 快速入門Docker 擴充功能工作屬性 (docker-builddocker-run 工作)。

後續步驟

請繼續閱讀以深入瞭解