При разработке инфраструктуры приложений & В архитектуре, использующей Docker, рекомендуется ли создавать один контейнер для «службы» или несколько контейнеров для каждого процесса в «службе»?
Например, распределенное приложение PHP, которое использует Nginx, PHP-FPM, Redis, MySQL и ElasticSearch.
Сервисные контейнеры:
Контейнеры процесса:
С моей точки зрения, более подходящим является использование «сервисного» контейнерного подхода, так как управление таким количеством дискретных контейнеров для каждого процесса может стать громоздким.
Контейнер все о изоляция (изоляция файловой системы, процессора, памяти).
Это также включает в себя изоляцию процесса (по одному на контейнер).
Один процесс на контейнер легче отлаживать в случае сбоя (в отличие от подключения к огромному контейнеру с тоннами процессов и различными запущенными журналами).
Путь обновления / отката проще (вы останавливаете / перезапускаете только один контейнер на процесс, который хотите изменить).
Кроме того, всякий раз, когда у вас запущено несколько процессов, вы должны использовать образ, специализирующийся на том, как эти процессы остановятся: смотрите «PID 1 зомби пожинает вопрос».
Других решений пока нет …