【问题标题】:How do I link a container in docker only if it exists when starting the container?仅当启动容器时存在容器时,如何在 docker 中链接容器?
【发布时间】:2015-03-12 01:20:08
【问题描述】:

在服务器中,我目前有许多 HTTP 应用程序正在运行,它们共享端口 80,所以我有一个主 nginx 容器,它基于主机名(反向代理)路由到特定应用程序。

但是,当我docker start nginx 时,所有这些容器都必须运行,因为我在第一次run nginx 容器时链接了所有这些容器。这会造成一个瓶颈,所以如果我的一个应用程序出现故障,我不能 start 主 nginx:

Error response from daemon: Cannot start container nginx: Cannot link to a non running container: /myapp AS /nginx/myapp

然后我的所有应用程序都关闭了,而不仅仅是一个。

像这样的设置是否有“最佳实践”?我是否应该每次都 run nginx 容器,而不是停止并启动它,然后添加当前正在运行的应用程序的链接?我应该将 nginx 放在主机级别而不是在容器中运行吗?

【问题讨论】:

    标签: nginx docker


    【解决方案1】:

    坦率地说,目前的链接还不足以解决这个问题,至少不能超出开发设置。我建议您使用键值存储或类似的东西来存储映射。

    【讨论】:

    • 你的意思是,然后在启动时动态创建 nginx 配置?
    • 是的,没错。您甚至可以更进一步,让流程定期检查活跃度和更新。它基本上涉及到服务发现的问题,你可能想看看 consul 和 etcd 之类的东西。
    • 这显然不是我希望的答案,使容器变得不必要地复杂。不过,这似乎是我的问题的解决方法。谢谢,祝书好运。
    • 也许这可以帮助建立这样的方法:jasonwilder.com/blog/2014/03/25/…
    • 很好,谢谢@Mykola。是的,另一种方法是监听容器上下移动的事件 API 并自行处理。
    猜你喜欢
    • 1970-01-01
    • 2019-08-14
    • 2014-12-20
    • 2020-01-21
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2014-09-24
    相关资源
    最近更新 更多