Как использовать докер в распределенных системах

Здравствуйте, у меня есть следующая проблема:

я имею .NET Core WebApi и Distributed Database(RethinkDB), который я хочу масштабировать, используя Docker контейнеры. База данных может быть как защищенной, так и реплицируемой (хотя я не заинтересован в репликации). Моя проблема заключается в дизайне:

Используя докер, я уже создал
1. Dockerfile для базы данных
2. Dockerfile для вебапи
3. Dockercompose для пары.

Мой вопрос, как вы интегрируете Docker-swarm или же Kubernetes для масштабирования в этой ситуации? Я не очень знаком, но web-api зависит от базы данных для работы. Мне нужно докер составить в этой ситуации? Или как они все сочетаются друг с другом? (Докеризация зависимых компонентов + масштабирование).

Делаете ли вы все компоненты в одном, а затем масштабируете их или разделяете и масштабируете каждый отдельно?

1 ответ

docker-compose - это инструмент для запуска многоконтейнерных док-приложений, но он имеет ограниченное применение. Как говорится в документации, он обычно используется в средах разработки, автоматизированных средах тестирования и развертываниях на одном хосте. (См.: https://docs.docker.com/compose/overview/)

Если вы хотите развернуть такое приложение на нескольких хостах, вам понадобится система оркестровки. Docker-роя или kubernetes очень хорошо подходит. Обе системы нуждаются в реестре докеров, куда вы отправляете свои собственные, настраиваемые образы докеров. Эти образы могут быть созданы из ваших уже существующих файлов Docker. Ваш файл docker-compose.yaml не используется в этих системах, но вы все равно можете использовать его для разработки.

Оба решения могут масштабировать каждый компонент отдельно. Какой из них на самом деле лучше спорно и, вероятно, зависит от архитектуры.

Другие вопросы по тегам