链接 docker 个容器之间的通信
Communication between linked docker containers
我在主机上的以下设置中有两个 docker 容器:
- 容器 1 - UDP 端口 5043 映射到主机端口 5043 (0.0.0.0:5043:5043)
- 容器 2 - 需要将数据作为 UDP 发送到端口 5043 上的容器 1。
场景 1
- 我启动容器 1 并获取它的 IP 地址。
- 我使用这个 IP 地址并用它配置 Container 2 并启动它。
- 容器 2 可以通过调用
udp://Container_1_IP:5043
向容器 1 发送 UDP 数据
一切正常!!
场景 2
- 我通过将 5043 UDP 端口映射到主机的 5043 端口来启动容器 1 (
0.0.0.0:5043:5043
)
- I link 容器 2 和容器 1 使用“
--links
”。
- 现在,当容器 2 调用 URL
udp://Container_1_IP:5043
时,将抛出错误“Connection refused
”。
- 我确实验证了我能够使用 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?”
我在主机上的以下设置中有两个 docker 容器:
- 容器 1 - UDP 端口 5043 映射到主机端口 5043 (0.0.0.0:5043:5043)
- 容器 2 - 需要将数据作为 UDP 发送到端口 5043 上的容器 1。
场景 1
- 我启动容器 1 并获取它的 IP 地址。
- 我使用这个 IP 地址并用它配置 Container 2 并启动它。
- 容器 2 可以通过调用
udp://Container_1_IP:5043
向容器 1 发送 UDP 数据
一切正常!!
场景 2
- 我通过将 5043 UDP 端口映射到主机的 5043 端口来启动容器 1 (
0.0.0.0:5043:5043
) - I link 容器 2 和容器 1 使用“
--links
”。 - 现在,当容器 2 调用 URL
udp://Container_1_IP:5043
时,将抛出错误“Connection refused
”。 - 我确实验证了我能够使用 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?”