Docker容器的粒度

在使用Dockerdevise应用程序基础架构和架构时,最佳做法是在“服务”中为每个“服务”或多个容器创build一个容器?

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

服务容器:

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

过程容器:

  • Nginx的
  • 应用
  • PHP-FPM
  • Redis的
  • MySQL的

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

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

每个容器的一个进程在失败的情况下更容易debugging(反对连接到有大量进程和不同日志运行的巨大容器)。
升级/回滚path更容易(您只需停止/重启每个要更改的进程的容器)。

此外,无论何时运行多个进程,都必须使用专门处理这些进程停止的图像:请参阅“ PID 1僵尸收割问题 ”。