Docker容器資源監(jiān)控的終極指南
核心痛點
容器化應(yīng)用突發(fā)高負(fù)載、內(nèi)存泄漏等問題時常困擾運維團隊。掌握以下監(jiān)控手段,5分鐘內(nèi)精準(zhǔn)定位資源瓶頸:
一、原生監(jiān)控三板斧
1. 實時資源儀表盤:docker stats
docker stats --no-stream [容器名]
輸出解讀
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS nginx 0.12% 35.8MiB / 1.944GiB 1.8% 1.2kB / 0B 0B / 0B 3 mysql 45.7% 1.2GiB / 2GiB 60.0% 15.4MB/3.2MB 2.1GB/0B 28
關(guān)鍵字段:
- CPU%:單核滿載=100%,四核滿載=400%
- MEM USAGE/LIMIT:當(dāng)使用量接近Limit需警惕OOM
- PIDS:進(jìn)程數(shù)突增預(yù)示程序異常
2. 進(jìn)程級洞察:docker top
docker top mysql_container -o pid,ppid,user,cmd,%cpu,%mem
輸出示例
PID PPID USER CMD CPU% MEM% 6723 6718 mysql mysqld 24.3 18.7 6789 6723 mysql mysqld_safe 0.2 0.5
3. 磁盤空間監(jiān)控
docker system df -v
輸出分析:
TYPE ACTIVE RECLAIMABLE Images 5 1.2GB (35%) Containers 8 350MB (22%) Volumes 3 800MB (61%)
二、企業(yè)級監(jiān)控方案
1. cAdvisor + Prometheus + Grafana 黃金組合
部署架構(gòu):

快速部署
# 啟動cAdvisor
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--publish=8080:8080 \
--name=cadvisor \
google/cadvisor:v0.47.0
# Prometheus配置示例
scrape_configs:
- job_name: cadvisor
static_configs:
- targets: ['cadvisor:8080']
2. 關(guān)鍵監(jiān)控指標(biāo)
| 指標(biāo)類型 | PromQL示例 | 告警閾值 |
|---|---|---|
| CPU使用率 | rate(container_cpu_usage_seconds_total[5m]) | >75%持續(xù)5分鐘 |
| 內(nèi)存使用量 | container_memory_working_set_bytes | >90% Limit |
| 網(wǎng)絡(luò)丟包率 | container_network_transmit_packets_dropped_total | >1% |
| 存儲空間 | container_fs_usage_bytes | >85% |
三、場景化診斷技巧
1. CPU異常飆升排查
診斷步驟:

2. 內(nèi)存泄漏定位
# 監(jiān)控RSS內(nèi)存增長
watch -n 5 "docker stats --no-stream --format '{{.Name}} {{.MemUsage}}'"
# 生成內(nèi)存快照(Java示例)
docker exec my_app jcmd 1 GC.heap_dump /tmp/dump.hprof
3. 網(wǎng)絡(luò)瓶頸分析
# 查看容器網(wǎng)絡(luò)接口 docker exec -it nginx ip addr show eth0 # 抓取容器網(wǎng)絡(luò)包 docker run --net container:nginx -it nicolaka/netshoot tcpdump -i eth0
四、監(jiān)控避坑指南
1. 指標(biāo)認(rèn)知誤區(qū)
| 指標(biāo) | 真實含義 | 常見誤判 |
|---|---|---|
| CPU% | 占滿單核=100% | 誤以為總CPU率 |
| MEM USAGE | 包含Page Cache | 高估實際用量 |
| MEM LIMIT | 不設(shè)置則默認(rèn)主機內(nèi)存 | 突發(fā)OOM |
2. 生產(chǎn)環(huán)境鐵律
強制設(shè)置資源限制:
docker run -d --cpus=2 --memory=1g --memory-swap=0 nginx
啟用實時監(jiān)控告警:
# Prometheus Alertmanager配置示例 - alert: HighMemoryUsage expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9 for: 5m
五、免費監(jiān)控工具推薦
Lens IDE:K8s容器實時監(jiān)控(含Docker)
!不能放圖
NetData:輕量級主機監(jiān)控
docker run -d --cap-add SYS_PTRACE \ -p 19999:19999 \ netdata/netdata
Dozzle:實時日志儀表盤
docker run -d --volume=/var/run/docker.sock:/var/run/docker.sock \ -p 8080:8080 \ amir20/dozzle
終極建議:
生產(chǎn)環(huán)境務(wù)必配置--memory和--cpus限制,配合Prometheus+Grafana實現(xiàn):
- 資源使用率歷史趨勢分析
- 自動觸發(fā)水平擴容(HPA)
- 生成季度容量規(guī)劃報告
通過docker stats快速響應(yīng)突發(fā)問題,結(jié)合APM工具深入診斷應(yīng)用層性能,構(gòu)建完整監(jiān)控鏈條。
以上就是Docker容器資源監(jiān)控的終極指南的詳細(xì)內(nèi)容,更多關(guān)于Docker容器資源監(jiān)控的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
通過Docker安裝啟動DB2在Spring?Boot整合DB2的方法
DB2是IBM的一款優(yōu)秀的關(guān)系型數(shù)據(jù)庫,這篇文章主要介紹了通過Docker啟動DB2,并在Spring?Boot整合DB2,需要的朋友可以參考下2023-01-01
docker 安裝部署 Prometheus 與grafana的詳細(xì)過程
本文給大家詳細(xì)介紹了如何在CentOS 7上使用Docker和Docker Compose安裝和配置Prometheus和Grafana,并展示了如何進(jìn)行基本的監(jiān)控配置和數(shù)據(jù)可視化,感興趣的朋友跟隨小編一起看看吧2024-12-12
基于Docker結(jié)合Canal實現(xiàn)MySQL實時增量數(shù)據(jù)傳輸功能
這篇文章主要介紹了基于Docker結(jié)合Canal實現(xiàn)MySQL實時增量數(shù)據(jù)傳輸功能,本文給圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
如何在 Ubuntu 下通過 Docker 部署 Caddy 
本文介紹了如何在Ubuntu系統(tǒng)下通過Docker部署Caddy服務(wù)器,首先安裝Docker,然后啟動Docker服務(wù)并設(shè)置為開機自啟,接著拉取Caddy鏡像,并創(chuàng)建一個Caddyfile配置文件,使用命令運行Caddy容器,并將本地的Caddyfile掛載到容器內(nèi),感興趣的朋友跟隨小編一起看看吧2025-03-03

