跳转至

容器调试技巧

容器日志分析

使用 docker logs 命令

docker logs 命令是查看容器日志的最基本方法。通过该命令,可以查看容器的标准输出(stdout)和标准错误输出(stderr)。

docker logs <container_id>

日志驱动配置

Docker 支持多种日志驱动,如 json-filesyslogjournald 等。可以通过配置日志驱动来将容器日志发送到不同的日志收集系统中。

docker run --log-driver=syslog --log-opt syslog-address=udp://localhost:514 <image>

第三方日志收集工具

使用 ELK Stack(Elasticsearch, Logstash, Kibana)等第三方日志收集工具,可以更高效地分析和可视化容器日志。

容器进程调试

使用 docker exec 命令

docker exec 命令允许用户在运行的容器内部执行命令。通过该命令,可以进入容器内部进行调试。

docker exec -it <container_id> /bin/bash

查看进程状态

在容器内部,可以使用 pstop 命令查看当前运行的进程状态。

ps aux
top

使用 stracegdb 进行进程调试

stracegdb 是常用的进程调试工具。strace 可以跟踪系统调用和信号,而 gdb 可以调试运行中的进程。

strace -p <pid>
gdb -p <pid>

容器网络诊断

使用 docker network inspect 命令

docker network inspect 命令可以查看容器的网络配置信息,包括 IP 地址、网关、DNS 配置等。

docker network inspect <network_id>

测试网络连通性

使用 pingcurl 命令可以测试容器的网络连通性。

ping <ip_address>
curl <url>

使用 tcpdumpWireshark 进行网络抓包分析

tcpdumpWireshark 是常用的网络抓包工具,可以用于分析容器的网络流量。

tcpdump -i eth0 -w capture.pcap

容器存储排查

使用 docker volume inspect 命令

docker volume inspect 命令可以查看数据卷的详细信息,包括挂载点、驱动类型等。

docker volume inspect <volume_name>

查看磁盘使用情况

在容器内部,可以使用 dfdu 命令查看磁盘使用情况。

df -h
du -sh /path/to/directory

使用 fsck 进行文件系统检查和修复

fsck 命令可以用于检查和修复文件系统错误。

fsck /dev/sdX

容器镜像调试

使用 docker image history 命令

docker image history 命令可以查看镜像的构建历史,包括每一层的命令和大小。

docker image history <image_name>

使用 docker image inspect 命令

docker image inspect 命令可以查看镜像的详细信息,包括创建时间、大小、环境变量等。

docker image inspect <image_name>

使用 dive 分析镜像层内容

dive 是一个用于分析 Docker 镜像层内容的工具,可以帮助用户优化镜像构建过程。

dive <image_name>