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

macOS下Docker Compose创建的Spring Boot容器无法访问求助

解决macOS下Docker host模式容器与本地通信问题

问题根源

Docker Desktop在macOS系统中基于HyperKit虚拟机运行,当设置network_mode: "host"时,容器实际使用的是虚拟机的host网络栈,而非macOS宿主机的网络。这导致你直接用macOS本机的localhost或容器hostname无法访问容器服务,因为容器的端口绑定在虚拟机上,不是本机。

另外要注意:ping命令基于ICMP协议,不能带端口号,你之前执行的ping localhost:4445本身就是错误用法,正确格式是直接ping主机IP/域名,比如ping localhost。


解决方案

方案1:放弃host网络模式(推荐)

macOS环境下network_mode: "host"实用价值极低,建议移除该配置,保留端口映射,让Docker自动完成端口转发:

修改后的docker-compose配置片段:

authentication-server:
     build: ./authentication-server
     image: authentication-server:0.0.9
     hostname: authentication-srv
     ports:
      - "4445:4445"

重启服务后,直接用localhost:4445在Postman中发送请求即可。

方案2:必须使用host网络模式时的处理

如果业务需求必须保留network_mode: "host",需要找到Docker虚拟机的IP地址:

  • 终端执行以下命令获取虚拟机网关IP(即容器所在host网络的IP):
    docker run --rm alpine ip route | grep default | awk '{print $3}'
    
  • 或者打开Docker Desktop,进入Settings > Resources > Network,查看Subnet对应的网关地址(通常为192.168.65.1或类似)。

之后用这个虚拟机IP代替localhost,在Postman中请求http://[虚拟机IP]:4445即可完成通信。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:03:04