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

Docker容器内如何使用自定义hostname访问同网络下的其他容器服务

解决方案

你可以根据实际需求选择以下任意一种配置方案:


方案1:容器间走内部网络互通(性能更好,不走宿主机端口映射)

Docker Compose 默认会为所有服务创建专属网桥网络,你只需要给home_app配置网络别名,让同网络内的容器可以通过home.local解析到它的IP即可。

修改后的docker-compose配置:

services:
  home_app:
    hostname: "home.local"
    image: "home-app"
    ports:
      - "8180:8080"
    # 新增网络别名配置
    networks:
      default:
        aliases:
          - home.local

  data_app:
    hostname: "data.local"
    image: "data-app"
    # 原有links配置可以删除,该特性已过时,网络别名可以替代其功能
    ports:
      - "9010:9010"

注意事项:

容器内部直接互通时,访问的是home_app的内部服务端口,也就是你的服务实际监听的8080,所以默认访问地址为http://home.local:8080。如果你一定要使用8180端口,只需要把home_app内部服务的监听端口改为8180,同时将端口映射规则改为8180:8180即可。


方案2:走宿主机端口映射互通(无需调整服务端口,和外部访问逻辑一致)

如果你不想调整服务本身的端口配置,还想和外部访问一样使用http://home.local:8180访问,可以直接给data_app配置hosts规则,把home.local指向宿主机IP,逻辑和你现在用host.docker.internal:8180完全一致。

修改后的docker-compose配置:

services:
  home_app:
    hostname: "home.local"
    image: "home-app"
    ports:
      - "8180:8080"

  data_app:
    hostname: "data.local"
    image: "data-app"
    ports:
      - "9010:9010"
    # 新增hosts配置,host-gateway为Docker内置的宿主机IP别名
    extra_hosts:
      - "home.local:host-gateway"

注:host-gateway特性需要Docker 20.10及以上版本支持,如果你使用的是旧版本Docker,可以把host-gateway替换为你宿主机的实际IP地址。

这个方案不需要修改home_app的任何配置,也不需要调整服务端口,配置完成后在data_app里直接访问http://home.local:8180即可正常调用接口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:57:02