温馨提示×

ubuntu docker为何占用过高

小樊
32
2026-09-04 11:40:33
栏目: 智能运维

在 Ubuntu 上 Docker 占用过高(CPU / 内存 / 磁盘) 是很常见的问题,通常不是 Docker 本身“吃资源”,而是容器、镜像、日志或配置导致的。下面按最常见原因 → 排查方法 → 解决方式来说明。


一、最常见原因

1️⃣ 容器本身在大量消耗资源

  • 某个容器:
    • 死循环
    • 内存泄漏
    • 高并发请求
    • 编译任务(如 Maven / npm / go build)

✅ 排查:

docker stats

看哪个容器 CPU / MEM 异常。

✅ 解决:

  • 重启容器
docker restart <容器名>
  • 限制资源(推荐)
docker run -m 512m --cpus=1 ...

2️⃣ 日志无限增长(非常常见)

Docker 默认日志不限制大小,容易把磁盘/IO吃满。

✅ 查看日志大小:

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

✅ 解决(二选一):

方式一:限制日志(推荐)

docker run \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  ...

方式二:全局配置 编辑 /etc/docker/daemon.json

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

然后:

systemctl restart docker

3️⃣ 磁盘空间被镜像/容器占满

Docker 镜像、停止的容器、构建缓存会越积越多。

✅ 查看占用:

docker system df

✅ 清理(安全):

docker system prune

✅ 清理更彻底(⚠谨慎):

docker system prune -a

4️⃣ Docker 守护进程异常

  • 版本 bug
  • 存储驱动问题(overlay2 异常)
  • 磁盘 IO 阻塞

✅ 查看 Docker 状态:

systemctl status docker
journalctl -u docker --no-pager -n 50

✅ 常见解决:

  • 升级 Docker
apt update && apt upgrade docker.io
  • 使用 overlay2(Ubuntu 默认已是)

5️⃣ 大量短命容器(如 CI / 脚本)

频繁 docker run 但没清理,会导致:

  • 容器堆积
  • 网络/资源占用高

✅ 解决:

  • --rm
docker run --rm ...
  • 定时清理
docker container prune

6️⃣ Swap 未开或内存太小

Ubuntu 服务器内存小但没 Swap,Docker 很容易卡死。

✅ 查看:

free -h
swapon --show

✅ 建议:

  • 至少 1–2G Swap

二、快速自查清单(推荐顺序)

docker stats
docker system df
df -h
free -h
journalctl -u docker -n 50

三、如果你愿意,我可以更精准帮你

你可以补充:

  1. CPU / 内存 / 磁盘 哪一个高?
  2. docker stats 里哪个容器异常?
  3. Ubuntu 版本 + Docker 版本
lsb_release -a
docker version

我可以直接告诉你具体该改哪里

0