Swarm Mode: Create a Docker Swarm Cluster¶
Docker swarm mode requires docker engine 1.12 or higher. This lab will need two docker engine host created by docker machine.
Prepare Environment¶
Create two docker host machines.
➜ ~ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
swarm-manager - virtualbox Running tcp://192.168.99.100:2376 v1.12.4
swarm-worker1 - virtualbox Running tcp://192.168.99.101:2376 v1.12.4
➜ ~ docker-machine ip swarm-manager
192.168.99.100
➜ ~ docker-machine ip swarm-worker1
192.168.99.101
➜ ~
Create a Swarm Manage node¶
SSH to swarm-manager host and init a manager node.
➜ ~ docker-machine ssh swarm-manager
docker@swarm-manager:~$ docker swarm init --advertise-addr 192.168.99.100
Swarm initialized: current node (7f2gi8xoz6prs2gi53nqa4wu8) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-58lrmtavqlt9v1ejujsfh5o9hf3p804xtn5qhnsriqw4an2vhd-8x1q7q4jpvs1govwmjhnhffo7 \
192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker@swarm-manager:~$
From command docker info
we can get the current information about this swarm cluster.
Add one Docker Node to the Swarm cluster¶
Just run the command generated by swarm init
last step in the other docker machine host.
Please make sure the swarm-worker1
host can access 192.168.99.100:2377
➜ ~ docker-machine ssh swarm-worker1
docker@swarm-worker1:~$ docker swarm join \
--token SWMTKN-1-58lrmtavqlt9v1ejujsfh5o9hf3p804xtn5qhnsriqw4an2vhd-8x1q7q4jpvs1govwmjhnhffo7 \
192.168.99.100:2377
This node joined a swarm as a worker.
docker@swarm-worker1:~$
We can check the cluster status on manager node:
➜ ~ docker-machine ssh swarm-manager
Boot2Docker version 1.12.4, build HEAD : d0b8fd8 - Tue Dec 13 18:21:26 UTC 2016
Docker version 1.12.4, build 1564f02
docker@swarm-manager:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
7f2gi8xoz6prs2gi53nqa4wu8 * swarm-manager Ready Active Leader
9mm8t4l5stcudn5tx1fweht1d swarm-worker1 Ready Active
docker@swarm-manager:~$
And there are two networks automatically created on these two hosts:
docker@swarm-manager:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
f773d9bee59f bridge bridge local
bcc7996ba96b docker_gwbridge bridge local
a2d7040abdd0 host host local
01y2wr8jucgf ingress overlay swarm
8fde4990cff2 none null local
docker@swarm-manager:~$
docker@swarm-worker1:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
470f8e1db857 bridge bridge local
18bcb76c26b0 docker_gwbridge bridge local
1e347b54188e host host local
01y2wr8jucgf ingress overlay swarm
9ba27b95c9ad none null local
docker@swarm-worker1:~$
The first is docker_gwbridge
and the second is ingress
, one is bridge network, and the other is overlay network.