温馨提示×

ubuntu docker为啥卡顿

小樊
58
2026-10-01 10:22:16
栏目: 智能运维

Ubuntu 下 Docker 卡顿的原因通常不止一个,下面把常见原因 + 对应排查/解决办法给你梳理一下,方便你对着查。


一、最常见原因

1️⃣ 磁盘 IO 瓶颈(尤其是用 overlay2 + 机械盘/云盘)

Docker 默认使用 overlay2 存储驱动,对磁盘 IO 非常敏感。

表现

  • docker ps 都卡
  • 容器启动慢
  • 日志写入慢

排查

iostat -x 1

如果 %util 接近 100%,就是磁盘问题。

解决

  • 把 Docker 数据目录放到 SSD
  • 修改 Docker 根目录:
# /etc/docker/daemon.json
{
  "data-root": "/ssd/docker"
}

然后:

systemctl restart docker

2️⃣ 内存不足 / 频繁 OOM

Ubuntu 上 Docker 容易因为:

  • 容器无内存限制
  • 宿主机内存小
  • swap 没开

排查

free -h
dmesg | grep oom

解决

  • 给容器加限制:
docker run -m 1g --memory-swap 1g ...
  • 宿主机开 swap:
swapon --show

3️⃣ CPU 资源被吃满

尤其是:

  • Java / Python / Node 容器
  • 编译型任务

排查

top
htop
docker stats

解决

  • 限制 CPU:
docker run --cpus=2 ...

4️⃣ Docker 日志无限增长

默认 json-file 日志不限制大小。

排查

du -sh /var/lib/docker/containers/*

解决

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

二、Ubuntu 特有常见问题

5️⃣ 使用 WSL2(Windows + Ubuntu)

很多人说“Ubuntu Docker 卡”,其实是:

  • Windows WSL2
  • 文件系统跨平台访问极慢

解决

  • 项目放在 WSL 内,不要放 /mnt/c
  • 使用 Docker Desktop + WSL2 后端

6️⃣ systemd + cgroup v1/v2 问题

Ubuntu 22.04+ 默认 cgroup v2,有些老镜像会卡。

排查

stat -fc %T /sys/fs/cgroup

解决

  • 升级 Docker 到最新
  • 或临时切回 cgroup v1(不推荐)

三、快速自检清单 ✅

你可以依次看:

  1. docker stats 是否 CPU/内存爆了
  2. iostat 磁盘是否 100%
  3. df -h 是否磁盘满
  4. dmesg | grep oom
  5. Docker 日志是否巨大

如果你愿意,可以把下面信息发我,我能更精准判断:

  • Ubuntu 版本
  • Docker 版本
  • 是否物理机 / 云服务器 / WSL
  • 卡顿时 docker stats 输出
  • 跑的是什么容器(MySQL / Java / AI?)

我可以直接帮你定位到“哪一行配置要改”。

0 踩