在生产部署时将容器连接在一起

我想将我当前的部署迁移到docker,它依赖于mongodb服务,redis服务,pg服务器和rails应用程序,我已经为每个服务器创build了一个docker容器,但是我怀疑何时启动并链接它们。 在开发中,我使用无花果,但我认为这不意味着用于生产。 为了将部署到生产级别,我应该使用什么机制来自动启动和链接容器? 我的部署使用一个已经运行Ubuntu的单一docker主机,所以我不能使用CoreOS。

在生产Linknig容器是一件棘手的事情。 它将硬连接从属容器的IP地址,所以如果你需要重启容器或者启动一个replace(例如升级mongodb的版本),那么你的rails应用程序将无法使用新的容器和新的IP地址。

这个其他答案解释了一些可用的替代链接。

关于启动容器,您可以使用任何部署工具来运行所需的泊坞窗命令(Capistrano可以很容易地做到这一点)。 之后,docker将在重启后重启运行容器。

你可能需要一个观察者进程才能重新启动容器,就像你有一个正常的Rails应用程序一样。

像Tutum和Dockerize.it这样的服务可以使这个更简单。 据我所知,Tutum将不会部署到您的服务器。 Dockerize.it会但是很粗糙(免责声明:我是团队的一部分)。

你可以用fig2coreos将你的figconfiguration转换成fig2coreos格式化的systemdconfiguration文件。 Google App Engine 支持CoreOS ,或者您可以在AWS或您select的云提供商上运行CoreOS。 fig2coreos也支持部署到Vagrant的CoreOS进行本地开发。

CenturyLink( fig2coreos作者) 在这里有一个示例博客文章:

本博客文章将向您展示如何弥补使用Fig构build复杂的多容器应用程序与将这些应用程序部署到生产CoreOS系统之间的差距。

编辑:如果你被约束到一个现有的主机操作系统,你可以使用QEMU (“一个通用和开源的机器模拟器和虚拟器”)来承载一个CoreOS实例。 说明可从CoreOS团队获得 。