调试技巧

Docker 容器调试方法和技巧


📋 目录


查看容器日志

基本命令

# 查看日志
docker logs my-container
 
# 实时查看日志
docker logs -f my-container
 
# 查看最后 N 行
docker logs --tail 100 my-container
 
# 查看带时间戳的日志
docker logs -t my-container

日志过滤

# 查看特定时间范围的日志
docker logs --since "2023-01-01T00:00:00" my-container
docker logs --until "2023-01-01T23:59:59" my-container

进入容器调试

使用 docker exec

# 进入运行中的容器
docker exec -it my-container /bin/bash
 
# 执行命令
docker exec my-container ls /app
 
# 以 root 用户执行
docker exec -u root my-container /bin/bash

使用 docker run

# 运行调试容器
docker run -it --rm --network container:my-container ubuntu:20.04 /bin/bash

网络调试

检查网络配置

# 查看容器网络
docker network inspect bridge
 
# 查看容器 IP
docker inspect -f '{{.NetworkSettings.IPAddress}}' my-container
 
# 测试网络连接
docker exec my-container ping 8.8.8.8

网络工具

# 安装网络工具
docker run -it --rm --network container:my-container nicolaka/netshoot
 
# 使用 curl 测试
docker exec my-container curl http://example.com

存储调试

检查挂载

# 查看容器挂载
docker inspect -f '{{.Mounts}}' my-container
 
# 检查数据卷
docker volume inspect my-volume

文件系统调试

# 检查文件系统
docker exec my-container df -h
 
# 检查文件权限
docker exec my-container ls -la /app

性能分析

资源监控

# 实时监控资源
docker stats my-container
 
# 查看容器资源限制
docker inspect -f '{{.HostConfig.Memory}}' my-container
docker inspect -f '{{.HostConfig.CpuShares}}' my-container

性能分析工具

# 使用 top 查看进程
docker exec my-container top
 
# 使用 htop(如果可用)
docker exec my-container htop

实用技巧

临时调试容器

# 创建临时调试容器
docker run -it --rm \
  --network container:my-container \
  --volumes-from my-container \
  ubuntu:20.04 \
  /bin/bash

复制文件

# 从容器复制文件
docker cp my-container:/app/logs/app.log ./app.log
 
# 复制文件到容器
docker cp ./config.json my-container:/app/config.json

📚 参考资源


相关笔记