If you used the old Swarm, the one shipped as a standalone product before Docker 1.12, you were forced to set up a service registry alongside it. You might have chosen Consul, etcd, or Zookeper. The standalone Swarm could not work without one of them. Why is that? What was the reason for such a strong dependency?
Before we discuss reasons behind using an external service registry with the old Swarm, let's discuss how would Swarm behave without it.