2017-01-04 7 views
2

Я совершенно новый для докеров, и мне нужна помощь в распространении моего приложения.Использование докеров в режиме compose/swarm

Рассмотрим это:

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

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

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

Требования:

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

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

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

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

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

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

ответ

3

Можно использовать Docker Compose с Docker Swarm Mode (Docker 1.12), но в настоящее время он не полностью совместим с ним. Посмотрите на Docker Stacks and Bundles.

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

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

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

Для ваших требований, чтобы все они выполнялись на разных хостах, это возможно с определением ограничений в создании службы докеров (или в Docker Compose v3) (см. Docker Service Create - Constraints). Но зачем вам их запускать на разных хостах?

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

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

+0

Полный ответ! – guilhermecgs