In this post I am going to outline how to build a hybrid Docker
Swarm cluster with container nodes running Ubuntu and Windows Server. This will
allow Windows and Linux containers to run on the same Swarm cluster.
This lab is all running in Azure, and is built up with 4x
server. Two are Ubuntu 1804 and Two are Windows Server 2019.
You can consult these links for details on how to get Docker
CE installed onto each of the host operating systems. It’s pretty straight
forward.
Install Docker CE on Ubuntu Server
Install Docker CE on Windows Server 2019
Once we have our Docker hosts built the first step is to initialise
the Swarm. In Docker Swarm hosts can be either “managers” or “workers”. To get
a Swarm going we must first start by creating a manager now, this can be done
using the following command:
docker swarm init
|
I’ve chosen to make my first Ubuntu Server (ubu-docker-1)
the clusters only manager node. In a production deployment you would spend time
planning and designing the placement of manager nodes etc. it is not uncommon
to see Swarm clusters spanned across Azure Availability Zones, which obviously
adds complexity but also adds another design factor for placing manager and
worker nodes.
Once you run the docker swarm init command on
the first server it will output a connection token to the console, this can be
used to join other nodes to the Swarm cluster.
I’ve went ahead and done this on ubu-docker-2, the best way
to query a Swarm cluster for nodes is to run docker node ls from
one of the managers.
The same command runs successfully on Windows Server 2019 to join it to the Swarm cluster.
Now that we have a Swarm cluster with Ubuntu and Windows it
is possible for us to run Docker service deployments which use Windows and
Linux containers.