Windows环境Docker Desktop推送大文件镜像反复重试报错unexpected EOF
问题原因:该报错90%以上场景是大镜像层传输过程中,连接被代理、网关、网络运营商、镜像仓库前置节点主动断开导致,可按以下步骤排查解决:
- 调整Docker客户端并发上传配置
打开Docker Desktop 设置 -> Docker Engine,修改配置文件新增以下参数,保存重启Docker后重试推送:
{ "max-concurrent-uploads": 1, "max-download-attempts": 5 }
关闭多并发上传大文件容易触发网络限流或连接抢占,改为单线程上传稳定性更高。
- 排查代理/网络限制
如果本地配置了系统代理或Docker代理的,将远程镜像仓库的域名/IP加入no-proxy排除列表,避免代理转发大文件超时。也可以切换有线网络/手机热点测试,排除当前WiFi或运营商QoS限制大文件长连接传输。 - 调整远程镜像仓库上传限制
如果远程仓库前面配置了Nginx等反向代理,将client_max_body_size参数调整为2G以上,大于你最大镜像层的2倍以上;如果用的是Harbor、Nexus等自建仓库,检查仓库的单文件上传阈值、上传超时时间配置,调高对应参数。 - WSL2后端兼容优化
如果你用的是WSL2作为Docker Desktop后端,可以暂时切换为Hyper-V后端重试,WSL2网络模块存在偶发的大文件传输断连的已知bug。 - 构建层面长期优化
可以调整Dockerfile分层逻辑,把大jar包的依赖和业务代码拆分构建,减少单次需要上传的大层体积:
# 先拷贝依赖配置文件下载依赖,依赖层无变动无需重复上传 COPY pom.xml /app/ RUN mvn dependency:go-offline # 最后拷贝业务代码打包,生成的镜像层通常仅几MB COPY src /app/src RUN mvn package -DskipTests
- 临时救急方案
如果需要紧急推送,可先将镜像导出为本地tar包,通过scp等工具传输到镜像仓库所在服务器,再load后本地push,绕开本地传输限制。
内容的提问来源于stack exchange,提问作者Mansoor
相关产品推荐
相关产品推荐

