在 Ubuntu 上 Docker 占用高(CPU / 内存 / 磁盘)通常是以下几类原因导致的,我按「最常见 → 较少见」给你梳理,并给出排查和解决办法。
很多情况下不是 Docker 的问题,而是容器里的程序在消耗资源。
排查:
docker stats
可以看到每个容器的:
常见 culprit:
✅ 解决:
docker run -m 512m --cpus=1 ...
Docker 默认日志不限制大小。
/var/lib/docker/containers/*/*-json.log
现象:
解决(推荐):
编辑 /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
然后:
sudo systemctl restart docker
很多人跑测试、构建镜像,但不清理。
查看占用:
docker system df
清理(慎用):
docker system prune -a
(会删除未使用镜像、容器、网络)
可能原因:
检查:
top
看是否是 dockerd 或 containerd
建议:
overlay2(默认已用)aufsUbuntu 20.04+ 默认使用 containerd。
异常表现:
重启试试:
sudo systemctl restart containerd
sudo systemctl restart docker
内存不够时:
检查:
free -h
建议服务器开 swap(哪怕 2G)。
df -h
如果 /var/lib/docker 所在盘 100%:
docker stats
docker system df
df -h
free -h
top
你可以直接贴出:
docker stats 输出top / htop 截图我可以帮你精准判断是哪一个容器或配置在吃资源。