Docker容器資源監(jiān)控的終極指南
核心痛點
容器化應用突發(fā)高負載、內(nèi)存泄漏等問題時常困擾運維團隊。掌握以下監(jiān)控手段,5分鐘內(nèi)精準定位資源瓶頸:
一、原生監(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:當使用量接近Limit需警惕OOM
- PIDS:進程數(shù)突增預示程序異常
2. 進程級洞察: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)控指標
| 指標類型 | PromQL示例 | 告警閾值 |
|---|---|---|
| CPU使用率 | rate(container_cpu_usage_seconds_total[5m]) | >75%持續(xù)5分鐘 |
| 內(nèi)存使用量 | container_memory_working_set_bytes | >90% Limit |
| 網(wǎng)絡丟包率 | 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)絡瓶頸分析
# 查看容器網(wǎng)絡接口 docker exec -it nginx ip addr show eth0 # 抓取容器網(wǎng)絡包 docker run --net container:nginx -it nicolaka/netshoot tcpdump -i eth0
四、監(jiān)控避坑指南
1. 指標認知誤區(qū)
| 指標 | 真實含義 | 常見誤判 |
|---|---|---|
| CPU% | 占滿單核=100% | 誤以為總CPU率 |
| MEM USAGE | 包含Page Cache | 高估實際用量 |
| MEM LIMIT | 不設置則默認主機內(nèi)存 | 突發(fā)OOM |
2. 生產(chǎn)環(huán)境鐵律
強制設置資源限制:
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)境務必配置--memory和--cpus限制,配合Prometheus+Grafana實現(xiàn):
- 資源使用率歷史趨勢分析
- 自動觸發(fā)水平擴容(HPA)
- 生成季度容量規(guī)劃報告
通過docker stats快速響應突發(fā)問題,結(jié)合APM工具深入診斷應用層性能,構(gòu)建完整監(jiān)控鏈條。
以上就是Docker容器資源監(jiān)控的終極指南的詳細內(nèi)容,更多關(guān)于Docker容器資源監(jiān)控的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在CentOS系統(tǒng)中輕松安裝和配置Docker全過程
這篇文章主要介紹了在CentOS系統(tǒng)中輕松安裝和配置Docker全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
docker?環(huán)境搭建、docker?與容器常用指令大全(推薦)
這篇文章主要介紹了docker?環(huán)境搭建、docker?與容器常用指令大全,主要包括docker容器操作命令匯總,文中介紹需要注意的是如果想要刪除一個容器,需要先停止該容器且如果鏡像中有運行狀態(tài)的容器,也是無法刪除容器的,需要的朋友可以參考下2022-06-06
docker+mongodb設置數(shù)據(jù)庫的賬號和密碼的實現(xiàn)步驟
本文主要介紹了docker+mongodb設置數(shù)據(jù)庫的賬號和密碼的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
詳解docker部署SpringBoot及替換jar包的方法
這篇文章主要介紹了詳解docker部署SpringBoot及替換jar包的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

