You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker镜像推送失败:EOF/管道破裂/连接关闭错误求助

Docker镜像推送至ECR/Docker Hub失败问题排查

尝试将Spring Boot应用镜像推送到AWS ECR和Docker Hub时均失败,出现三类网络相关错误,网络连接正常且拥有合法推送权限。

错误现象

1. EOF异常

My-MacBook-Pro-2 producer % docker push <awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer:latest
The push refers to repository [<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer]
c7890551eec4: Waiting 
b32c59a2510d: Waiting 
3d898485473e: Waiting 
5b316a2cb183: Waiting 
a0ee1f650005: Waiting 
45dff4c2315c: Waiting 
failed to do request: Head "https://<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/v2/producer/blobs/sha256:c7890551eec49eefdd40b2b56d0e2f2f575641ed7de0c1da92ad94d63311b449": EOF

2. Broken Pipe(管道破裂)错误

My-MacBook-Pro-2 producer % docker push <awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer:latest
The push refers to repository [<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer]
3d898485473e: Pushing [==========>                                        ]  6.488MB/30.05MB
45dff4c2315c: Pushing [==================================================>]  1.566MB/1.566MB
a0ee1f650005: Layer already exists 
5b316a2cb183: Pushing [=>                                                 ]  5.636MB/195.2MB
c7890551eec4: Already exists 
b32c59a2510d: Pushing [==================>                               ]  6.783MB/17.82MB
failed to copy: failed to do request: Put "https://<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/v2/producer/blobs/uploads/7127e92e-d7a7-4147-984e-3dbdf8f12f0f?digest=sha256%3A3d898485473e3507374cea2e09f019c2ff5728f0911aa36c70b7a7235e9bc8ac": write tcp 192.168.65.3:58604->192.168.65.1:3128: write: broken pipe

3. Closed Connection(连接关闭)错误

My-MacBook-Pro-2 producer % docker push <awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer:latest
The push refers to repository [<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/producer]
a0ee1f650005: Layer already exists 
c7890551eec4: Already exists 
b32c59a2510d: Pushing [======================>                            ]   7.93MB/17.82MB
3d898485473e: Pushing [=============>                                     ]   7.93MB/30.05MB
5b316a2cb183: Pushing [==>                                                ]  7.864MB/195.2MB
45dff4c2315c: Pushed 
failed to copy: failed to do request: Put "https://<awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com/v2/producer/blobs/uploads/1867b7ba-801e-473d-b876-3d605b084822?digest=sha256%3Ab32c59a2510d79e17fa6c4c4598df1fa2a9d03967a435984e9fd8231d9d7b541": write tcp 192.168.65.3:59342->192.168.65.1:3128: use of closed network connection

Docker版本信息

My-MacBook-Pro-2 producer % docker version
Client:
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:26:02 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.31.0 (153195)
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:29:12 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Dockerfile内容

FROM openjdk:19-jdk-slim
WORKDIR /app
COPY target/*-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

排查与解决方案

1. 检查代理配置

错误日志中出现192.168.65.1:3128,这是Docker Desktop内置代理地址:

  • 打开Docker Desktop -> Settings -> Resources -> Proxies,确认代理配置是否正确,无需代理则选择"No proxy",重启Docker后重试。
  • 检查系统代理状态,若开启需确保Docker适配代理规则,或临时关闭系统代理后测试。

2. 降低推送并发数

多线程推送易因网络不稳定中断,尝试单线程推送:

docker push --max-concurrent-uploads 1 <镜像名称:标签>

3. 重新登录远程仓库

  • AWS ECR:刷新登录凭证
aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin <awsAccountId>.dkr.ecr.ap-south-1.amazonaws.com
  • Docker Hub:重新验证凭证
docker login

4. 重置Docker网络配置

打开Docker Desktop -> Settings -> Network -> 点击"Reset to factory defaults",重置后重启Docker再尝试推送。

5. 优化镜像大小与分层

使用多阶段构建减小镜像体积,减少推送数据量:

# 构建阶段
FROM maven:3.8.6-openjdk-19 AS builder
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src/ ./src/
RUN mvn package -DskipTests

# 运行阶段
FROM openjdk:19-jre-slim
WORKDIR /app
COPY --from=builder /app/target/*-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

6. 检查本地安全工具

临时关闭本地防火墙、杀毒软件等网络拦截工具,确认是否因拦截导致推送失败。


内容的提问来源于stack exchange,提问作者sss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:05:00