Как мне запустить 2 среды SkyDns/Skydock одновременно?
Ссылка: https://github.com/crosbymichael/skydock https://github.com/crosbymichael/skydns
Сначала я запустил эти два случая.
docker run -d -p 8080:8080 -p 172.17.42.1:53:53/udp --name skydns crosbymichael/skydns -nameserver 8.8.8.8:53 -domain docker
docker run -d -v /var/run/docker.sock:/docker.sock --name skydock crosbymichael/skydock -ttl 30 -environment dev -s /docker.sock -domain docker -name skydns
И эта настройка работает как положено.
Теперь я хочу создать другую производственную среду. На этот раз я запустил еще один контейнер для прыжков с парашютом с производством env следующим образом.
docker run -d -v /var/run/docker.sock:/docker.sock --name skydock-prod crosbymichael/skydock -ttl 30 -environment prod -s /docker.sock -domain docker -name skydns
Запрос API не показывает производственный skydoc.
curl $(docker-ip):8080/skydns/services/
А теперь мне интересно, как настроить рабочую версию Skydock.
Должен ли я работать в отдельном докер-хосте? Если я запустюсь на том же хосте докера, в какой записи DNS-адреса будут доступны новые контейнеры? Нужно ли передавать некоторые флаги / переменные при запуске новых контейнеров, чтобы они были доступны в рабочей среде?
1 ответ
Я не знаю, как заставить 2 или более экземпляров skydock прослушивать один и тот же docker.sock (в пределах одного хоста). Я думаю, что концептуально это не правильно. Контейнеры Docker ничего не знают о ваших логических средах (производство, подготовка,...)
Я получил установку нескольких хостов с skydns и skydock. Я запускаю skydns на отдельном хосте. Каждый из двух других серверов запускает один экземпляр skydock, который регистрирует все ips док-контейнеров в централизованном SkyDNS, так что все контейнеры видны по имени DNS на разных физических хостах.
Все это работает поверх оверлея сети Flannel https://github.com/coreos/flannel (который требует etcd)