You need to enable JavaScript to run this app. 流水线推送容器到本地非安全registry,修改daemon.json未生效如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

流水线推送容器到本地非安全registry,修改daemon.json未生效如何解决?

问题原因

你遇到的报错是Docker客户端默认要求所有registry交互走HTTPS协议,但你本地部署的registry仅提供HTTP服务,所以触发了http: server gave HTTP response to HTTPS client错误。
你之前直接写入daemon.json未生效的核心原因是修改Docker守护进程配置后必须重启Docker服务才会加载新配置,同时可能存在配置覆盖、执行上下文不对等额外问题。

正确处理步骤
  • 第一步:正确配置insecure-registries(避免覆盖原有配置)
    如果你原有/etc/docker/daemon.json存在其他配置,直接echo覆盖会导致原有配置丢失,建议用jq命令合并配置:

    # 没有jq的话先安装:apt install jq / yum install jq
    jq '. + {"insecure-registries": [(.["insecure-registries"] // [])[], "<local_host_name>.local:32000"] | unique}' /etc/docker/daemon.json > /tmp/daemon.json && mv /tmp/daemon.json /etc/docker/daemon.json
    

    如果你确定没有原有配置,可以直接执行你原来的写入命令。

  • 第二步:重启Docker守护进程加载配置
    主流Systemd发行版执行如下命令:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    如果你用的是Docker Desktop,直接在客户端界面选择重启Docker即可。

  • 第三步:验证配置是否生效
    执行如下命令查看Docker生效配置:

    docker info | grep -A 5 "Insecure Registries"
    

    确认输出中包含你添加的<local_host_name>.local:32000地址,说明配置已生效。

  • 第四步:排查特殊场景问题
    如果上述操作后还是报错,检查你的流水线执行场景:

    如果你的流水线任务是在Docker容器内执行(即Docker-in-Docker DinD模式),需要确认你修改的是实际执行docker push命令的Docker实例的daemon.json,而不是外层宿主机的配置,修改后同样要重启对应Docker实例。
    确认流水线agent可以正常解析<local_host_name>.local主机名到registry所在机器的IP,可在agent上执行ping <local_host_name>.local验证连通性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:06:01