【问题标题】:How to access host port from docker container which is bound to localhost如何从绑定到 localhost 的 docker 容器访问主机端口
【发布时间】:2021-05-21 10:13:56
【问题描述】:

我在自己的 docker-compose.yaml 文件中定义了服务,它们 拥有自己的桥接网络以相互通信。

其中一项服务需要访问主机上运行的服务。

根据this answer,我在docker-compose.yaml 文件中的服务中添加了以下几行:

extra_hosts:
  - "host.docker.internal:host-gateway"

尽管在主机上运行的服务需要绑定到0.0.0.0,但这仍然有效。如果我绑定到localhost,我将无法访问它们。但我不想将端口暴露给其他任何人。

有没有办法通过桥接网络模式实现这一点?

我正在使用以下版本:

  • Docker 版本 20.10.5,构建 55c4c88
  • docker-compose 版本 1.28.5,构建未知

我正在运行aarch64

【问题讨论】:

    标签: docker networking docker-compose


    【解决方案1】:

    解决方案只是对其他阅读的误解。例如

    当我在 docker-compose.yaml 文件中明确定义了一个额外的桥接网络时,我假设我必须将主机上的服务绑定到该特定接口的 IP 地址(我检查了容器的 IP 地址,然后查找主机接口列表中的地址),即172.20.0.1

    但是docker0172.17.0.1(应该是默认值)。

    将宿主机上的服务绑定到docker0 IP地址后,添加

    extra_hosts:
      - "host.docker.internal:host-gateway"
    

    到 `docker-compose.yaml',我可以访问它,但它也被其他人阻止了。

    正如here 所解释的那样,这可能会起作用的解释是,b/c 每个 docker 容器内的 IP 路由都包含docker0 IP 地址,即使您设置了自己的网络。

    如果我搞混了,请纠正我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多