Зернистость контейнеров Docker

При разработке инфраструктуры приложений & В архитектуре, использующей Docker, рекомендуется ли создавать один контейнер для «службы» или несколько контейнеров для каждого процесса в «службе»?

Например, распределенное приложение PHP, которое использует Nginx, PHP-FPM, Redis, MySQL и ElasticSearch.

Сервисные контейнеры:

  • Nginx + App + PHP-FPM (полное приложение как «сервисный» контейнер)
  • Redis
  • MySQL

Контейнеры процесса:

  • Nginx
  • Приложение
  • PHP-FPM
  • Redis
  • MySQL

С моей точки зрения, более подходящим является использование «сервисного» контейнерного подхода, так как управление таким количеством дискретных контейнеров для каждого процесса может стать громоздким.

3

Решение

Контейнер все о изоляция (изоляция файловой системы, процессора, памяти).
Это также включает в себя изоляцию процесса (по одному на контейнер).

Один процесс на контейнер легче отлаживать в случае сбоя (в отличие от подключения к огромному контейнеру с тоннами процессов и различными запущенными журналами).
Путь обновления / отката проще (вы останавливаете / перезапускаете только один контейнер на процесс, который хотите изменить).

Кроме того, всякий раз, когда у вас запущено несколько процессов, вы должны использовать образ, специализирующийся на том, как эти процессы остановятся: смотрите «PID 1 зомби пожинает вопрос».

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]