【发布时间】:2015-04-01 02:06:09
【问题描述】:
我有一个服务器应用程序需要几分钟才能完全启动并准备好处理请求。当容器知道它已经启动时,我想让容器向 NGINX 负载均衡器注册自己,但我不知道如何确定分配给容器的端口 docker(我用 docker run 开始了很多这些 - P)。有什么想法吗?
谢谢,
伊恩
【问题讨论】:
我有一个服务器应用程序需要几分钟才能完全启动并准备好处理请求。当容器知道它已经启动时,我想让容器向 NGINX 负载均衡器注册自己,但我不知道如何确定分配给容器的端口 docker(我用 docker run 开始了很多这些 - P)。有什么想法吗?
谢谢,
伊恩
【问题讨论】:
默认情况下,您无法从容器内部与 docker 守护程序对话,您也不应该尝试这样做。从容器的角度来看,它在端口 80 或任何 webapp 的默认端口上运行进程。
要确定分配给容器的端口,您可以在运行容器的主机上使用docker port 或docker inspect 命令。
docker port my_webapp_1
这将返回容器的映射端口列表。
docker inspect my_webapp_1
这将返回一个 json,您可以在其中找到 NetworkSettings,其中列出了容器的所有端口以及它们映射到的主机端口。
您可以运行一个额外的进程,从 docker port 或 docker inspect 读取此数据并更新您的 nginx 配置。
【讨论】:
您可以从容器内部使用hostname(等于容器ID)并将其发送到主机。然后主机将在该主机名上使用docker inspect 来获取端口。
【讨论】: