What is the difference between using Docker Machine with Swarm and using Swarm through the Docker daemon?

Well, since nobody answered this, I carried on reading more on the Internet trying to understand what's the difference between this two concepts. This is what I understand so far:

  • A Docker Machine is a very small virtual machine that runs an instance of the Docker Engine. This means we can run Docker containers inside it. It can be understood as a container of containers.
  • The Docker Engine has (since the 1.12 version) a module called Swarm Mode, which offers built-in support for connecting and orchestrating many machines (physical or virtual -- like Docker Machines) containing the Docker Engine. This basically builds a network of nodes that are directed by a manager -- a central node. At this point, an instance of a service could be replicated, and the manager would spread the replicas over the nodes efficiently.
  • Alternatively, Docker Machines can run Swarm containers (based on the Swarm image), which can be set up to behave in a similar way as in the previous case. Again, we can have a Docker Machine behaving as a manager and many others behaving as nodes, only this time the manager will not balance replicas of a service, but whole containers. When launching a new container, the manager will distribute it to a certain node. This is the standalone version of Swarm, and is only recommended when using a version of Docker previous to 1.12 -- otherwise the Swarm Mode is a better option.

I hope this helps.