3

在使用 Docker 设计应用程序基础架构和架构时,最佳实践是为每个“服务”创建一个容器还是为“服务”中的每个进程创建多个容器?

例如使用 Nginx、PHP-FPM、Redis、MySQL 和 ElasticSearch 的分布式 PHP 应用程序。

服务容器:

  • Nginx + App + PHP-FPM(完整的应用程序作为“服务”容器)
  • 雷迪斯
  • MySQL

处理容器:

  • Nginx
  • 应用程序
  • PHP-FPM
  • 雷迪斯
  • MySQL

从我的角度来看,使用“服务”容器方法似乎更易于维护,因为为每个进程管理如此多的谨慎容器可能会变得很麻烦。

4

1 回答 1

1

容器都是关于隔离(文件系统、CPU、内存的隔离)。
这还包括进程的隔离(每个容器一个)。

每个容器一个进程在发生故障时更容易调试(而不是连接到一个具有大量进程和运行不同日志的巨大容器)。
升级/回滚路径更容易(每个要更改的进程只需停止/重新启动一个容器)。

另外,当您有多个进程在运行时,您必须使用专门处理这些进程将如何停止的图像:请参阅“ PID 1 僵尸收割问题”。

于 2015-12-04T05:46:11.737 回答