How to setup Docker Swarm Cluster on Raspberry Pi
Let us setup 2 node Swarm Mode Cluster.
System #1 - pi-node1 - 192.168.1.5
System #2 - pi-node2 - 192.168.1.6
Login to pi-node1 and run the below command:
root@raspberrypi:~# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:57:21 2018
OS/Arch: linux/arm
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:17:57 2018
OS/Arch: linux/arm
Experimental: false
root@raspberrypi:~# hostname pi_1
hostname: the specified hostname is invalid
root@raspberrypi:~# hostname pi-node1
root@raspberrypi:~# hostname
pi-node1
root@raspberrypi:~#
Login to Node #2
root@raspberrypi:~# hostname pi-node2
root@raspberrypi:~# hostname
pi-node2
root@pi-node1:~# docker swarm init --advertise-addr 192.168.1.5 --listen-addr 192.168.1.5:2377
Swarm initialized: current node (txgq79grb6vjo5f78t15le1h8) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-02b4wgqx5jhp5wi12tbi1uij9mmiw95zuotvesqiag05ll6ci7-eukh6uqgy34adpn00cnd5c3wx 192.168.1.5:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
root@pi-node1:~#
root@pi-node1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
txgq79grb6vjo5f78t15le1h8 * pi-node1 Ready Active Leader 18.09.0
root@pi-node1:~#
Adding Pi-node2 to the cluster
root@raspberrypi:~# docker swarm join --token SWMTKN-1-02b4wgqx5jhp5wi12tbi1uij9mmiw95zuotvesqiag05ll6ci7-eukh6uqgy34adpn00cnd5c3wx 192.168.1.5:2377
This node joined a swarm as a worker.
Listing the nodes
root@pi-node1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
txgq79grb6vjo5f78t15le1h8 * pi-node1 Ready Active Leader 18.09.0
y2kylnx06m8h4n3pqq7tygbbd pi-node2 Ready Active 18.09.0
root@pi-node1:~#
root@pi-node1:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
ed12cf66b701 bridge bridge local
21bc3f74bd1c docker_gwbridge bridge local
0cef1c828c54 host host local
3o1rh4n8ivx6 ingress overlay swarm
3d18d5709a05 none null local
root@pi-node1:~#
Running Swarm Visualizer on Raspberry Pi
root@pi-node1:/home/pi# docker service create \
--name=vizualizer \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
ajeetraina/swarm-visualizer-armv7
x9s1oq0bc2g8yqjs4u7zfejr7
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
root@pi-node1:/home/pi#
Running Portainer
$curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
$ docker stack deploy --compose-file=portainer-agent-stack.yml portainer
That’s it . Browse to http://IP:9000 to see portainer.(admin/Oracle9ias)