Docker容器的粒度

时间:2015-12-04 00:01:01

标签: php docker containers docker-compose horizontal-scaling

设计应用程序基础架构时使用Docker的架构,最佳做法是为每个“服务”创建一个容器,还是为“服务”中的每个进程创建多个容器?<​​/ strong>

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

服务容器:

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

处理容器:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

另外,每当您运行多个进程时,您必须使用专门处理这些进程停止方式的图像:请参阅&#34; PID 1 zombie reaping issue&#34;。