当前位置: 首页 > news >正文

Docker Push 常见报错及解决方案汇总

文章目录

  • 一、server gave HTTP response to HTTPS client
    • (一)问题描述
    • (二)原因分析
    • (三)解决方案
      • 1. 配置 `insecure-registries`(推荐测试环境)
      • 2. 配置 Registry 使用 HTTPS(推荐生产环境)
      • 3. 临时解决方案(不推荐生产)
    • (四)总结
  • 二、connection refused
    • (一)问题描述
    • (二)原因分析
    • (三)解决方案
      • 1. 检查 registry 服务状态
      • 2. 验证网络连接
      • 3. 检查 Docker 配置
      • 4. 检查认证状态
      • 5. 检查防火墙设置
    • (四)常见场景排查
      • 场景1:推送本地 registry 失败
      • 场景2:推送远程 registry 失败
      • 场景3:认证失败
    • (五)高级排查
    • (六)总结

一、server gave HTTP response to HTTPS client

(一)问题描述

在这里插入图片描述


(二)原因分析

执行 docker push 时出现该错误,是因为:

  1. Docker 默认要求 HTTPS,但目标 registry 仅支持 HTTP(未配置 TLS)。
  2. 未正确配置 insecure-registries,或配置后未生效(可能需重启 Docker)。

(三)解决方案

1. 配置 insecure-registries(推荐测试环境)

修改 Docker 配置文件(/etc/docker/daemon.json 或 Docker Desktop 的 daemon.json):

{
"insecure-registries": ["your.registry.domain:port"]
}

注意: 如果daemon.json文件中已经有其他配置,则追加insecure-registries配置时需要在前一个配置结尾处添加一个英文逗号!!!

是否需要重启?

  • Docker Engine < 17.07:必须重启(sudo systemctl restart docker)。
  • Docker Engine ≥ 17.07:通常自动生效,但 建议 重启确保生效。
  • Docker Desktop:一般自动加载,但网络相关更改可能需要重启。

验证是否生效:

docker info | grep "Insecure Registries"

2. 配置 Registry 使用 HTTPS(推荐生产环境)

  1. 为 registry 配置有效 SSL 证书(如 Let’s Encrypt 或自签名证书)。
  2. 确保 Docker 客户端信任该证书。

3. 临时解决方案(不推荐生产)

强制使用 HTTP:

docker --insecure-registry push your.registry.domain:port/image:tag

(四)总结

方案适用场景是否需要重启?
insecure-registries测试/内网旧版必须重启,新版建议重启
HTTPS 配置生产环境无需(但需证书)
--insecure-registry临时测试无需

最佳实践

  • 测试环境 → 用 insecure-registries,并重启 Docker 确保生效。
  • 生产环境 → 必须配置 HTTPS,避免安全风险。

二、connection refused

(一)问题描述

在这里插入图片描述

执行curl -XGET http://192.168.XXX.XXX:5000/v2/ catalog命令时会提示拒绝连接
在这里插入图片描述


(二)原因分析

当执行 docker push 命令时出现 “connection refused” 错误,通常表示 Docker 客户端无法连接到 registry 服务器。可能的原因包括:

  1. Registry 服务未运行
    • 目标 registry 服务没有启动
    • Registry 容器崩溃或停止

    多数是这个原因导致

  2. 网络连接问题
    • 错误的 registry 地址或端口
    • 防火墙/安全组阻止访问
    • 网络配置问题(DNS 解析失败等)
  3. Docker 配置问题
    • 未正确配置 insecure-registries(对于 HTTP registry)
    • Docker 代理设置不正确
  4. 认证问题
    • 未登录 registry 或认证失败
    • 凭证过期或无效

(三)解决方案

1. 检查 registry 服务状态

# 如果 registry 是本地运行的容器
docker ps | grep registry# 如果没有运行,启动 registry
docker run -d -p 5000:5000 --name registry registry:2

2. 验证网络连接

# 测试是否能访问 registry
telnet your.registry.domain 5000
# 或
nc -zv your.registry.domain 5000# 检查 DNS 解析
nslookup your.registry.domain

3. 检查 Docker 配置

# 查看当前 Docker 配置
docker info | grep -A 5 "Insecure Registries"# 如果需要添加 insecure-registry
# 编辑 /etc/docker/daemon.json
{
"insecure-registries": ["your.registry.domain:5000"]
}
# 然后重启 Docker
sudo systemctl restart docker

4. 检查认证状态

# 查看当前登录状态
cat ~/.docker/config.json# 登录 registry
docker login your.registry.domain

5. 检查防火墙设置

# Linux 检查防火墙
sudo iptables -L -n
sudo ufw status# 临时开放端口(示例)
sudo ufw allow 5000/tcp

(四)常见场景排查

场景1:推送本地 registry 失败

# 错误示例
docker push localhost:5000/my-image# 解决方案
# 1. 确保 registry 容器正在运行
# 2. 确保使用正确的端口
# 3. 对于 localhost registry,确保客户端和 registry 在同一主机

场景2:推送远程 registry 失败

# 错误示例
docker push my.company.com:5000/my-image# 解决方案
# 1. 检查网络连通性
# 2. 确保 registry 地址正确
# 3. 检查是否需要 HTTPS 配置

场景3:认证失败

# 错误示例
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io: connection refused# 解决方案
# 1. 检查网络连接
# 2. 尝试 docker login
# 3. 检查 DNS 设置

(五)高级排查

如果以上方法无效,可以尝试:

  1. 查看 Docker 详细日志
journalctl -u docker.service -n 50 --no-pager
  1. 启用 Docker 调试模式
# 编辑 /etc/docker/daemon.json
{
"debug": true
}
sudo systemctl restart docker
  1. 使用 curl 直接测试 registry API
curl -v http://your.registry.domain:5000/v2/_catalog

(六)总结

问题类型检查点解决方案
服务未运行docker ps启动 registry 容器
网络问题telnet/nc 测试检查防火墙/网络配置
配置问题docker info配置 insecure-registries
认证问题docker login重新登录 registry

按照以上步骤逐步排查,应该能解决大多数 “connection refused” 问题。如果问题仍然存在,可能需要检查更底层的网络或系统配置。


文章转载自:

http://pKTtu0Nz.btjyp.cn
http://nQrItNY6.btjyp.cn
http://iEFFUVWN.btjyp.cn
http://MFzMMi9c.btjyp.cn
http://RBIH5tKR.btjyp.cn
http://cyYuiNM9.btjyp.cn
http://9W96WtFc.btjyp.cn
http://Y69MNOaD.btjyp.cn
http://TovfIBQt.btjyp.cn
http://Driy58su.btjyp.cn
http://BVYUcDfX.btjyp.cn
http://IMOrosCU.btjyp.cn
http://2I8jGqX9.btjyp.cn
http://wxFehWDT.btjyp.cn
http://MhYQbkNc.btjyp.cn
http://oCZG7iYg.btjyp.cn
http://red7CFEM.btjyp.cn
http://O3xb3Xpo.btjyp.cn
http://umwF22cj.btjyp.cn
http://4TxZID9T.btjyp.cn
http://dwiNxnDW.btjyp.cn
http://Mq29Ytuq.btjyp.cn
http://UI0FhcrQ.btjyp.cn
http://Dv7MY29u.btjyp.cn
http://jwWsepet.btjyp.cn
http://9yASUcSb.btjyp.cn
http://I0Ux7u8X.btjyp.cn
http://uRVhAAyG.btjyp.cn
http://qey4gTVP.btjyp.cn
http://H25kAXPH.btjyp.cn
http://www.dtcms.com/a/386395.html

相关文章:

  • OCR 后结构化处理最佳实践
  • 软考 系统架构设计师系列知识点之杂项集萃(148)
  • P1425 小鱼的游泳时间
  • 弧焊机器人氩气焊接节能方法
  • 机器人导论 第六章 动力学(2)——拉格朗日动力学推导与详述
  • 在uniapp中调用虚拟机调试vue项目
  • UE5 GAS 技能系统解析:EGameplayAbilityTriggerSource 枚举详解
  • MySQL 基础概念与简单使用
  • PostgreSQL高可用架构实战:构建企业级数据连续性保障体系
  • (二)昇腾AI处理器计算资源层基础
  • C++17新特性:用[*this]告别悬垂指针,提升并发健壮性
  • Buck电路输出电容设计:从理论到实践的完整指南
  • Gin + Gorm:完整 CRUD API 与关系操作指南
  • 996引擎-ItemTips特效框层级自定义
  • 软考高级系统架构设计师之构件与中间件技术篇
  • Maya绑定案例:摆动、扭曲、拉伸(样条IK高级扭曲、表达式)
  • FOG钻井多花数倍成本?MEMS陀螺定向短节如何为成本做“减法”?
  • 性能分析工具的使用
  • DNS-Windows上使用DNS
  • Go 语言开发京东商品详情 API:构建高并发数据采集服务
  • 通用计算流体力学CFD软件VirtualFlow 2025发布,5大亮点
  • 趣味学RUST基础篇(实战Web server)完结
  • 机器人导论 第六章 动力学(1)——牛顿欧拉法推导与详述
  • Android U 浮窗——整体流程介绍(更新中)
  • Pytest+request+Allure
  • Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
  • [vue.js] 树形结点多选框选择
  • websocket python 实现
  • 使用代理访问网络各项命令总结
  • 信创电脑入门指南:定义、发展历程与重点行业部署详解