提供稳定的 url 以从另一个 docker 容器访问 docker 容器
Providing a stable url to access a docker container from another docker container
我们正在使用 docker-compose
来调出多个容器并将它们 link 放在一起。
我们需要能够将 url 服务 运行 的 containerA 保存在我们的数据存储中,以便我们可以在稍后使用它从 containerB 访问服务。 containerB 不必知道该服务是否 运行 作为本地容器,它应该能够获取 url 并使用它。
我们可以使用标准方式使用环境变量获取 linked 容器的地址,例如
http://$CONTAINER_A_SERVICE_PORT_9000_TCP_ADDR:$CONTAINER_A_SERVICE_PORT_9000_TCP_PORT/someresource
但我的理解是,如果我们存储这个 url 并尝试在重新启动容器后访问该服务, docker 可能已经为容器分配了一个新的端口 and/or ip并且地址可以invlaid.
目前我能想到的就是在主机上公开容器的端口,并使用主机的 public 地址作为容器的稳定端点,但我真的很想要一个解决方案避免进入 public 网络。
如有任何想法,我们将不胜感激。
我会使用放入 /etc/hosts
的 serviceB 的主机名
我们正在使用 docker-compose
来调出多个容器并将它们 link 放在一起。
我们需要能够将 url 服务 运行 的 containerA 保存在我们的数据存储中,以便我们可以在稍后使用它从 containerB 访问服务。 containerB 不必知道该服务是否 运行 作为本地容器,它应该能够获取 url 并使用它。
我们可以使用标准方式使用环境变量获取 linked 容器的地址,例如
http://$CONTAINER_A_SERVICE_PORT_9000_TCP_ADDR:$CONTAINER_A_SERVICE_PORT_9000_TCP_PORT/someresource
但我的理解是,如果我们存储这个 url 并尝试在重新启动容器后访问该服务, docker 可能已经为容器分配了一个新的端口 and/or ip并且地址可以invlaid.
目前我能想到的就是在主机上公开容器的端口,并使用主机的 public 地址作为容器的稳定端点,但我真的很想要一个解决方案避免进入 public 网络。
如有任何想法,我们将不胜感激。
我会使用放入 /etc/hosts