Ubuntu 上运行 Docker 出现“卡顿”,通常不是 Docker 本身的问题,而是宿主机资源、配置或镜像/容器用法导致的。下面按常见原因给你梳理一下,并给出排查和解决思路。
Docker 容器如果:
很容易把 Ubuntu 内存吃光,触发 swap / OOM,系统整体卡死。
排查:
free -h
top
htop
解决:
docker run -m 1g --memory-swap 1g xxx
docker ps
docker stop <id>
某些容器(如构建、AI、爬虫)会占满 CPU。
排查:
docker stats
解决: 限制 CPU:
docker run --cpus=1.5 xxx
Docker 默认使用:
会非常卡。
排查:
df -h
iostat -x 1
解决:
docker system prune -a
很多人 Docker 默认装在 /var/lib/docker,系统盘一满就卡。
解决: 迁移 Docker 数据目录:
sudo systemctl stop docker
sudo rsync -avz /var/lib/docker /data/docker
修改 /etc/docker/daemon.json:
{
"data-root": "/data/docker"
}
sudo systemctl start docker
Ubuntu 自带的 snap Docker 非常慢、容易卡。
检查:
which docker
snap list | grep docker
解决: 卸载 snap 版,安装官方版:
sudo snap remove docker
然后装官方 Docker Engine。
会导致 Docker 极慢。
解决:
Docker 默认日志无限增长。
解决:
/etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
几十上百个容器同时跑,Ubuntu 本身也扛不住。
你可以依次看:
free -h
docker stats
df -h
top
docker system df
我可以给你一套针对性优化方案。