Контейнеры Docker на нескольких хостах с помощью docker-compose

984
Alex Balashov

Я использую docker-compose для запуска небольшого гарема контейнеров в поддержку приложения. dbКлючом к этому является использование внутреннего распознавателя DNS Docker (например, преобразование в внутренний контейнер базы данных). Я использую частную мостовую сеть, созданную с docker network.

Мне интересно, есть ли простой и прямой способ, без бюрократии Кубернетеса и того, чтобы воспользоваться механизмом обнаружения DNS при распределении контейнеров по нескольким физическим серверам. Один из вариантов - просто создать отдельную установку Docker и частную сеть на другом сервере, и эти контейнеры будут обновлять записи DNS для себя на моем сервере PowerDNS при запуске, и для этого существует механизм. Тем не менее, я предпочитаю использовать обнаружение DNS в Docker.

Любые указатели будут оценены!

0

2 ответа на вопрос

0
Martin

Я бы посоветовал вам заглянуть в Docker Swarm, по моему опыту его проще настроить. Это должно хорошо продолжаться от вашего текущего docker-compose.yml.

У вас уже должен быть рой, если вы запускаете последний движок Docker, вам просто нужно включить его, запустив docker swarm init. Вы можете попробовать это на play-with-docker .

Возможно, вы захотите взглянуть на Github Брета Фишера для некоторых образцов. Это репо является сопроводительным материалом для курса Udemy автора, который, imo, также дает хороший обзор.

0
Ben Njeri

Да, вы можете достичь этого с помощью роя Docker. Docker swarm предлагает решение для ограничения ограничений в докере с такими привлекательными функциями, как:

  • Он использует Docker Engine CLI для создания множества Docker Engines, где вы можете развертывать сервисы приложений без каких-либо дополнительных инструментов оркестрации. -Swarm - это группа Docker Engines.
  • Автоматическое масштабирование Swarm Manager для достижения желаемого состояния - легкое увеличение и уменьшение
  • Обнаружение служб. Узлы диспетчера Swarm присваивают каждой службе в Swarm уникальное DNS-имя и балансы загрузки запущенных контейнеров. Вы можете запросить каждый контейнер, работающий в рое, через DNS-сервер, встроенный в рой.
  • Постоянное обновление и безопасность - каждый узел в рое применяет взаимную аутентификацию и шифрование TLS для защиты связи между собой и всеми другими узлами.

Как видите, он имеет поддержку HA для многоузловых и мастер-узлов. Чтобы начать работу с Docker Swarm, прочтите руководство Docker Swarm 101 . Если вы уверены в Docker Swarm, прочитайте руководство по началу работы с Kubernetes, чтобы погрузиться в Kubernetes