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