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

Docker Desktop(Windows)仅引擎运行时登录私有镜像仓库报连接拒绝

问题解决:Docker Desktop运行时无法连接Windows主机端口转发的私有镜像仓库

问题复现

在Kubernetes中部署私有镜像仓库后,通过kubectl port-forward docker-registry-6bc94649d-529hq 443:5000在Windows主机做端口转发:

  • Windows主机上用curl -k https://localhost:443/v2/_catalog -u admin:pass和浏览器均可正常访问仓库
  • Docker Desktop引擎未运行时,docker login 127.0.0.1:443显示登录成功(实际是客户端未连接daemon,无真实请求)
  • Docker Desktop引擎运行时,执行docker login 127.0.0.1:443报错:Error response from daemon: Get "http://127.0.0.1:443/v2/": dial tcp 127.0.0.1:443: connect: connection refused,且端口转发无请求记录
  • 已添加防火墙规则允许Docker程序连接,关闭防火墙也无效

核心原因

Docker Desktop在Windows默认使用WSL2后端,此时Docker daemon运行在WSL2虚拟机内部:

  • 当Docker引擎运行时,docker客户端实际是和WSL2里的daemon通信,127.0.0.1指向的是WSL2虚拟机的本地回环,而非Windows主机的回环地址
  • 你在Windows主机上做的端口转发仅绑定到Windows的回环或局域网IP,WSL2内部无法直接访问Windows主机的127.0.0.1

解决方案

方案1:使用Windows主机的局域网IP登录

  1. 查看Windows主机的局域网IP(执行ipconfig,找到以太网/WLAN的IPv4地址,比如192.168.3.10)
  2. 修改端口转发命令,绑定到所有网卡(确保WSL2能访问):
    kubectl port-forward --address 0.0.0.0 docker-registry-6bc94649d-529hq 443:5000
    
  3. 执行docker登录命令,替换为Windows局域网IP:
    docker login 192.168.3.10:443 -u admin -p pass
    

方案2:配置Docker daemon信任私有仓库(针对HTTPS自签名或HTTP仓库)

如果你的私有仓库使用自签名证书或HTTP协议,还需要让Docker daemon信任该仓库:

  1. 打开Docker Desktop设置 -> Docker Engine
  2. 在配置中添加insecure-registries字段:
    {
      "insecure-registries": ["192.168.3.10:443"],
      "registry-mirrors": [],
      "debug": false,
      "experimental": false
    }
    
  3. 点击"Apply & Restart"重启Docker daemon
  4. 再次执行登录命令即可

方案3:映射WSL2端口到Windows主机(可选)

如果需要在WSL2内部也能访问,可手动添加WSL2到Windows的端口转发(以管理员身份打开PowerShell):

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=443 connectaddress=$(wsl hostname -I | cut -d' ' -f1) connectport=443

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:00:29