Docker端口检测

Docker端口检测,docker,Docker,我有一个docker容器监听套接字,比如说它的udp端口20000。(这是输入的物联网udp数据) 此应用程序可以(也应该)进行负载平衡 我将其发布到docker主机并公开端口。Docker在Docker主机上分配一些随机端口 我需要将此容器添加到位于docker网络外部的loadbalancer上的池中 如何实现自动化?每当这个容器的新实例启动时,我都需要将它添加到池中。当它死亡时,我需要将其从池中移除。对我有效的模式是使用两件: ,它在容器联机时检测容器,并将其注册到一种服务注册表中(例如)

我有一个docker容器监听套接字,比如说它的udp端口20000。(这是输入的物联网udp数据)

此应用程序可以(也应该)进行负载平衡

我将其发布到docker主机并公开端口。Docker在Docker主机上分配一些随机端口

我需要将此容器添加到位于docker网络外部的loadbalancer上的池中


如何实现自动化?每当这个容器的新实例启动时,我都需要将它添加到池中。当它死亡时,我需要将其从池中移除。

对我有效的模式是使用两件:

  • ,它在容器联机时检测容器,并将其注册到一种服务注册表中(例如)
  • 感知(监视)已注册服务并相应更改其配置的负载平衡器。在我的特殊情况下,它得到了的支持,它在自动化所有这些东西方面做了很好的工作

  • 一般来说,这种图案在细节上可能会有所不同,但通常都是这样。

    对我有效的图案是使用两件:

  • ,它在容器联机时检测容器,并将其注册到一种服务注册表中(例如)
  • 感知(监视)已注册服务并相应更改其配置的负载平衡器。在我的特殊情况下,它得到了的支持,它在自动化所有这些东西方面做了很好的工作

  • 一般来说,这种模式在细节上可能有所不同,但通常情况下是这样的。

    您可能希望订阅docker事件,然后在收到开始/停止事件时检查端口的映像,并使用负载平衡器进行适当操作。如果您使用
    --name mycontainer\u app
    启动容器,您可以使用
    docker inspect mycontainer\u app
    等就像docker inspect--format{{(index(index.NetworkSettings.Ports“20000/tcp”)0.HostPort}}mycontainer_app应该为您提供此端口查看我的答案中的更多详细信息在我的答案中,此命令输出为
    49153
    您可能希望订阅docker事件,然后在获得启动/停止事件时检查端口的映像,并使用LoadBalancer正确操作。如果您使用
    --name mycontainer\u app
    启动容器,您可以只使用
    docker inspect mycontainer\u app
    等正是类似于
    docker inspect--format'{(index(index.NetworkSettings.Ports“20000/tcp”)0.HostPort}}}mycontainer_应用程序
    的东西,应该为您提供此端口查看我的答案中的更多详细信息在我的答案中,此命令输出为
    49153