链接 docker 个容器之间的通信

Communication between linked docker containers

我在主机上的以下设置中有两个 docker 容器:

场景 1

  1. 我启动容器 1 并获取它的 IP 地址。
  2. 我使用这个 IP 地址并用它配置 Container 2 并启动它。
  3. 容器 2 可以通过调用 udp://Container_1_IP:5043
  4. 向容器 1 发送 UDP 数据

一切正常!!

场景 2

  1. 我通过将 5043 UDP 端口映射到主机的 5043 端口来启动容器 1 (0.0.0.0:5043:5043)
  2. I link 容器 2 和容器 1 使用“--links”。
  3. 现在,当容器 2 调用 URL udp://Container_1_IP:5043 时,将抛出错误“Connection refused”。
  4. 我确实验证了我能够使用 IP 从容器 2 内部对容器 1 执行 ping 操作。

任何帮助我使场景 2 工作的人都将不胜感激!

Docker links所述:

Docker also defines a set of environment variables for each port exposed by the source container.
Each variable has a unique prefix in the form:

<name>_PORT_<port>_<protocol>

The components in this prefix are:

  • the alias specified in the --link parameter (for example, webdb)
  • the <port> number exposed
  • a <protocol> which is either TCP or UDP

这意味着您需要确保 Container1 使用正确的协议(在您的情况下为 UDP)公开正确的端口:请参阅“How do I expose a UDP Port on Docker?