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僵尸收割问题 ”。