Docker enjambre con una red personalizada
Estoy tratando de averiguar cómo usar correctamente el modo enjambre en Docker. Primero intenté ejecutar contenedores en mi máquina de 2 trabajadores y gerente sin especificar una red personalizada (por lo que estoy usando la red de superposición de ingreso predeterminada). Sin embargo, si uso la red de ingreso, por alguna razón no puedo resolvertasks.myservice
.
Así que intenté configurar una red personalizada como esta:
docker network create -d overlay elasticnet
Entonces ahora, cuando yobash
en uno de los contenedores, puedo resolver con éxitotasks.myservice
pero ya no puedo acceder al puerto que he definido en la creación de mi servicio en--publish
externamente (lo que pude cuando usé la red de ingreso).
¿Hay alguna forma de:
Use la red de ingreso y pueda resolvertasks.myservice
o cualquier otro registro DNS que dirija a todos mis contenedores de servicios?
O use una red personalizada, pero--publish
puertos correctamente para poder acceder a ellos externamente?
EDITAR
Así es como creo mi servicio,
Sin una red 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
Con una red 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