Docker 如何刷新容器链接

Docker 如何刷新容器链接,docker,Docker,我有两个Docker:一个是nginx前端,另一个是expressjs应用程序。Nginx是入口点,它是expressjs的代理 我有: 之后,当我更新图像geographica/expressjs时,我需要重新创建expressjs容器: docker stop expressjs && docker rm expressjs && docker run -d --name 'expressjs' geographica/expressjs 此时,我还需要重

我有两个Docker:一个是nginx前端,另一个是expressjs应用程序。Nginx是入口点,它是expressjs的代理

我有:

之后,当我更新图像geographica/expressjs时,我需要重新创建expressjs容器:

docker stop expressjs && docker rm expressjs && docker run -d --name 'expressjs' geographica/expressjs 
此时,我还需要重新创建nginx容器。在不重新创建nginx容器的情况下,我如何做到这一点

这简化了我们的问题,我们真正的服务器有一个nginx前端和N个应用程序,因此每次更新一个应用程序时,我们都需要重新启动nginx并停止其他应用程序的服务

请避免使用docker compose解决方案。我不希望所有应用程序都有一个唯一/巨大的docker compose文件

更新:

我也认为那样的东西会很有用。使用docker link命令在运行时更改容器链接。不幸的是,它在1.8.2中仍然不可用。

中讨论了这一点:

如果我显式地执行docker重启,IP将正确更新,但是我使用的是“systemctl restart”,它在运行之前执行停止、终止和rm操作

在这种情况下(“stop-rm-run”),链接不会刷新:

docker不认为应该链接到具有相同名称的容器

保持这种“链接”并不总是有意义的,毕竟新容器可能完全不相关

我的解决方案和建议是:

  • 您可以研究一些更健壮的东西,例如,这只是一种花哨的方式,表示您链接到一个永远不会重新启动的代理,以保持docker链接处于活动状态。
    (还)
  • 另一个解决方案是只创建
    docker
    docker start
    docker stop
    而不是
    docker rm
  • 最后,我的实际解决方案是使用SkyDNS或docker gen之类的东西来保留一个包含所有容器名称的中央DNS。最后一个解决方案对我来说是最好的,因为它允许我在主机之间移动容器,docker链接不能这样工作
随着docker的下一个版本的推出,它将成为未来的发展方向。
(见“”和“”)

docker stop expressjs && docker rm expressjs && docker run -d --name 'expressjs' geographica/expressjs