【问题标题】:Docker Inter-container communication without port number没有端口号的 Docker 容器间通信
【发布时间】:2021-02-05 12:35:16
【问题描述】:

我在 1 个主机上有 2 个 docker 容器(容器名称:A 和 B),它们连接到同一个用户定义的网桥(测试网桥)。

目标状态/尝试实现:
能够仅通过主机名而不是主机名:端口从容器 A 调用容器 B。
当前状态:
我能够调用 API 的托管通过 url http://{{containerName:portNumber} 在容器 B 内,即来自容器 A 的 http://B:6000。
我想删除端口号,因为 IMO 与同一个网络连接容器名称应该足以解决对目标容器的请求。
有没有办法通过这种方法进行容器间通信

更新
仍在寻找解决方案,因为我正在处理的包将是一个核心实用程序(至少 3 个容器),它将与其他 docker 应用程序一起部署。端口号 80 只能帮助 1 个容器,但要调用其他实用程序,调用者需要附加我无法公开的端口号,因为它是基础设施/网络级别的信息。

【问题讨论】:

  • 端口也是必不可少的信息,因为6000是一个非标准的HTTP端口(标准是80)。如果是 80,您可以省略它,对于 HTTPS,您可以省略端口 443。您的服务无法知道 API 正在侦听另一个容器中的端口 6000。
  • hmm..我期待容器的名称是否已经存在于同一个网络上,它可以很容易地被 docker 提取/识别,它可以省去硬编码端口的麻烦网址
  • 如果硬编码端口是问题,那么将其设置在变量中并在 URL 中使用该变量?

标签: docker docker-networking


【解决方案1】:

您可以使用 HTTP 默认端口 (80),然后您不必指定它。

将您的应用 B 更改为在端口 80 上侦听 - 这样您就可以在不添加端口号的情况下调用 http://B。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多