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

Mac本地运行Docker Registry代理时Docker登录失败原因咨询

问题原因分析

在macOS上使用Docker Desktop时,Docker daemon并非直接运行在macOS宿主系统中,而是运行在后台一个隐藏的Linux虚拟机里,这是导致问题的核心原因:

  • 容器运行代理时成功的逻辑:
    当你用docker run -p 5000:5000启动代理容器时,Docker会自动完成端口转发——将Linux虚拟机的5000端口映射到macOS宿主的5000端口。此时执行docker login localhost:5000,实际上是Docker daemon(虚拟机内的进程)访问虚拟机自身的localhost:5000,这个请求会被转发到宿主上的代理容器,因此登录成功。

  • 本地运行代理时失败的逻辑:
    直接在macOS宿主运行代理时,代理监听的是宿主系统的[::]/0.0.0.0(即宿主的所有网络接口)。但Docker daemon所在的Linux虚拟机,其localhost指向的是虚拟机自身的回环接口,而非宿主的回环接口。由于虚拟机和宿主属于独立的网络环境,虚拟机默认无法直接访问宿主的localhost端口,因此会出现dial tcp [::1]:5000: connect: connection refused错误。

验证方法

如果想验证这个逻辑,可以用macOS宿主的实际局域网IP(比如通过ifconfig en0查看的inet地址)代替localhost执行登录命令:

docker login -u admin -p password <宿主局域网IP>:5000

此时Docker daemon会直接访问宿主的外部网络接口,应该能成功连接到本地运行的代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:02:39