That’s what I’m doing right now (I’m running in IBM Softlayer BTW), however only for externally-exposed services. Ultimately I’d like to use the existing swarm consul for discovery of services between the overlay network containers, across the overlay network. For a non-consul-aware service like a MariaDB cluster, registrator will push the exposed service port to consul — so external systems can use consul to discover it (assuming the port is exposed on the dockerhost’s interface). However, where all of the communication occurs on the overlay network (i.e. galera), consul/registrator still publishes the local node’s IP address for the service definition rather than the container’s IP on the overlay network.
The solutions I’ve seen tend to run along the lines of running a second consul / registrator on the overlay itself, or to use a separate service. I could also just have the containers register themselves on start as an external service with consul, but that seems like just a workaround.
Perhaps I’m doing something wrong, but maybe I’m just thinking about this the wrong way?