docker stats
:实时查看容器资源使用情况
docker stats --all --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}"
docker top
:查看容器内运行的进程
docker top <container_name>
Google开发的容器监控工具:
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
gcr.io/google-containers/cadvisor:latest
完整的监控解决方案: - 配置Prometheus抓取Docker指标 - 使用Grafana创建可视化仪表板
sysdig
:系统级监控工具netdata
:实时性能监控Portainer
:带监控功能的Docker管理UI检查CPU限制:
docker inspect <container> | grep -i cpu
识别CPU密集型进程:
docker exec -it <container> top
检查内存限制和实际使用:
docker stats --no-stream <container>
分析内存泄漏:
docker exec -it <container> free -m
docker run --rm -it \
--pid=host \
--privileged \
ubuntu bash -c \
'apt-get update && apt-get install -y iotop && iotop -o'
docker run --rm -it --net=host nicolaka/netshoot iftop
docker run -d \
--name=myapp \
--cpus=1.5 \ # 限制使用1.5个CPU核心
--memory=512m \ # 限制内存为512MB
--memory-swap=1g \ # 总内存+swap为1GB
--blkio-weight=500 \ # 块I/O权重
myapp:latest
yaml
resources:
requests:
cpu: "500m"
memory: "256Mi"
limits:
cpu: "1"
memory: "512Mi"
设置Prometheus告警规则示例:
groups:
- name: container-alerts
rules:
- alert: HighContainerCPU
expr: sum(rate(container_cpu_usage_seconds_total{name!=""}[1m])) by (name) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on container {{ $labels.name }}"
使用Grafana设置阈值告警
通过以上方法和工具的组合使用,您可以全面监控Docker容器的资源使用情况,并根据分析结果进行有针对性的优化,从而提高整体系统的资源利用率和稳定性。