Debian系统Docker重启后启动耗时4分钟的问题求助
环境信息
- 操作系统:Debian 9(Kernel
4.9.0-6-amd64 #1 SMP Debian 4.9.88-1 (2018-04-29) x86_64 GNU/Linux) - Docker版本:
Docker version 18.03.0-ce, build 0520e24
现象
每次重启系统后,Docker服务启动耗时长达4分钟,systemd-analyze blame的结果显示:
4min 21.855s docker.service
2.863s cloud-final.service
2.021s cloud-init-local.service
1.698s cloud-init.service
1.476s cloud-config.service
…
排查思路与建议
1. 先定位Docker启动的阻塞点
直接查看Docker启动日志,找卡壳的具体环节:
journalctl -u docker.service -b
重点关注带有timeout、waiting字样的日志,或者日志长时间停顿的时间段——大概率是在等待存储挂载、网络就绪,或是镜像存储模块出了问题。
2. 检查存储驱动是否适配
Docker 18.03默认用overlay2,但如果系统文件系统不支持其特性,会拖慢启动速度。先确认当前存储驱动:
docker info | grep "Storage Driver"
如果是overlay2,可以检查内核是否加载了相关模块(Debian 4.9内核理论支持,但可能需要手动确认);也可以临时切换到aufs测试(先安装aufs-tools包),看启动速度是否改善。
3. 调整systemd服务依赖
Docker的systemd服务可能在等待不必要的依赖项。查看服务配置:
systemctl cat docker.service
重点看After=字段,有没有和启动慢相关的冗余依赖(比如某些cloud服务?虽然你的cloud服务启动快,但不排除Docker在等待网络目标)。如果有,可以在/etc/systemd/system/docker.service.d/下创建自定义配置文件,移除不必要的依赖,减少等待时间。
4. 排查镜像/容器的影响
如果Docker启动时要加载大量镜像或恢复运行中容器,也会变慢。可以先备份重要数据,然后清空所有容器测试:
docker stop $(docker ps -aq) docker rm $(docker ps -aq) systemctl restart docker
如果启动速度恢复正常,说明是某个容器或镜像的问题,再逐个排查恢复。
5. 检查网络配置
Docker启动需要初始化网络环境,DNS响应慢、网络接口获取IP超时都会导致延迟。可以先检查/etc/resolv.conf的配置,或者在Docker daemon里指定固定DNS:
创建/修改/etc/docker/daemon.json:
{ "dns": ["8.8.8.8", "8.8.4.4"] }
然后重启Docker测试。
6. 考虑升级Docker版本
Docker 18.03是比较老旧的版本,后续版本修复了不少启动相关的bug。如果前面的排查都没解决问题,可以尝试升级到Debian官方仓库的较新版本(记得提前备份数据)。
内容的提问来源于stack exchange,提问作者J. Xie

