如何解决Docker Compose启动项目HTTP请求超时问题
解决方案
排查Docker守护进程僵死问题
执行重启Docker命令时终端冻结,大概率是dockerd进程已僵死,先执行sudo systemctl status docker查看守护进程状态,若显示异常,执行以下命令强制杀死进程再重启:sudo kill -9 $(pidof dockerd) sudo systemctl start docker等待30秒后执行
docker ps确认Docker正常响应,再尝试启动Compose项目。升级Docker Compose版本
你当前使用的Docker Compose 1.14.0为旧版本,和Docker 20.10.8存在兼容性缺陷,旧版本的HTTP请求逻辑存在已知超时bug,先卸载旧版本再安装适配版本:# 卸载旧版 sudo apt remove -y docker-compose # 用pip安装兼容20.10.x版本Docker的Compose版本 pip3 install docker-compose==2.12.2安装完成后执行
docker-compose version确认版本正确,再测试项目启动。重置Docker网络栈
若Docker内置网络栈规则异常会导致内部HTTP请求阻塞,先停止所有运行的容器,再重置iptables规则后重启Docker:docker stop $(docker ps -aq) sudo iptables -F && sudo iptables -t nat -F sudo systemctl restart docker排查系统资源瓶颈
Docker守护进程无响应多数和磁盘IO/分区满相关:- 执行
df -h检查/var/lib/docker所在分区使用率,若使用率超过90%先清理冗余文件释放空间 - 执行
iotop查看是否有进程占用磁盘IO过高,等待IO负载恢复正常后再测试Compose启动
- 执行
临时关闭防火墙测试
执行sudo ufw disable临时关闭Ubuntu默认ufw防火墙,若此时Compose可以正常启动,说明防火墙规则拦截了Docker内部HTTP请求,后续将Docker相关网段加入防火墙白名单即可。
内容的提问来源于stack exchange,提问作者Rafa Acioly
相关产品推荐
相关产品推荐

