你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

连接到 Azure 容器应用中的容器调试控制台

Azure 容器应用平台提供调试控制台,便于在以下情况下对应用程序进行故障排除:

  • 使用仅包含应用程序及其运行时依赖项的容器或“无分发版”映像时,无法连接到目标容器。
  • 遇到网络问题时,映像没有调试实用程序可用于调查问题。

可以使用 Azure CLI 连接到调试控制台。

注意

调试控制台创建一个单独的容器,此容器与运行应用的容器共享基础资源。 如果调试容器已存在,调试控制台会重复利用现有容器,而不是创建新容器。 每个容器应用副本最多一个运行的调试容器。 如果无需调试容器保持运行状态,请在调试控制台会话中输入 exit 或使用 Ctrl/Cmd + D

Azure CLI

若要连接到容器控制台,请使用 az containerapp debug 命令。 若要退出控制台,请输入 exit 或使用 Ctrl/Cmd + D

例如,使用以下命令连接到包含单个容器的容器应用中的容器调试控制台。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为容器应用的值。

az containerapp debug \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP>

若要连接到包含多个修订、副本和容器的容器应用中的容器调试控制台,请在 az containerapp debug 命令中加入以下参数。

Argument 说明
--revision 要调试的容器的修订名称。
--replica 要调试的容器的副本名称。
--container 要调试的容器的容器名称。

可使用 az containerapp revision list 命令获取修订名称。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为容器应用的值。

az containerapp revision list \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --query "[].name"

使用 az containerapp replica list 命令获取副本和容器名称。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为容器应用的值。

az containerapp replica list \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --revision <REVISION_NAME> \
  --query "[].{Containers:properties.containers[].name, Name:name}"

使用 az containerapp debug 命令连接到容器调试控制台。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为容器应用的值。

az containerapp debug \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --revision <REVISION_NAME> \
  --replica <REPLICA_NAME> \
  --container <CONTAINER_NAME> 

调试控制台中的内置工具

调试控制台中已预安装以下诊断工具,便于你排查问题:

如果要安装其他工具,请运行 tdnf install -y <TOOL_NAME> 命令。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为容器应用的值。

例如,使用以下命令在调试控制台中安装 JDK:

tdnf install -y msopenjdk-17

方案 - 通过调试控制台访问容器的文件系统

默认情况下,调试控制台以根用户身份运行。

如果容器以根用户身份运行,你将可以访问 /proc/1 以访问容器的文件系统。 如果容器未以根用户身份运行,请在访问 /proc/1 目录之前运行以下命令来切换用户,否则会收到权限被拒绝错误。

switch-user