如何在Docker中组成容器?

现在我正在开发新内容,以便构build服务器。

在我的服务器上,基本系统是Cent OS(7),我安装了Docker,取出了os os,并用uwsgi和nginxbuild立了“WEB SERVER容器”Django。

但是我想要的服务,(数据库与Postgres),什么是最好的办法呢?

  1. 在我现有的容器(使用Web服务器)上安装postgres

  2. 只为数据库build立新的容器。

我想知道这些优点和弱点。

如果要在重新启动后将数据保留在数据库中,则数据库不应位于容器中,而应位于主机上。 我会假设你也想在一个容器中的数据库。

build立第二个容器还有很多工作要做。 你应该find一个方法,容器知道彼此的地址。 每次启动容器时地址都会更改,因此您需要在主机上创build一些脚本。 主机必须找出ip-address并通知容器。

这些容器可能需要用另一个容器的地址更新/ etc / hosts文件。 当你想模拟不同的服务器和执行弹性testing这是一个很好的解决scheme。 在这个运行良好之前,你将需要相当多的bash知识。

在所有其他情况下select一个容器。 将所有东西安装在一个容器中比较容易设置和事后开发。 设置Docker只是你想要做真正工作的环境。 模具应该帮助你实际工作,而不是花费你所有的时间和精力。

使用两个单独的容器是惯用的。 而且,这更简单 – 如果容器中有两个或更多进程,则需要父进程来监视它们(通常人们使用诸如supervisord之类的进程pipe理器)。 只有一个过程,你不需要这样做。

通过监视,我主要表示如果容器收到SIGSTOP信号,则需要确保所有进程都正确closures。 如果你不这样做,你会最终僵尸进程。 如果只有信号处理或使用stream程pipe理器,则不必担心这一点。

此外,正如Greg指出的那样,拥有独立的容器可以让您分别编排和调度容器,因此您可以在不影响另一容器的情况下更新/更改/缩放/重新启动每个容器。