Запуск Consul в Docker контейнере
Скачайте готовый docker образ Consul с хаба:
docker pull consul:1.0.3
Создайте новый Volume для локальной базы Consul'а
docker volume create consul_data
Запустите Consul:
docker run -d --name consul --log-driver=journald -v consul_data:/consul/data -p 53:8600 -p 53:8600/udp -p 8500:8500 consul:latest agent -dev -node=node01 -client=0.0.0.0 -advertise=10.0.0.100 -data-dir=/consul/data
Параметры:
-dev - означает, что consul будет запущен в режиме отладки. Он нужен для быстрого старта consul с веб интерфейсом. Данный режим не подходит для продакшена, т.к. не пишет данные БД на диск.
-node=node01 - Устанавливает название ноды, на котором запущен consul. Имя должно быть уникальным в кластере
-client=0.0.0.0 - Биндит порт для HTTP, DNS и REST IP.
-advertise=10.0.0.100 - Будет выдавать указанный IP адрес при DNS запросе в Consul. Желательно указывать IP адрес сервера. 10.0.0.100 - это пример. Вы должны указать свой IP адрес. Если этот параметр не указан, то значение будет выбрано из параметра -bind.
-bind=ip-address - IP адрес, который будет использоваться в Consul кластере, для обмена данными.
-data-dir=/consul/data - Устанавливает папку для БД consul.
-recursor 8.8.8.8 - Говорит куда отправлять обычные DNS запросы
8500 порт - Это порт HTTP и REST API
8600 порт - Это порт DNS. Будет проброшен на 53 порт хост машины
Остальные параметры описаны здесь.
Автоматический запуск Consul при старте системы
За автоматический запуск отвечает параметр Docker --restart=unless-stopped. Он означает перезапускать контейнер до тех пор, пока он не будет остановлен вручную. Более подробно о методах перезапуска Docker контейнеров здесь.
docker run -d --name consul -v consul_data:/consul/data --log-driver=journald --restart=unless-stopped -p 53:8600 -p 53:8600/udp -p 8500:8500 consul:1.0.3 consul agent -dev -node=node01 -client=0.0.0.0 -advertise=10.0.0.100 -data-dir=/consul/data -recursor 8.8.8.8
Отладка Consul
Вместо параметра -d, после слова run, можно указать -it --rm. Тогда consul будет запущен в интерактивном режиме, а после остановки, контейнер автоматически удалиться. Это полезно для отладки параметров запуска consul.
docker run -it --rm --name consul --log-driver=journald -v consul_data:/consul/data -p 53:8600 -p 53:8600/udp -p 8500:8500 consul:1.0.3 consul agent -dev -node=node01 -client=0.0.0.0 -advertise=10.0.0.100 -data-dir=/consul/data -recursor 8.8.8.8
Запуск и остановка Consul
Остановка контейнера:
docker stop consul
Запуск контейнера:
docker start consul
Удаление контейнера:
docker rm consul