附加到在 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 容器中正在运行的进程:
在 Visual Studio 中,选择 “调试”>“附加到进程”(CTRL+Alt+P) 打开“附加到进程 对话框。
将 连接类型 设置为 Docker(Linux 容器)。
通过“选择 Docker 容器”对话框选择“查找...”,以设置“连接目标”。
可以在本地或远程调试 Docker 容器进程。
在本地调试 Docker 容器进程:
将 Docker CLI 主机 设置为 本地计算机。
从列表中选择要附加到的正在运行的容器,然后点击“确定”。
远程调试 Docker 容器进程:
可以使用以下两个选项之一连接到 Docker 容器中正在运行的进程。 如果没有在本地计算机上安装 Docker 工具,则使用 SSH 的第一个选项是理想的选择。 如果确实在本地安装了 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# 容器进程。