如何识别占用VM资源的rogue Docker容器?求监控记录状态方案
识别内存耗尽的Docker容器及崩溃前状态记录方案
一、先阻止单个容器耗尽VM内存
- 给所有容器设置内存上限:使用
docker run时添加--memory <数值>(例如--memory 2g),或在docker-compose.yml中配置mem_limit: 2g。这样单个容器最多占用指定内存,不会吃光VM的RAM,保留登录排查的操作空间。
二、识别 rogue 容器的方法
- 持续监控容器资源使用:
- 后台运行脚本记录
docker stats输出:
该脚本每隔10秒将所有容器的内存、CPU、进程数信息追加到日志文件,VM崩溃后只要磁盘正常,就能从日志中找到内存持续飙升的容器。nohup sh -c 'while true; do docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.CPUPerc}}\t{{.PIDs}}" >> /var/log/docker_stats.log; sleep 10; done' & - 查看Docker默认持久化日志:宿主机
/var/lib/docker/containers/<容器ID>/<容器ID>-json.log是容器的日志存储目录,即使容器重启,这些文件也不会丢失,直接查看可疑容器的日志即可,无需进入容器。
- 后台运行脚本记录
三、自定义镜像记录崩溃前状态
你可以自行构建轻量监控镜像,定期抓取Docker状态并写入宿主机文件:
1. 编写监控脚本(monitor.sh)
#!/bin/sh # 宿主机挂载的日志目录,需提前创建 HOST_LOG_DIR="/host/docker-monitor-logs" mkdir -p "$HOST_LOG_DIR" while true; do # 生成带时间戳的日志片段,避免单文件过大 TIMESTAMP=$(date +"%Y%m%d_%H%M%S") LOG_FILE="$HOST_LOG_DIR/container_stats_$TIMESTAMP.log" # 写入容器状态,包含名称、内存使用、CPU占比、PID docker stats --no-stream --format "{{.Name}}\t{{.MemUsage}}\t{{.CPUPerc}}\t{{.PIDs}}" > "$LOG_FILE" # 可选:当容器内存超过阈值时,额外记录进程详情 for container in $(docker ps --format "{{.Names}}"); do mem_usage=$(docker stats --no-stream --format "{{.MemUsage}}" "$container" | awk '{print $1}') # 示例:判断内存是否超过1.5G(单位可根据实际调整) if echo "$mem_usage" | grep -q "G" && [ $(echo "$mem_usage" | sed 's/G//') -gt 1.5 ]; then docker top "$container" >> "$HOST_LOG_DIR/container_top_${container}_$TIMESTAMP.log" fi done sleep 5 done
2. 编写Dockerfile
FROM alpine:latest # 安装Docker客户端,用于调用docker命令 RUN apk add --no-cache docker-cli COPY monitor.sh /usr/local/bin/monitor.sh RUN chmod +x /usr/local/bin/monitor.sh CMD ["monitor.sh"]
3. 构建并运行镜像
# 构建镜像 docker build -t docker-monitor . # 运行容器,挂载Docker套接字(用于访问Docker API)和宿主机日志目录 docker run -d \ --name docker-monitor \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/docker-monitor-logs:/host/docker-monitor-logs \ docker-monitor
监控容器会持续将状态写入宿主机的/opt/docker-monitor-logs目录,即使VM崩溃,重启后也能查看崩溃前的最后几轮记录,快速定位内存飙升的容器。
内容的提问来源于stack exchange,提问作者bpoepen
相关产品推荐
相关产品推荐

