Imagine you're running a Swarm cluster on a static configuration, similar to the one in Chapter 1, Welcome to Docker Swarm, networking is flat and every container is assigned a specific task, for example a MySQL database. It's easy to locate the MySQL container because you assigned it a defined IP address or you run some DNS server. It's easy to notify whether this single container is working or not and it's a known fact that it won't change its port (tcp/3336
). Moreover, it's not necessary that our MySQL container announces its availability as a database container with its IP and port: We, of course, already know that.
This is the pet model, mocked-up manually by a system administrator. However, since we're more advanced operators, we want to drive a cattle instead.
So, imagine you're running a Swarm made of hundreds of nodes, hosting several applications running a certain number of services (web servers, databases, key-value stores, caches, and queues). These applications...