搜索

3.6. 在容器中调试应用程序

download PDF

您可以使用为故障排除的不同方面量身定制的各种命令行工具。以下提供了类别以及常用的命令行工具。

注意

这不是命令行工具的完整列表。调试容器应用程序的工具的选择主要基于容器镜像和您的用例。

例如,systemctl,journalctl,ip,netstat,ping,traceroute,perf,iostat 工具可能需要 root 权限,因为它们与系统级资源(如网络、systemd 服务或硬件性能计数器)进行交互,出于安全原因,他们在无根容器中受到限制。

无根容器的操作不需要提升特权,在用户命名空间中以非 root 用户身份运行,以提供改进的安全及与主机系统的隔离。它们通过缓解特权升级漏洞的风险,提供与主机有限的交互,降低了攻击面,并提高了安全性。

有根容器使用提升的特权运行,通常以 root 用户身份运行,对系统资源和功能授予完整的访问权限。虽然有根容器提供更大的灵活性和控制,但由于潜在的特权升级和主机系统暴露给漏洞,它们会带来安全风险。

有关根和无根容器的更多信息,请参阅 设置无根容器升级到无根容器,以及 对无根容器的特殊考虑

systemd 和进程管理工具

systemctl
在容器内控制 systemd 服务,允许启动、停止、启用和禁用操作。
journalctl
查看 systemd 服务产生的日志,帮助故障排除容器问题。

网络工具

ip
在容器中管理网络接口、路由和地址。
netstat
显示网络连接、路由表和接口统计信息。
ping
验证容器或主机之间的网络连接性。
traceroute
标识数据包到达目的地的路径,用于诊断网络问题。

进程和性能工具

ps
列出容器中当前运行的进程。
top
提供对容器内按进程的资源使用情况的实时洞察。
htop
用于监控资源使用率的交互式进程查看器。
perf
CPU 性能分析、追踪和监控,帮助识别系统或应用程序中的性能瓶颈。
vmstat
报告容器内的虚拟内存统计信息,帮助性能分析。
iostat
监控容器中块设备的输入/输出统计信息。
GDB (GNU 调试器)
一个命令行调试器,通过允许用户跟踪和控制其执行、检查变量,并在运行时分析内存和注册器来帮助检查和调试程序。如需更多信息,请参阅 在 Red Hat OpenShift 容器中调试应用程序 文章。
strace
拦截并记录程序发出的系统调用,通过揭示程序与操作系统之间的交互来帮助进行故障排除。

安全和访问控制工具

sudo
启用执行具有升级权限的命令。
chroot
更改命令的根目录,帮助在不同根目录中进行测试或故障排除。

podman 专用工具

podman logs
批量检索一个或多个容器在执行时存在的任何日志。
podman inspect
显示有关按名称或 ID 标识的容器和镜像的低级信息。
podman events
监控并打印 Podman 中发生的事件。每个事件都包括时间戳、类型、状态、名称(如果适用)和镜像(如果适用)。默认日志机制是 journald
podman run --health-cmd
使用健康检查来确定容器中运行的进程的健康状态或就绪状态。
podman top
显示容器的运行进程。
podman exec
在容器中运行命令或附加到正在运行的容器,对于更好地了解容器中发生的情况非常有用。
podman export
当容器出现故障时,基本上无法知道发生了什么。从容器中导出文件系统结构将允许检查可能不在挂载卷中的其他日志文件。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.