温馨提示×

debian docker为何占用高

小樊
50
2026-10-11 00:06:35
栏目: 智能运维

在 Debian 上运行的 Docker 占用高,通常不是 Docker 本身“吃资源”,而是容器 / 镜像 / 系统配置导致的。下面按常见原因逐一说明,并给出排查与解决办法。


一、最常见原因

1️⃣ 容器本身占用高(CPU / 内存)

这是第一嫌疑。

排查:

docker stats

看哪些容器:

  • CPU 持续高
  • 内存占用大
  • 重启频繁(restart loop)

常见情况:

  • Java / Node / Python 应用内存泄漏
  • 死循环 / 日志狂打
  • 没有限制资源

解决:

docker run -m 512m --cpus=1 ...

或在 docker-compose.yml:

deploy:
  resources:
    limits:
      memory: 512M
      cpus: "1.0"

2️⃣ 日志文件暴涨(非常常见)

Docker 默认日志不限制大小。

查看:

du -sh /var/lib/docker/containers/*

解决(全局限制): 编辑 /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

重启 Docker:

systemctl restart docker

3️⃣ 镜像 / 容器 / 卷堆积

Docker 不会自动清理。

查看占用:

docker system df

清理(谨慎):

docker system prune -a

⚠️ 会删除:

  • 停止的容器
  • 未使用的镜像
  • 未使用的网络

4️⃣ Overlay2 存储层膨胀

Debian 默认用 overlay2,但:

  • 写大量小文件
  • 频繁写日志 会导致 inode / 磁盘高

查看:

df -h
df -i

建议:

  • 日志外挂 volume
  • 不在容器内写临时大文件

二、系统层面原因

5️⃣ Docker daemon 本身异常

少见,但会发生。

检查:

systemctl status docker
journalctl -u docker

6️⃣ Swap 没开,内存被吃光

Debian 服务器常没 swap。

查看:

free -h
swapon --show

建议加 swap:

fallocate -l 2G /swapfile
mkswap /swapfile
swapon /swapfile

7️⃣ 内核 / cgroup 问题(老 Debian)

  • Debian 10 以前
  • 混用 cgroup v1/v2

表现:

  • 内存统计异常
  • Docker 显示占用虚高

建议:

  • Debian 11+ 基本没问题
  • 升级内核

三、快速自查清单 ✅

docker stats
docker system df
df -h
df -i
free -h
du -sh /var/lib/docker/*

四、如果你想更精准

你可以补充:

  • Debian 版本
  • Docker 版本
  • docker stats 截图
  • 是哪个资源高(CPU / 内存 / 磁盘)

我可以直接帮你定位到具体容器或配置问题。

0 踩