温馨提示×

ubuntu docker为什么卡顿

小樊
55
2026-09-28 12:14:59
栏目: 智能运维

Ubuntu 上运行 Docker 出现“卡顿”,通常不是 Docker 本身的问题,而是宿主机资源、配置或镜像/容器用法导致的。下面按常见原因给你梳理一下,并给出排查和解决思路。


一、最常见原因

1. 内存不足(最常见)

Docker 容器如果:

  • 没限制内存
  • 或跑了 Java / 数据库 / 编译任务

很容易把 Ubuntu 内存吃光,触发 swap / OOM,系统整体卡死。

排查:

free -h
top
htop

解决:

  • 给容器限制内存
docker run -m 1g --memory-swap 1g xxx
  • 关闭不必要容器
docker ps
docker stop <id>

2. CPU 被容器吃满

某些容器(如构建、AI、爬虫)会占满 CPU。

排查:

docker stats

解决: 限制 CPU:

docker run --cpus=1.5 xxx

3. 磁盘 IO 瓶颈

Docker 默认使用:

  • overlay2
  • 如果磁盘是 HDD 或磁盘快满

会非常卡。

排查:

df -h
iostat -x 1

解决:

  • 清理无用镜像和容器
docker system prune -a
  • 使用 SSD
  • 避免把大量小文件写进 volume

4. Docker 数据盘在系统盘

很多人 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 特有原因

5. snap 版 Docker(巨坑)

Ubuntu 自带的 snap Docker 非常慢、容易卡。

检查:

which docker
snap list | grep docker

解决: 卸载 snap 版,安装官方版:

sudo snap remove docker

然后装官方 Docker Engine。


6. 虚拟机里跑 Docker(VMware / VirtualBox)

  • 内存给太少
  • 没开虚拟化

会导致 Docker 极慢。

解决:

  • 至少给 4G 内存
  • 开启 VT-x / AMD-V

三、容器使用方式问题

7. 日志没限制,把磁盘写爆

Docker 默认日志无限增长。

解决: /etc/docker/daemon.json

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

8. 容器数量太多

几十上百个容器同时跑,Ubuntu 本身也扛不住。


四、快速自查清单 ✅

你可以依次看:

free -h
docker stats
df -h
top
docker system df

五、如果你能补充这些信息,我可以精准判断

  1. 是 宿主机卡 还是 容器里卡?
  2. 跑的是什么容器(MySQL / Java / 前端 / AI)?
  3. 物理机 / 虚拟机 / 云服务器?
  4. Docker 是 apt 还是 snap 装的?

我可以给你一套针对性优化方案。

0 踩