Some of you may be aware I run a RaspberryPi cluster called FrankenPi I’ve been running a Docker swarm on it originally with four Pi’s but last year added two more. The original four Pi’s were all running Engine 18.6.1-ce but somehow when I added the two new Pi’s they were running Engine 17.06.1-ce while the swarm was working it kind of annoyed me seeing that two Nodes were running, effectively, out of date engines but up until today I was too lazy to do anything about it.
Now the other day I was having problems with docker on my Clusterhat which is basically a physically scaled-down version of FrankenPi, and I discovered that there is, in fact, a bug with the latest release for ARM. It would seem the advice was to downgrade your installation. To be honest, I didn’t fancy jumping through hoops and so left the Clusterhat with the intention of waiting for a fix or the next release so when this morning, after updating Frankenpi, I started to see the same issue on FrankenPi-06 I decided to bit the bullet and fix it.
What did you do?
Now this fix is probably way too much, and there’s probably a much simpler method, but it worked for me doing it this way. Before we begin, if you’re using this method, on your own head be it.
First I removed the Node (FrankenPi-06) from the swarm. Given I intended to blow it away I was not bothered about stopping Docker on FrankenPi-06
docker swarm leave
I then went on to the Manager node and did:
docker node rm FrankenPi-06
Next, I did
sudo apt-get remove –purge docker
I then installed using the docker script
curl -fsSL https://get.docker.com -o get-docker.sh
Now this installs the very latest version Engine 18.09.0-ce which as I explained earlier is broken on ARM so next, I downgraded to 18.6.1-ce (I read somewhere that 18.06.3 has broken networking)
sudo apt-get install docker-ce=18.06.1~ce~3-0~raspbian
That happily downgrades the installation. It complained about some configuration errors, but I chose to ignore it. Rebooted, although the instruction is to log out and back in again however I chose to ignore that advice too! I’m such a rebel.
Once I’d logged back into FrankenPi-06 I rejoined it to the swarm
docker swarm join –token xxxxx-1-xxxxx–xxxx 192.168.x.xx:2377
Hey presto the Node reappeared in the swarm running the correct Engine. It was just a simple case of replicating the procedure FrankenPi-05, and now all the Nodes are singing from the same song sheet.