附加到在 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 容器)

    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. 输入所需的连接信息,然后选择 连接
        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 容器)

    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 进程。