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

Respuestas a la pregunta(2)

Su respuesta a la pregunta