求助:无法将服务推送至AWS上的Docker Registry
AWS Docker Registry推送失败:connection reset by peer 排查方案
修正推送地址:你用
localhost:8000指向的是本地机器,AWS上的Registry是远程服务器,必须替换成EC2实例的公网IP/弹性IP或域名,比如ec2-xx-xx-xx-xx.compute-1.amazonaws.com:8000/myapp.service:0.1。检查网络连通性:
- 本地执行
telnet <AWS服务器IP> 8000或nc -zv <AWS服务器IP> 8000,验证端口是否能正常访问。 - 若不通,检查AWS安全组:确保入站规则开放8000端口,允许你的本地IP访问;同时检查服务器本地防火墙(iptables/ufw),确认8000端口未被拦截。
- 本地执行
验证Registry服务状态:
- 登录AWS服务器,执行
docker ps确认Registry容器处于Up状态。 - 查看容器日志
docker logs <registry容器ID>,排查启动或运行时的报错信息。 - 确认容器端口映射正确:Registry默认内部端口是5000,启动命令需确保主机8000映射到容器5000,比如
docker run -d -p 8000:5000 registry:latest。
- 登录AWS服务器,执行
配置Docker客户端允许不安全Registry:
- 若Registry使用HTTP协议,需在本地Docker配置文件
/etc/docker/daemon.json(Linux)或C:\ProgramData\Docker\config\daemon.json(Windows)中添加:{ "insecure-registries": ["<AWS服务器IP>:8000"] } - 重启Docker服务:
systemctl restart docker(Linux)或通过系统服务管理器重启(Windows)。
- 若Registry使用HTTP协议,需在本地Docker配置文件
重新执行推送:使用修正后的地址执行推送命令:
docker push <AWS服务器IP>:8000/myapp.service:0.1
内容的提问来源于stack exchange,提问作者Love Kumar
相关产品推荐
相关产品推荐

