容器启动后,它将向管理器发送一个http请求及其地址和端口
这是行不通的。从容器内部,您无法确定容器端口映射到哪个Docker主机端口。
我能想到的是哪种方法最有效,并且与您所描述的最接近,这是 使容器打开与管理器的websocket连接 。这样的连接将允许您的管理器和容器之间通过HTTP进行两种方式的通信。
您试图实现的目标称为服务发现。已经有用于Docker的服务发现工具。您应该选择其中之一,而不要尝试自己制造。
例如参见:
如果您确实要实现服务发现系统,那么一种方法是让您的经理使用docker event
命令(或docker客户端库之一)。这样一来,您的经理就可以在容器方面无任何事的情况下收到有关容器创建/删除的通知。
然后查询Docker主机以使用找出映射到您的容器的端口docker port
。