3.5. 在容器中调试应用程序
您可以使用为故障排除的不同方面量身定制的各种命令行工具。以下提供了类别以及常用的命令行工具。
注意
这不是命令行工具的完整列表。调试容器应用程序的工具的选择主要基于容器镜像和您的用例。
例如,systemctl
,journalctl
,ip
,netstat
,ping
,traceroute
,perf
,iostat
工具可能需要 root 权限,因为它们与系统级资源(如网络、systemd 服务或硬件性能计数器)进行交互,出于安全原因,他们在无根容器中受到限制。
无根容器的操作不需要提升特权,在用户命名空间中以非 root 用户身份运行,以提供改进的安全及与主机系统的隔离。它们通过缓解特权升级漏洞的风险,提供与主机有限的交互,降低了攻击面,并提高了安全性。
有根容器使用提升的特权运行,通常以 root 用户身份运行,对系统资源和功能授予完整的访问权限。虽然有根容器提供更大的灵活性和控制,但由于潜在的特权升级和主机系统暴露给漏洞,它们会带来安全风险。
有关 rootful 和 rootless 容器的更多信息 ,请参阅使用 podman RHEL 系统角色和无根容器创建带有绑定挂载 的无根容器。
- systemd 和进程管理工具
-
systemctl
: 控制容器内的 systemd 服务,允许启动、停止、启用和禁用操作。journalctl
:查看 systemd 服务生成的日志,有助于对容器问题进行故障排除。 - 网络工具
-
IP
:管理容器内的网络接口、路由和地址。netstat
:显示网络连接、路由表和接口统计信息。Ping
:验证容器或主机之间的网络连接。traceroute
:标识数据包到达目的地的路径数据包,可用于诊断网络问题。 - 进程和性能工具
-
ps
:列出容器内当前运行的进程。top
:提供容器内进程实时洞察资源使用的实时见解。H
top : 用于监控资源使用率的交互进程查看器。perf
:CPU 性能分析、追踪和监控,帮助查明系统或应用中的性能瓶颈。vmstat
:报告容器内的虚拟内存统计信息,帮助进行性能分析。iostat
:监控容器内块设备的输入/输出统计信息。GDB (GNU Debugger):一个命令行调试程序,通过允许用户跟踪和控制其执行、检查变量以及运行时注册,帮助检查程序检查和调试程序。如需更多信息,请参阅 在 Red Hat OpenShift 容器中调试应用程序 文章。
strace
:中断并记录程序发出的系统调用,通过发现程序和操作系统之间的交互来协助故障排除。 - 安全和访问控制工具
-
sudo
:启用以升级的权限执行命令。chroot
:更改命令的根目录,有助于在不同根目录中测试或进行故障排除。 - podman 专用工具
-
Podman logs
: 在执行时为一个或多个容器存在Batch-retrieves any 日志。Podman inspect
:显示容器和镜像(按名称或 ID 标识)的低级别信息。Podman 事件
:监控和打印 Podman 中发生的事件。每个事件都包括时间戳、类型、状态、名称(如果适用)和镜像(如果适用)。默认日志机制是journald
。podman run --health-cmd
:使用健康检查来确定容器中运行的进程的健康状态或就绪状态。Podman top
:显示容器的运行进程。Podman exec
: 在 或附加到正在运行的容器中运行命令非常有用,以更好地了解容器中发生的情况。Podman export
: 当容器出现故障时,基本上不知道发生的情况。从容器中导出文件系统结构将允许检查可能不在挂载卷中的其他日志文件。