In a previous post, we talked about using Containerlab and ZeroTier to provide remote access to a lab instance. One of the things that was glossed over was creating the Containerlab images. As part of building the images, Containerlab ready Mikrotik RouterOS images are available on Docker Hub.
Containerlab currently supports 2 different kinds of images: pre-built containers and VMs packaged as containers.
Presently, only a handful of NOS vendors provide pre-built containers (Nokia’s SR Linux, Juniper cRPD, Arista cEOS, Cumulus VX, and SONIC VS).
The other option utilizes vrnetlab and is essentially a QEMU VM packaged in a Docker container. The more traditional network operating systems are currently supported via this method. This includes operating systems like Mikrotik RouterOS, Juniper vMX, Nokia SROS, and many more.
Building Mikrotik RouterOS containers
Containerlab provides a nice and easy way to build Containerlab ready Docker images. The process is fairly simple.
Setting it up
Containerlab uses a custom fork of vrnetlab that sets things up so that the images built will work with Containerlab. That repository can be found on Github. The first step is to clone that repository.
The next step is to download the image(s) you want from Mikrotik’s website. The VMDK files should be put into the routeros folder
Once you download the image(s) you want to run into the vrnetlab/routeros folder, navigate to that folder. Then all you need to do is run:
This will build all of the vmdk files you have into Docker images.
Once the make file runs, you can verify that the images are usable in Docker by running:
docker image ls
You should then see all of the images you had built named in the vrnetlab/vr-routeros:<tag> style.
Pre-built Mikrotik RouterOS containers
The previous methodology works really good if you only want to run images on the same machine you build them. One of the key concepts of Containerlab is that the labs are portable.
At IP Architechs, we’ve made that easier. Instead of needing to build the images yourself locally, you can find all of the prebuilt Mikrotik RouterOS containers on Docker Hub.
New Mikrotik CHR releases will be pushed to Docker Hub within a couple of hours of them being released by Mikrotik.
The images released on Docker Hub also have the trees that Mikrotik uses (long-term, stable, testing, and development). Using these tags will get you the most recent release of that tag.
Using in Containerlab
Using these images in Containerlab is now even easier than before having to build your own containers.
The previous GitHub repository is already setup to use the new images. If you want all nodes running the same version, it’s as simple as:
name: lab1-pod1 topology: kinds: vr-ros: image: docker.io/iparchitechs/chr:long-term nodes: R1: kind: vr-ros R2: kind: vr-ros R51: kind: vr-ros
If you’re trying to emulate a network with many different versions, something like this is how it would be setup:
name: lab1-pod1 topology: nodes: R1: kind: vr-ros image: docker.io/iparchitechs/chr:6.47.10 R2: kind: vr-ros image: docker.io/iparchitechs/chr:7.1.rc7 R51: kind: vr-ros image: docker.io/iparchitechs/chr:6.34.3