Я пытаюсь выяснить, как правильно использовать режим роя в Docker. Сначала я попробовал запустить контейнеры на двух рабочих и диспетчерских машинах без указания настраиваемой сети (так что я использую сетевую оверлейную сеть по умолчанию). Однако, если я использую входящую сеть, по какой-то причине я не могу разрешить tasks.myservice
.Docker swarm с пользовательской сетью
Так что я попытался настройки пользовательской сети, как это:
docker network create -d overlay elasticnet
Так что теперь, когда я bash
в одном из контейнеров, я могу успешно решить tasks.myservice
, но я больше не могу получить доступ к порту я определил в моем сервисе создание под --publish
извне (что я мог, когда я использовал входящую сеть).
Есть ли способ либо:
Используйте сеть ингресс и быть в состоянии решить
tasks.myservice
или любой другой DNS-запись, которая будет направлять на все мои контейнеры обслуживания?Или, используя пользовательскую сеть, но
--publish
портов правильно, чтобы я мог получить к ним доступ извне?
EDIT
Это, как я создаю мою службу,
Без пользовательских сетей:
docker service create --replicas 3 --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
С пользовательской сетью:
docker service create --replicas 3 --network elasticnet --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
Можете ли вы опубликовать список всех команд, которые вы используете, пожалуйста? И пользовательская оверлейная сеть - это путь. – johnharris85
@ johnharris85 См. Мое редактирование. –