Я новичок в докере, и мне нужна помощь в распространении моего приложения.
Учти это:
У меня есть пул физических машин, на каждой из которых установлена последняя версия докера.
Мое «Приложение A» имеет несколько контейнеров. Чтобы быть ясным в этом определении, приложение будет базой данных, работающей в контейнере, 4 контейнерах обмена сообщениями и главном контейнере. Все 6 контейнеров должны взаимодействовать друг с другом. База данных, контейнеры для обмена сообщениями и т. д. будут «сервисами».
У меня также могут быть "Приложение B", "Приложение C" и "Приложение N...", которые немного отличаются по размеру и конфигурации от "Приложения A". Приложения не взаимодействуют друг с другом и полностью независимы.
Требования:
- Все приложения "A,B,C..N" должны использовать один и тот же пул физических машин.
- При необходимости каждая служба каждого приложения должна работать на другом физическом компьютере.
- Вы можете захотеть ограничить распределение каждой службы на каждой физической машине.
- Мне нужно создавать приложения "на лету"
Моей первой мыслью было использовать docker-compose для определения приложения и несколько файлов dockerfile для определения служб внутри него. Но если я это сделаю, каждое приложение будет работать в одном и том же механизме докера и, следовательно, на одной и той же физической машине.
Я читал, что вы можете развернуть сборку докеров в рой докеров. В этом случае docker swarm будет действовать как механизм докеров. Однако я не смог найти примеров того, как это сделать, и я не уверен в ограничениях.
Моей второй мыслью было бы использовать режим роя. Я бы создал рой и запускал на нем сервисы. Однако я бы потерял понятие «приложение». Было бы куча сервисов, брошенных в рой, и я не мог бы управлять тем, как каждый из них общается друг с другом.
Итак, учитывая эту проблему:
- Есть ли какое-то предположение или утверждение, в котором я ошибся?
- Каково рекомендуемое использование инструментов Docker в сценарии?