Docker Compose拉取镜像超时求助:无法获取OAuth令牌
Docker Compose构建超时(180秒)问题解决建议
问题概述
执行docker-compose up --build -d构建项目时,拉取官方镜像(如node:18.17、python:3.10)持续触发180秒超时,错误指向auth.docker.io的OAuth令牌请求失败;手动执行docker pull可正常拉取镜像,已尝试禁用IPv6、指定DNS、切换Buildkit、调整登录状态、修改客户端超时环境变量均无效。
解决建议
1. 配置Docker守护进程拉取超时
编辑Docker守护进程配置文件:
- Windows路径:
C:\ProgramData\docker\config\daemon.json - Linux路径:
/etc/docker/daemon.json
添加以下配置(若文件不存在则新建):
{ "pull-timeout": 300, "max-concurrent-downloads": 1 }
pull-timeout:设置镜像拉取超时为300秒(覆盖默认180秒)max-concurrent-downloads:限制并发下载数,减少网络压力
修改后重启Docker服务:
- Windows:在服务管理器中重启
Docker Desktop Service - Linux:执行
sudo systemctl restart docker
2. 强制使用本地已拉取的镜像
既然手动拉取镜像正常,可让构建过程直接使用本地镜像,避免重复拉取:
- 修改Dockerfile:无需额外改动,Docker会优先使用本地已存在的镜像
- 在docker-compose.yml中添加拉取策略:
services: 你的服务名: build: . pull_policy: never # 强制使用本地镜像,不尝试拉取
注意:后续需要更新镜像时,需手动执行docker pull对应镜像。
3. 排查网络代理与防火墙限制
- 检查Docker代理配置:
- Windows:打开Docker Desktop设置 →
Resources→Proxies,确认是否开启代理,尝试关闭后重试构建 - Linux:检查
daemon.json中的http-proxy/https-proxy配置,临时注释后重启Docker
- Windows:打开Docker Desktop设置 →
- 临时关闭防火墙/安全软件:部分防火墙会拦截Docker对
auth.docker.io的HTTPS请求,关闭后测试是否解决超时问题。
4. 切换至国内Docker镜像源
在daemon.json中添加国内镜像加速地址,提升镜像拉取速度:
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://docker.mirrors.ustc.edu.cn" ] }
重启Docker后执行构建命令,国内镜像源的网络延迟更低,可有效减少超时概率。
5. 强制禁用Buildkit构建
若之前切换Buildkit的方式未生效,可在构建时显式禁用:
- 临时命令行指定:
COMPOSE_DOCKER_CLI_BUILD=0 DOCKER_BUILDKIT=0 docker-compose up --build -d - 或在docker-compose.yml中配置:
services: 你的服务名: build: context: . dockerfile: Dockerfile args: DOCKER_BUILDKIT: 0
内容的提问来源于stack exchange,提问作者samuel guedon
相关产品推荐
相关产品推荐

