Enxame do Docker com uma rede personalizada
Estou tentando descobrir como usar corretamente o modo enxame no Docker. Primeiro, tentei executar contêineres na minha máquina de 2 trabalhadores e gerenciadores sem especificar uma rede personalizada (então estou usando a rede de sobreposição de entrada padrão). No entanto, se eu usar a rede de entrada, por algum motivo não consigo resolvertasks.myservice
.
Então, tentei configurar uma rede personalizada como esta:
docker network create -d overlay elasticnet
Então agora, quando eubash
em um dos contêineres, posso resolver com êxitotasks.myservice
mas não consigo mais acessar a porta que defini em minha criação de serviço em--publish
externamente (o que eu pude quando usei a rede de entrada).
Existe alguma maneira de:
Use a rede de entrada e seja capaz de resolvertasks.myservice
ou qualquer outro registro DNS que direcione para todos os meus contêineres de serviço?
Ou, use uma rede personalizada, mas--publish
portas corretamente para que eu pudesse acessá-las externamente?
EDITAR
É assim que eu crio meu serviço,
Sem uma rede personalizada:
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
Com uma rede personalizada:
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