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

Windows版Docker Desktop的Linux容器无法访问本地服务如何解决

Windows Docker Desktop Linux容器无法访问宿主机本地服务解决方法

问题复现说明

Linux容器内使用host.docker.internal无法访问Windows本地监听的8000、9092端口服务,官方示例测试流程也无法连通。

逐一排查解决步骤

1. 修正本地服务监听地址

  • 绝大多数访问失败是因为本地服务仅绑定了127.0.0.1回环地址,该地址仅允许本机内部访问,Docker容器属于外部网络节点无法访问。
  • Windows本地CMD执行netstat -ano | findstr "监听端口号"(替换为8000或9092),如果返回结果中监听地址为127.0.0.1:端口号,需要修改服务启动配置,将监听地址改为0.0.0.0。
  • 测试用的Python HTTP服务启动时就需要指定监听地址:
    Python3执行:python -m http.server 8000 --bind 0.0.0.0
    Python2执行:python -m SimpleHTTPServer 8000(Python2默认绑定0.0.0.0,无需额外参数)

2. 配置容器hosts映射

低版本Docker Desktop不会自动注入host.docker.internal的域名映射,启动容器时需手动添加参数:

docker run --rm -it --add-host=host.docker.internal:host-gateway alpine sh

进入容器后先执行cat /etc/hosts确认存在host.docker.internal的映射记录,再安装curl执行测试。

3. 调整Windows防火墙规则

Windows防火墙默认拦截Docker容器子网的入站请求,可先临时关闭当前使用网络的防火墙(专用/公用网络),重新执行curl测试:

  • 测试连通后,不需要长期关闭防火墙,可在Windows高级防火墙中添加入站规则,允许Docker默认子网192.168.65.0/24的入站请求,或者单独开放需要的9092、8000端口。

4. 直接使用宿主机物理IP访问

如果域名解析存在异常,可直接使用宿主机的物理IP访问:

  • Windows本地CMD执行ipconfig,找到当前使用的以太网/WiFi网卡对应的IPv4地址
  • 容器内执行curl http://<宿主机IPv4地址>:8000测试连通性,连通后将代码中的host.docker.internal替换为该IP即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:02