If you are playing along at home, this writeup should match my configurations and get you close enough that the labs should deploy. The blog has a datestamp, so check that and compare to the current date to see how much may have changed since this was written. Yes, I am egotistical enough to believe this will be read millions of years in the future.
I am starting with the Ubuntu 26.04.01 LTS iso, and I am hoping that link will always point to the correct iso file. At the time of writing, clicking on it will take you to a ‘Thank You’ page that automatically starts the download in the background.
Once the iso is downloaded, I’ve been using Ventoy for my lab installs and home system builds. Yes, I know there are security concerns around ventoy, but considering all the dumb things I do this is within my risk profile. (Just wait until you get to the part about piping a curl into a root /bin/sh - in comparison this is nothing.) You need to make your own decisions about following my potentially insecure process or blazing your own path. Either way, ‘A blog made me do it’ probably won’t stand up in court - especially with this warning on it.
Once you have Ubuntu installed and updated, we’ll need to get docker’s repository added first. The instructions on Docker’s website say:
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascI broke this off the top section so it’s easier to ensure all the steps ran properly.
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOFNow we can make sure the docker apt source is working and get ready to install docker.
sudo apt updateAnd then install docker et al:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginThis is probably handled automatically in one of the previous steps by a script or apt, but nothing wrong with the belt and suspenders method. It’s not like I’m stapling anything to your head.
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp dockerNow we can test that everything is working (so far) with:
sudo systemctl status docker
docker run hello-worldI’m going to be a little lazy and say if you are running into any issues, check the Docker guides for troubleshooting. Yeah, that’s 💩 tech support from me, so you can have half off your subscription fee for the blog.
Once all that is finished and working we need to install Containerlab.
This is a very bad idea. We are about to pipe a script from a webpage directly into a privileged shell. No rational human being would ever do this. I am not rational. You have been warned. There is a more manual, safe mechanism in the documentation linked below.
Containerlab’s documentation has the following one liner that will get everything going for you:
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"This script uses some special characters and attempts to set colors in the terminal, so depending on your settings you may see pretty colors or you may see ;]rgb something something. Don’t immediately panic if the script does the rgb thing. You can check if everything worked by typing containerlab in your terminal and you should get USAGE/COMMANDS/FLAGS information back if everything is working so far. I’m going to end this here. In our next adventure we will download, pull and/or custom build some containers so we have all the bits and bobs to start deploying labs.
Changelog#
2026-10-05 - Added a lab0 tag for easier finding later, and fixed the slug
2026-10-08 - Put in some breaks inside copy paste blocks and added a few quality of life improvements for streamlining the install.
