Docker-based deployments
Once you have microservices running inside containers, you need them to interact with each other. Since we are bridging the container sockets with some local sockets on the host, it is pretty transparent from an external client. Each host can have a public DNS or IP, and programs can simply use it to connect to the various services. In other words, a service deployed inside a container on host A can talk to a service deployed inside a container on host B ;as long as host A and B have a public address and expose the local sockets that are bridged with the containers sockets.
However, when two containers need to run on the same host, using the public DNS to make them interact with each other is less than optimal, particularly, if one of the containers is private to the host. For example, if you run a container in Docker for internal needs, like a caching service, its access should be restricted to the localhost.
To make this use case easier to implement, Docker provides...