附加到在 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 容器中运行的进程。
重要
若要使用此功能,必须对源代码具有本地访问权限。
附加到 Linux Docker 容器中正在运行的进程:
在 Visual Studio 中,选择“调试 > 附加到进程”(CTRL+ALT+P),打开“附加到进程”对话框。
将“连接类型”设置为“Docker (Linux 容器)”。
通过“选择 Docker 容器”对话框选择“查找...”,以设置“连接目标”。
可以在本地或远程调试 Docker 容器进程。
在本地调试 Docker 容器进程:
将“Docker CLI 主机”设置为“本地计算机”。
从列表中选择要附加到的正在运行的容器,然后点击“确定”。
远程调试 Docker 容器进程:
可以使用以下两个选项之一连接到 Docker 容器中正在运行的进程。 第一个选项是使用 SSH,它适用于未在本地计算机上安装 Docker 工具的情况。 如果在本地安装了 Docker 工具,并且具有配置为接受远程请求的 Docker 守护程序,请尝试第二个选项 - 使用 Docker 守护程序。
通过 SSH 连接到远程计算机:
- 选择“添加...”以连接到远程系统。
- 输入所需的连接信息,然后选择“连接”。
- 连接到 SSH 后,选择要附加到的正在运行的容器,然后选择“确定”。
- 选择“添加...”以连接到远程系统。
若要通过 Docker 守护程序将目标设置为正在运行进程的远程容器,请执行以下操作:
- 在“Docker 主机(可选)”下指定守护程序地址(即通过 TCP、IP 等),然后选择“刷新”。
- 成功连接到守护程序后,选择要附加到的正在运行的容器,然后选择“确定”。
从“可用进程”列表中选择相应的容器进程并选择“附加”,开始在 Visual Studio 中调试 C# 容器进程!
附加到正在 Windows Docker 容器上运行的进程
可以使用“附加到进程”对话框将 Visual Studio 调试器附加到正在本地计算机的 Windows Docker 容器中运行的进程。
重要
若要对 .NET Core 进程使用此功能,必须安装 .NET Core 跨平台开发工作负载,并对源代码具有本地访问权限。
附加到 Windows Docker 容器中正在运行的进程:
在 Visual Studio 中,选择“调试 > 附加到进程”(或 CTRL+ALT+P),打开“附加到进程”对话框。
将“连接类型”设置为“Docker (Windows 容器)”。
使用“选择 Docker 容器”对话框选择“查找...”,以设置“连接目标”。
重要
目标进程必须与运行它的 Docker Windows 容器具有相同的处理器体系结构。
当前无法通过 SSH 将目标设置为远程容器,而只能使用 Docker 守护程序来完成。
若要通过 Docker 守护程序将目标设置为正在运行进程的远程容器,请执行以下操作:
在“Docker 主机(可选)”下指定守护程序地址(即通过 TCP、IP 等),然后选择“刷新”。
成功连接到守护程序后,选择要附加到的正在运行的容器,然后选择“确定”。
从“可用进程”列表中选择相应的容器进程并选择“附加”,以开始调试 C# 容器进程。