Depuis la verson 1.12, le mode swarm est directement disponible dans l'installation basique de docker.

Pour initialiser un essaim :

docker swarm init

il vous est alors donné la commande à exécuter sur les autres serveurs docker pour joindre l'essaim :

docker swarm join --token token ip:port

Pour voir lister les noeuds de l'essaim

docker node ls

Et en version un peu plus sommaire

docker node ls --format '.ID .Hostname .Status .TLSStatus'

Creation d'un container dans l'essaim

docker service create image_name

exemple :

docker service create --name lampadaire lamp

Lister les containers présents

docker service ls

ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
121fg1dd9xq2        lampadaire          replicated          1/1                 lamp:latest         

En lançant une deuxième fois un "create" sur l'essaim, on voit avec un "ls" que le container est placé sur l'autre noeud :

ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
121fg1dd9xq2        lampadaire          replicated          1/1                 lamp:latest         
ycg88kgulcmd        lamproie       replicated          1/1                 lamp:latest         

mais on voit que les deux ne sont pas en situation de replicas entre eux.

Nous pouvons updater les ports publiés ou d'autres informations :

docker service update --publish-add 80 lampadaire

Chose interressante, le forwarding de port est disponible sur les deux noeuds a l'identique, quelque soit le noeud qui héberge.

Modifier le nombre de replicas

docker service scale eager_benz=REPLICAS_NUMBER