Q:

Difference between Docker Swarm vs Swarm mode?

What difference between initialization swarm over this commands:
docker swarm init --advertise-addr <manager-ip>
docker -H <worker-ip> swarm join --token <worker-token>

And this one:
docker run swarm manage <consul-ip>
docker -H <worker-ip> run swarm join --advertise=<worker-ip> <consul-ip>

Why we need swarm image?

A:

Docker Swarm (also Swarm classic) is fundamentally different from Swarm Mode. Native Swarm functionality will continue to be supported in Docker 1.12 release, this is done to preserve backward compatibility.
Docker Swram (classic):

Separate from Docker Engine and can run as Container
Needs external KV store like Consul, etcd, Zookeeper

Usage example:
docker run swarm manage <consul-ip>
docker -H <worker-ip> run swarm join --advertise=<worker-ip> <consul-ip>

Swarm Mode (new, preferable):

Integrated inside Docker engine
No need of separate external KV store

Usage example:
docker swarm init --advertise-addr <manager-ip>
docker -H <worker-ip> swarm join --token <worker-token>

Source: Comparing Swarm, Swarmkit and Swarm Mode
Great answer on another question like this one: The relation between “docker/swarm” and “docker/swarmkit”

