共用方式為


附加至 Docker 容器上執行的進程

您可以使用 Visual Studio 對在 Windows Docker 容器或 Linux .NET Core Docker 容器中執行的應用程式進行偵錯。

先決條件

如果 Linux 伺服器上尚未存在,您必須安裝 SSH 伺服器、使用 curl 或 wget 解壓縮並安裝。 例如,在 Ubuntu 上,您可以運行以下命令:

sudo apt-get install openssh-server unzip curl

也必須啟用安全檔案傳輸通訊協定 (SFTP)。 大部分的 SSH 散發套件預設會安裝並啟用 SFTP,但情況不一定如此。

附加至在Linux Docker容器上執行的進程

您可以使用 [附加至進程] 對話框,將 Visual Studio 調試程式附加至本機或遠端電腦上 Linux .NET Core Docker 容器中執行的進程。

重要

若要使用這項功能,您必須具有原始程式碼的本機存取權。

注意

您可以使用這些指示附加至透過 SSH 在 WSL 中執行的 Linux Docker,但您的 WSL 實例必須先執行 SSH 伺服器。 例如,您可以安裝 Open SSH Server(例如:sudo apt-get install openssh-server),編輯組態檔來設定伺服器(例如:/etc/ssh/sshd_config),然後啟動伺服器(例如:sudo service ssh start)。

若要附加至 Linux Docker 容器中的執行中進程:

  1. 在 Visual Studio 中,選取 [偵錯] > [附加至進程] > [CTRL+ALT+P] 以開啟 [附加至進程] 對話框。

  2. 連線類型 設定為 Docker (Linux Container)

    Visual Studio 中 [附加至行程] 對話框的螢幕快照,其中顯示 Docker (Linux 容器) 的連線類型。

    Visual Studio 中 [附加至行程] 對話框的螢幕快照,其中顯示 Docker (Linux 容器) 的連線類型。

  3. 選取 [尋找...],透過 [選取 Docker 容器] 對話方塊,設定 [連線目標]

    您可以在本機或遠端偵錯 Docker 容器進程。

    • 若要在本機偵錯 Docker 容器進程:

      1. Docker CLI 主機 設定為 本機電腦

      2. 從清單中選取要附加至的執行中容器,並按 [確定]

        Docker 容器選單的螢幕快照。

        Docker 容器功能表的螢幕截圖。

    • 若要從遠端偵錯 Docker 容器進程:

      您可以使用兩個選項之一,連線到 Docker 容器中的執行中進程。 如果您未在本機計算機上安裝 Docker 工具,則使用 SSH 的第一個選項是理想的選項。 如果您已在本機安裝 Docker 工具,而且您已將 Docker 精靈設定為接受遠端要求,請嘗試使用 Docker 精靈的第二個選項。

      • 若要透過 SSH 連線到遠端電腦:

        1. 選取 [增加...] 來連線到遠端系統。
          連線到遠端系統的螢幕快照。
          連線到遠端系統的螢幕快照。
        2. 輸入必要的連線資訊,然後選擇 [Connect]。
        3. 線上至 SSH 之後,選取要附加的執行中容器,然後選擇 [確定]
      • 若要透過 Docker 精靈,將目標設定為執行進程的遠端容器:

        1. Docker 主機 (選擇性)下指定精靈位址 (也就是透過 TCP、IP 等等),然後選擇 [重新整理]
        2. 成功連線到精靈之後,請選擇要附加的執行中容器,然後選擇 [確定] [確定]
  4. 可用的進程清單中選擇對應的容器進程,然後選取 [附加],以在Visual Studio中開始偵錯您的 C# 容器進程!

    Visual Studio 中 [附加至程序] 對話框的螢幕截圖。連接類型設置為 Docker(Linux 容器),並選擇 dotnet 程序。

    Visual Studio 中 [附件到進程] 對話框的螢幕截圖。連線類型設定為 Docker(Linux 容器),並選取 dotnet 進程。

附加至在 Windows Docker 容器上執行的進程

您可以使用 [附加至進程] 對話框,將 Visual Studio 調試程式附加至本機電腦上 Windows Docker 容器中執行的進程。

重要

若要搭配 .NET Core 程式使用此功能,您必須安裝 .NET Core 跨平台開發工作負載,並具有原始程式碼的本機存取權。

若要連接到 Windows Docker 容器中的執行中程序:

  1. 在 Visual Studio 中,選取 [偵錯] > [附加至進程] [或 CTRL+ALT+P] 來開啟 [[附加至進程] 對話框。

  2. 連線類型 設定為 Docker (Windows Container)

    Visual Studio 中 [附加至行程] 對話框的螢幕快照,其中顯示 Docker (Windows 容器) 的連線類型。

    Visual Studio 中 [附加至行程] 對話框的螢幕快照,其中顯示 Docker (Windows 容器) 的連線類型。

  3. 選取 [尋找...],在 [選取 Docker 容器] 對話框中,設定 [連線目標]

    重要

    目標進程必須與執行所在的 Docker Windows 容器具有相同的處理器架構。

    目前無法使用透過 SSH 將目標設定為遠端容器,而且只能使用 Docker 精靈來完成。

    若要透過 Docker 精靈,將目標設定為執行進程的遠端容器:

    1. Docker 主機 [選擇性] 底下指定精靈位址 (也就是透過 TCP、IP 等等),然後選擇 [重新整理]

    2. 成功連線到精靈之後,請選擇要附加的執行中容器,然後選擇 [確定] [確定]

  4. 從可用的 進程清單中選擇對應的容器進程,然後選取 [附加],以開始偵錯您的 C# 容器進程。

    在 Visual Studio 中,「附加到行程」對話框的螢幕截圖。連接類型已設定為 Docker(Windows 容器),並已選取 dotnet.exe 行程。

    Visual Studio 中 [附加至程序] 對話框的螢幕快照。連接類型設定為 Docker(Windows 容器),並選擇 dotnet.exe 程序。