本地推送Docker镜像至私有仓库失败:HTTP响应转HTTPS客户端错误
本地推送Docker镜像到局域网Registry失败的排查与解决
尝试将本地Docker镜像推送到局域网内另一台机器运行的Docker Registry,仓库主机本地推送正常,但本地电脑无法推送。已在仓库主机的/etc/docker/daemon.json中配置insecure-registries参数,问题仍未解决。
仓库主机Docker Info信息
Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.8.2-docker) compose: Docker Compose (Docker Inc., v2.6.0) scan: Docker Scan (Docker Inc., v0.17.0) Server: Containers: 6 Running: 6 Paused: 0 Stopped: 0 Images: 6 Server Version: 20.10.17 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux Default Runtime: runc Init Binary: docker-init containerd version: 0197261a30bf81f1ee8e6a4dd2dea0ef95d67ccb runc version: v1.1.3-0-g6724737 init version: de40ad0 Security Options: apparmor seccomp Profile: default Kernel Version: 5.4.0-99-generic Operating System: Ubuntu 20.04.4 LTS OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.935GiB Name: mongo-dav-ubuntu ID: KAQO:FLF5:CNCJ:M6GN:W6ML:LBGW:YJ5S:IPM4:FJLF:FH5G:BIXU:HBUR Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: {host-machine-local-domain}:9000 127.0.0.0/8 Live Restore Enabled: false WARNING: No swap limit support
本地电脑报错信息
The push refers to repository [{host-machine-local-domain-name}:9000/alpine] Get "https://{host-machine-local-domain-name}:9000/v2/": http: server gave HTTP response to HTTPS client
仓库主机Docker容器运行状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4a55c18e4141 registry:2 "/entrypoint.sh /etc…" About an hour ago Up 25 seconds 5000/tcp, 0.0.0.0:9000->80/tcp, :::9000->80/tcp vibrant_shockley
排查与解决步骤
- 错误核心原因:报错显示本地Docker客户端默认以HTTPS协议访问Registry,但你的Registry是HTTP服务,且仅在仓库主机配置了不安全Registry信任,本地电脑未做对应配置。
- 本地电脑配置不安全Registry:
- 找到对应系统的Docker配置文件:
- Linux/macOS:
/etc/docker/daemon.json - Windows:
C:\ProgramData\docker\config\daemon.json(文件不存在则新建)
- Linux/macOS:
- 添加以下配置(替换为实际的局域网域名或IP):
{ "insecure-registries": ["{host-machine-local-domain-name}:9000"] } - 重启本地Docker服务:
- Linux/macOS:执行
sudo systemctl restart docker - Windows:在服务管理器中重启Docker Desktop服务
- Linux/macOS:执行
- 找到对应系统的Docker配置文件:
- 验证服务与网络连通性:
本地电脑执行curl http://{host-machine-local-domain-name}:9000/v2/,返回{}则说明Registry服务正常且网络可达。 - 确认端口映射配置:从容器运行信息看,主机9000端口已映射到容器80端口,且你已设置
HTTP_SERVER_ADDR为80,这部分配置无问题。
内容的提问来源于stack exchange,提问作者Yasin Kuru
相关产品推荐
相关产品推荐

