CentOS 上 Docker 占用内存高,通常不是 Docker“本身”吃内存,而是容器、镜像、存储驱动或系统配置导致的。下面按常见原因给你一个排查思路。
Docker 只是“跑进程的壳”,真正占内存的是容器里的应用。
查看方式:
docker stats
看 MEM USAGE / LIMIT。
常见情况:
-Xmx✅ 解决:
docker run -m 512m --memory-swap=512m xxx
CentOS 7 默认常用:
devicemapper(老,容易吃内存/磁盘)overlay2(推荐)查看:
docker info | grep Storage
如果是 devicemapper:
✅ 解决:
overlay2# /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
然后重启 docker
Docker 默认日志不限制:
/var/lib/docker/containers/*/*-json.log
日志变大 → dockerd 占用内存上涨
✅ 解决:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
很多人跑了大量:
查看:
docker ps -a
✅ 清理:
docker container prune
docker image prune
CentOS 自带的 Docker 经常很老(如 1.13 / 18.03)
查看:
docker version
✅ 建议:
Linux 会把内存用于:
free -h
如果 buff/cache 很大,但 available 也大,那是正常的
✅ 不算 Docker 问题
# 容器内存占用
docker stats
# Docker 信息
docker info
# 系统内存
free -h
# docker 进程内存
ps aux | grep dockerd
# 日志大小
du -sh /var/lib/docker/containers/*
你可以告诉我:
docker info 输出docker stats 截图我可以直接帮你判断是哪一块在吃内存。