Использование Docker в режиме компоновки/роя

Я новичок в докере, и мне нужна помощь в распространении моего приложения.

Учти это:

  • У меня есть пул физических машин, на каждой из которых установлена ​​последняя версия докера.

  • Мое «Приложение A» имеет несколько контейнеров. Чтобы быть ясным в этом определении, приложение будет базой данных, работающей в контейнере, 4 контейнерах обмена сообщениями и главном контейнере. Все 6 контейнеров должны взаимодействовать друг с другом. База данных, контейнеры для обмена сообщениями и т. д. будут «сервисами».

  • У меня также могут быть "Приложение B", "Приложение C" и "Приложение N...", которые немного отличаются по размеру и конфигурации от "Приложения A". Приложения не взаимодействуют друг с другом и полностью независимы.

Требования:

  • Все приложения "A,B,C..N" должны использовать один и тот же пул физических машин.
  • При необходимости каждая служба каждого приложения должна работать на другом физическом компьютере.
  • Вы можете захотеть ограничить распределение каждой службы на каждой физической машине.
  • Мне нужно создавать приложения "на лету"

Моей первой мыслью было использовать docker-compose для определения приложения и несколько файлов dockerfile для определения служб внутри него. Но если я это сделаю, каждое приложение будет работать в одном и том же механизме докера и, следовательно, на одной и той же физической машине.

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

Моей второй мыслью было бы использовать режим роя. Я бы создал рой и запускал на нем сервисы. Однако я бы потерял понятие «приложение». Было бы куча сервисов, брошенных в рой, и я не мог бы управлять тем, как каждый из них общается друг с другом.

Итак, учитывая эту проблему:

  • Есть ли какое-то предположение или утверждение, в котором я ошибся?
  • Каково рекомендуемое использование инструментов Docker в сценарии?

person guilhermecgs    schedule 04.01.2017    source источник


Ответы (1)


Можно использовать Docker Compose с режимом Docker Swarm (Docker 1.12), но в настоящее время он не полностью с ним совместим. Взгляните на стеки и пакеты Docker.

В следующей версии Docker (1.13) также будет новый выпуск Docker Compose v3, который будет совместим с Docker без Docker Compose. Это позволит развернуть файл Docker Compose следующим образом: docker deploy --compose-file docker-compose.yml AppA

В настоящее время это экспериментально, но вполне нормально работает с Docker 1-13-rc5. (Выпуски Docker)

Более подробное объяснение этого можно найти в этой статье.

Чтобы все они выполнялись на разных хостах, это возможно с определением ограничений в сервисе docker create (или в Docker Compose v3) (см. Создание службы Docker — ограничения). Но зачем вам нужно, чтобы они работали на разных хостах?

Можно ограничить использование ЦП и памяти, которое может использовать каждая служба, с --limit-cpu и --limit-memory.

Если вы хотите поиграть с Docker Swarm Mode, вы можете создать рой с помощью Docker Machine на локальном хосте. (Внимание, не используйте старый Docker Swarm)

person Philip    schedule 13.01.2017