Docker - 每个容器一个进程?

Docker - one process per container?

我有时会使用 Docker 进行开发工作。当我这样做时,我通常会处理来自 tutum.

的现成 LAMP 图像

我的问题是:如果它在一个容器中运行多个进程,它不会破坏使用 Docker 的目的吗? (就像容器从 Tutum 的 LAMP 图像开始一样)Docker 的全部想法不是将每个进程分离到一个单独的容器中吗?

一般情况下,像这种情况一样,有时使用一个容器进行多个进程是必要的或更有用的。

当进程一起使用来完成其任务时,就会发生这种情况。例如,我可以想象有人想使用 ELK(Elasticsearch、Logstash、Kibana)向 Web 应用程序添加日志记录的情况。这些东西 运行 在一起,并且可以在一个容器内有监控进程的主管。

但对于大多数情况,每个容器使用一个进程更好。更重要的是 docker 命令应该启动进程本身,例如 运行ning java application by

/usr/bin/java -jar application.jar

除了 运行ning 外部脚本:

./launchApplication.sh

请参阅有关问题的 http://www.reddit.com/r/docker/comments/2t1lzp/docker_and_the_pid_1_zombie_reaping_problem/ 讨论。

虽然将进程分离到单独的容器中通常是一个很好的经验法则,但这并不是 docker 的主要 benefit/purpose。 docker 的好处是不变性。如果将两个进程放入一个容器中可以使逻辑更清晰,那就去做吧。虽然在这种情况下,我肯定会考虑至少将 DB 剥离到它自己的容器中,并通过 docker link 与它交谈。每次重建映像时,数据库都不必关闭。