2016-09-16 10 views
1

После просмотра докеры официальных объяснений рой, проблем github и ответов stackoverflow я все еще в недоумении от того, почему у меня проблема, которую у меня есть.docker-compose swarm without docker-machine

Проблема: docker-compose up запускает службы не в рое, хотя рой активен и имеет 2 узла.

Im использование версии 1.12.1 докер.

  1. Глядя на swarm tutorial я был в состоянии начать и масштабировать свою стаю, используя docker service create без каких-либо проблем.

  2. docker-compose up работает с версией 2 Докер-compose.yml результаты в сфере услуг, начиная снаружи роя, я могу видеть их через docker ps но не docker service ls

Я могу видеть, что Докер-машину как инструмент, решает эти проблемы, но затем снова необходимо установить виртуальную коробку.

так что мои вопросы будут

  1. Могу ли я использовать докер-компоновать с Докер-рой (НЕ докер-двигателя) без Докер-машины и без experimental build функциональности расслоении?

  2. Если docker service create может начать обслуживание на любых узлах, это указывает на правильность конфигурации сети роя?

  3. Что преимущества/недостатки Докер-машины в сравнении с экспериментальной функциональности сборки

+0

Возможный дубликат [Can Docker 1.12 in «swarm mode» обеспечивает «единый виртуальный хост Docker»?] (Http://stackoverflow.com/questions/38198275/can-docker-1-12-in-swarm -mode-обеспечить-один-виртуальный-докер-хост) – BMitch

ответ

1

1) Вы не можете запустить службы с помощью докер-компоновать на новом Докер «Swarm Mode». Есть функция конвертировать файл, создающий докеры, в новый формат dab, который понимается новым режимом роя, но на данный момент он неполный и экспериментальный. Вам в основном нужно использовать скрипты bash для запуска сервисов на данный момент.

2) Узлы в рое (режиме роя) взаимодействуют с использованием собственной сети оверлея. Это номер ingress, когда вы делаете docker network ls. Вам нужны настроить свои собственные наложенные сети для запуска услуги, например:.

docker network create -d overlay mynet 
docker service create --name serv1 --network mynet nginx 

3) Я не знаю, какой черт вы имеете в виду под «экспериментальной сборкой» Докер-машина это просто способ создать хосты (. узлы) .Это облегчает настройку демона докеров на каждом хосте, сертификаты и позволяет некоторое базовое обслуживание (обновление сертификатов, остановка/запуск хоста, если вы тот, кто его создал). Он не создает услуги, объемы, сети или управляет ими. Это работа докера api.

+0

Я вижу, правильно ли понимаю, что наличие виртуального бокса - единственный способ убедиться, что докер-машина может создать рой согласно описанному здесь [https: //docs.docker.com/swarm/provision-with-machine/)? – Stobor

+1

@Stobor Нет, это старая докерная рой, а не новый режим рой. Да ... смущает, не так ли? Хорошей новостью является то, что создавать доспехи с помощью докер-машины еще проще. См. Http://stackoverflow.com/questions/38666566/troubles-using-docker-machine-to-setup-swarm/38668847#38668847 –

+0

Вы не можете создать рой, используя Docker для Mac/Windows, так как вы закончите с один хозяин. По крайней мере, для роя требуется 3 хоста. Докер-машина полезна для создания нескольких хостов, которые создают рой, но, как отмечают @ MarkO'Connor, не следует путать с документацией, относящейся к старому (Legacy) рою. Убедитесь, что вы следуете за документом «режим роя», который находится под документом engine (https://docs.docker.com/engine/swarm/). – Alkaline

1

1) Нет. Docker Compose еще не интегрирован в новый режим Swarm. Issue 3656 in GitHub отслеживает это. Если вы запускаете контейнеры на рое с Docker Compose на данный момент, это нам es docker run для запуска контейнеров, поэтому вы видите их на одном узле.

2) Да. Фактически вы можете использовать docker node ls на менеджере, чтобы подтвердить, что все узлы подняты и активны, и docker node inspect, чтобы проверить конкретный узел, вам не нужно создавать службу для проверки роя.

3) Докерная машина также находится за выпуском 1.12, поэтому, если вы начнете рой с помощью Docker Machine, это будет «старый» тип рой. Старому продукту Docker Swarm понадобилось множество дополнительных настроек для магазина с ключом, TLS и т. Д., Который Swarm Mode делает бесплатно.