在 Ubuntu 上使用 Docker 时,如果发现内存占用很高,通常不是 Docker 本身“吃内存”,而是容器、镜像、缓存或配置问题导致的。下面按常见原因逐一说明,并给出排查与优化方法。
Docker 只是运行进程,内存主要来自:
排查:
docker stats
查看每个容器的:
MEM USAGE / LIMIT% MEM解决: 给容器限制内存
docker run -m 512m --memory-swap=512m myimage
很多 docker-compose 项目会启动:
排查:
docker ps -a
解决:
docker stop <id>
docker rm <id>
Docker 不会自动清理:
排查:
docker images
docker system df
解决:
docker image prune
docker container prune
docker volume prune
docker system prune -a
Docker 在 Linux 上:
解决:
/etc/docker/daemon.json{
"default-shm-size": "128m"
}
或给每个容器加 -m
Ubuntu 默认使用 overlay2
即使容器停了,写层仍在
排查:
du -sh /var/lib/docker
解决:
docker commitUbuntu 有时默认装的是 snap docker
检查:
which docker
snap list | grep docker
建议: 使用官方 apt 安装 Docker
Ubuntu 22.04+ 默认 cgroup v2
检查:
stat -fc %T /sys/fs/cgroup
# 1. 看谁最占内存
docker stats
# 2. 看磁盘和镜像占用
docker system df
# 3. 看容器数量
docker ps -a | wc -l
# 4. 看 docker 目录大小
du -sh /var/lib/docker
如果你愿意,可以贴一下:
docker statsdocker system df我可以直接帮你判断是正常还是异常。