在 Ubuntu 上 Docker 启动慢(无论是 Docker 服务启动慢,还是容器启动慢)通常由以下几类原因导致。下面按「Docker 服务启动慢」和「容器启动慢」分别说明,并给出排查与优化方法。
Ubuntu 默认可能使用 overlay2,但如果配置错误或使用 devicemapper、aufs 会非常慢。
检查:
docker info | grep Storage
建议:
overlay2优化:
# /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
默认路径:
/var/lib/docker
如果它在:
都会显著变慢。
解决:
{
"data-root": "/ssd/docker"
}
Docker 启动会重建 iptables 规则。
可能原因:
ufw + Docker 冲突nftables 与 iptables 混用排查:
systemd-analyze blame
journalctl -u docker
Docker 启动时会检测 DNS。
如果 /etc/resolv.conf 指向不可达 DNS:
解决:
{
"dns": ["8.8.8.8", "1.1.1.1"]
}
Ubuntu 使用 systemd cgroup driver 更优。
检查:
docker info | grep Cgroup
推荐:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
解决:
alpine例如:
例如:
-v /nfs/data:/data
容器启动时要挂载、检查权限,会卡。
如果镜像不在本地:
docker run xxx
会先 pull,非常慢。
检查:
free -h
df -i
top
# 看 docker 启动耗时
systemd-analyze blame | grep docker
# 看 docker 日志
journalctl -u docker -b
# 看 docker 信息
docker info
# 看磁盘
df -h /var/lib/docker
/var/lib/docker 在 NFS → 启动 1–2 分钟devicemapper → 容器启动 10s+如果你愿意,可以告诉我:
docker info 输出(可脱敏)我可以直接帮你定位到具体原因。