可以使用 Visual Studio 容器 窗口查看托管应用的 Docker 容器中的内容,以及查看容器映像。 如果用于运行 Docker 命令来查看和分析容器,此窗口提供了一种方便的方式监视和交互容器,而无需离开 Visual Studio IDE。
先决条件
- Docker Desktop
- Visual Studio 2022 或 Visual Studio 2019 版本 16.4 或更高版本。
- 对于 Docker Compose 节点:
- Visual Studio 2022 版本 17.7 或更高版本
- Docker v2,它随 Docker Desktop 一起安装,默认处于打开状态。
查看有关您的容器的信息
启动容器化 .NET 项目时, “容器 ”窗口会自动打开。 若要随时打开 “容器 ”窗口,请从 Visual Studio 菜单中选择“ 查看>其他 Windows>容器 ”。 还可以使用 Ctrl+Q 打开 Visual Studio 搜索框,键入 “容器”,然后选择 “容器 ”项。
窗口左侧显示本地计算机上的容器列表。 与当前解决方案关联的容器位于 解决方案容器下。 右侧是一个窗格,其中包含“环境”、“标签”、“端口”、“卷”、“文件”和“日志”选项卡。
启动容器化 .NET 项目时, “容器 ”窗口会自动打开。 若要随时打开“容器”窗口,请从 Visual Studio 菜单中选择“查看>其他 Windows>容器”,或按 CtrlK、Ctrl++O。 还可以使用 Ctrl+Q 打开 Visual Studio 搜索框,键入 “容器”,然后选择 “容器 ”项。
窗口左侧显示本地计算机上的容器列表。 与当前解决方案关联的容器位于 解决方案容器下。 右侧是一个窗格,其中包含“ 环境”、“ 标签”、“ 端口”、“ 卷”、“ 文件”、“ 日志”和 “详细信息”选项卡。
如果使用 Docker Compose 和 Visual Studio 2022 版本 17.7 或更高版本,则会看到节点树,其中包含解决方案的父节点和 Docker Compose 中注册的每个项目的子节点。
小窍门
默认情况下,调试器运行时, “容器 ”窗口停靠在 “监视 ”窗口中。 可以轻松自定义 容器 工具窗口停靠的位置。 请参阅 Visual Studio 中的自定义窗口布局。
查看环境变量
“ 环境 ”选项卡显示容器中的环境变量。 可以在 Dockerfile、 .env 文件中或使用使用 Docker 命令启动容器时使用 -e
选项来设置这些变量。
注释
对环境变量的更改不会实时反映。 此外,此选项卡中的环境变量是容器上的系统环境变量,而不是应用本地的用户环境变量。
查看标签
“ 标签 ”选项卡显示容器的标签。 标签是在 Docker 对象上设置自定义元数据的一种方式。 Visual Studio 自动设置某些标签。
查看端口映射
在“ 端口 ”选项卡上,可以检查容器的端口映射。 已知端口已连接,因此您可以选择相应的链接以通过浏览器打开主机端口地址。
查看卷
卷选项卡显示装载的文件系统节点或容器上的卷。
查看文件系统
在“ 文件 ”选项卡上,可以查看容器的文件系统,包括包含项目的应用文件夹。 通过使用“ 文件 ”选项卡,可以查看容器文件系统中的应用程序日志,例如 Internet Information Services (IIS) 日志、配置文件和其他内容文件。
注释
在 Visual Studio 2022 版本 17.7 或更高版本中,面向 .NET 8 或更高版本时,Dockerfile 可能包含 USER app
命令,该命令指定使用常规用户权限运行应用。 “ 文件 ”选项卡使用相同的权限,因此可能无法查看需要提升权限才能查看的文件夹。
若要在 Visual Studio 中打开文件,请双击该文件或右键单击该文件,然后选择“ 打开”。 Visual Studio 以只读模式打开文件。
在 Visual Studio 中打开文件以供查看的屏幕截图。
查看日志
“ 日志 ”选项卡显示命令的结果 docker logs
。 默认情况下,选项卡会在容器上显示 stdout
和 stderr
流,但你可以对输出进行配置。 有关详细信息,请参阅 Docker 日志记录。
默认情况下,“ 日志 ”选项卡将流式传输日志。 可以通过选择选项卡上的 “流日志” 按钮来暂停流。再次选择 “流日志” 以从中断处恢复流。
默认情况下,“ 日志 ”选项卡将流式传输日志。 可以通过选择选项卡上的 “流 ”按钮来暂停流。再次选择 Stream 以从其离开位置恢复流式传输。
若要清除日志,请使用“日志”选项卡上的“清除”按钮。若要获取所有日志,请使用“刷新”按钮。
注释
运行 Windows 容器而不进行调试时,Visual Studio 会自动将stdout
和stderr
重定向到输出窗口。 然后,这些日志不会显示在“ 日志 ”选项卡中。
如果将 Docker Compose 与 Visual Studio 2022 版本 17.7 或更高版本配合使用,则可以单独查看每个容器的日志或交错成单个输出流。 如果选择解决方案的父节点,则会看到所有 Compose 项目中的交错日志。 每行的第一列显示生成该输出行的容器。 如果只想查看一个容器的日志,请选择该项目的节点。
查看详细信息
“ 详细信息 ”选项卡以 JSON 格式显示有关容器配置的元数据和运行时信息。 此信息包括环境变量、端口、卷和其他运行时设置。
与容器交互
各种任务的确认对话框(例如删除容器和映像或一次启动 10 多个容器)可能会显示提示。 可以使用对话框窗口上的复选框禁用每个提示。
还可以使用“工具”>“选项”>“容器工具”>“容器工具窗口”中的设置来启用或禁用这些选项 。 有关详细信息,请参阅 “配置容器工具”。
还可以使用 “工具>选项>容器工具>容器”窗口中的设置启用或禁用这些选项。 有关详细信息,请参阅 “配置容器工具”。
启动、停止和删除容器
默认情况下, “容器 ”窗口显示 Docker 管理的计算机中的所有容器。 可以使用 “容器 ”窗口中的工具栏按钮启动、停止或删除容器。 容器列表在创建或删除容器时动态更新。
若要选择多个容器,例如一次删除多个容器,请使用 Ctrl+Select。 系统会提示你确认是否尝试一次启动或删除 10 多个容器。 如果需要,可以禁用确认提示。
在正在运行的容器中打开终端窗口
可以使用“容器”窗口中的“打开终端窗口”按钮在容器中打开终端窗口(命令提示符或交互式 shell)。
对于 Windows 容器,会打开 Windows 命令提示符。 对于 Linux 容器,将使用 Bash shell 打开一个窗口。
通常,终端窗口作为单独的窗口在 Visual Studio 外部打开。 如果要将命令行环境作为可停靠工具窗口集成到 Visual Studio IDE 中,可以安装 Whack Whack 终端。
如果在 Visual Studio 2022 版本 17.7 及更高版本中定位于 .NET 8,Dockerfile 可以包含 USER app
命令,这意味着应用以普通用户权限而不是以提升的权限运行。 终端以 Dockerfile 中指定的用户身份打开,.NET 8 项目默认为 app
。 如果未指定用户,终端将作为 root
用户运行。
将调试器附加到容器进程
可以使用“容器”窗口工具栏上的“附加到进程”按钮将调试器附加到容器中运行的进程。 使用此按钮时,将显示“ 附加到进程 ”对话框,并显示容器中正在运行的进程。
可以附加到容器中的托管进程。 若要在另一个容器中查找进程,请选择“附加到进程”对话框中的“查找”按钮,然后在“选择 Docker 容器”对话框中选择另一个容器。
查看图像
可以使用“容器”窗口左侧的“图像”选项卡在本地计算机上查看图像。 从外部存储库提取的映像在树视图中组合在一起。
右窗格包含适用于图像的选项卡: 标签 和 详细信息。 “ 详细信息 ”选项卡以 JSON 格式显示图像的配置详细信息。
右窗格包含适用于图像的选项卡: 标签、 详细信息和 图层。 “ 详细信息 ”选项卡以 JSON 格式显示图像的配置详细信息。
若要删除图像,请右键单击树视图中的图像,然后选择 “删除”,或选择该图像,然后选择工具栏上的 “删除 ”按钮。
删除容器和映像
通过选择“容器”窗口工具栏上的“修剪”按钮,可以轻松删除未使用的容器和映像。
- 如果选择了“ 容器 ”选项卡,系统会要求你确认要删除所有未使用的容器。
- 如果选择了“ 容器 ”选项卡,系统会要求确认要删除所有已停止的容器。
- 如果选择了“ 图像 ”选项卡,则提示询问是否要删除所有悬空图像。 悬空映像是不再与标记的映像关联的层的映像。 偶尔清理无关联的映像以帮助节省磁盘空间。