Thank you for reading this post, don't forget to subscribe!
Скачайте готовый docker образ Consul с хаба:
1 |
docker pull consul:1.0.3 |
Создайте новый Volume для локальной базы Consul'а
1 |
docker volume create consul_data |
Запустите Consul:
1 |
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. Он означает перезапускать контейнер до тех пор, пока он не будет остановлен вручную.
1 |
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.
1 |
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
Остановка контейнера:
1 |
docker stop consul |
Запуск контейнера:
1 |
docker start consul |
Удаление контейнера:
1 |
docker rm consul |