Run the labs yourself
Every episode is built on a small network of containers that runs on an ordinary computer. You need two tools, Docker and containerlab, and a few minutes to install them.
What you need
- A Linux machine, or a Linux virtual machine. On Windows, WSL2 gives you one; on a Mac, a Linux VM.
- Docker, which runs each device in the lab as a container.
- containerlab, which builds the lab from its file: it starts the devices, wires them together and loads their settings.
- Admin rights to install them, an internet connection the first time (each lab downloads its device images), and about 1.5 GB of free disk space.
Linux
containerlab's setup script installs Docker and containerlab together, and sets you up to run containerlab
without sudo:
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"
From containerlab's installation guide, tested by them on Ubuntu, Debian, Red Hat, CentOS Stream, Fedora and Rocky Linux. It also installs the GitHub CLI.
The script also changes your SSH server's settings by default. To leave them alone, run
export SETUP_SSHD="false" first. When it finishes, log out and back in (or run newgrp docker)
so you can use Docker without sudo.
Already have Docker? Install just containerlab:
bash -c "$(curl -sL https://get.containerlab.dev)"
From containerlab's installation guide. For Docker on its own, see Docker's install guide.
Windows
- Open PowerShell or Command Prompt as administrator and install WSL, which also installs Ubuntu. Restart when
it asks you to.
powershell (admin)
wsl --install
From Microsoft's WSL install guide.
- Open Ubuntu from the Start menu and follow the Linux steps above.
containerlab also publishes its own ready-made WSL distribution; see containerlab on Windows.
Mac
containerlab runs on Linux, so on a Mac it runs inside a Linux VM. containerlab's own recommendation is to create one with OrbStack, then follow the Linux steps inside it: see containerlab on macOS.
The device images our labs use are also published for Apple silicon (arm64), but we haven't tested the labs on a Mac yet.
Check it works
docker run hello-world containerlab version
The first prints a hello message from Docker; the second shows containerlab's version.
Run a lab
Every lab is in our labs repository on GitHub, one folder per episode. Download it, go into a lab's folder and start it:
git clone https://github.com/NetworkIncidents/labs.git cd labs/005-every-edge-fails-at-once ./lab.sh up
No git? On the repository's page, Code then Download ZIP gets the same files. If containerlab
asks for root, put sudo in front of each ./lab.sh command.
Each lab has the same commands:
./lab.sh upbuilds the lab and waits until everything works../lab.sh breakbreaks it the way the episode does. Then it's your turn to find out why../lab.sh hintgives one hint at a time;./lab.sh checksays whether it works yet../lab.sh fixapplies the fix, if you'd rather see it;./lab.sh downremoves the lab.- Optional:
./lab.sh dashboard, in a second terminal, opens the live dashboard from the videos athttp://localhost:8090: the lab's map with traffic, interfaces, pings and its health checks. It needs Python 3, which Ubuntu and WSL already have.
The labs so far, each with its video:
- 001 · Ping works, websites don't (video)
- 005 · Every edge fails at once, the Cloudflare incident replay (video)
Each folder's README lists the devices, their addresses and how to open a shell on each one.
If something goes wrong
- "permission denied" from Docker or containerlab: log out and back in after installing, so your account picks up its new groups.
- The first start is slow: it's downloading the device images. Later starts reuse them.
- The lab gets into a strange state: stop it and start it again; that rebuilds every device from the lab's files.
Last checked 21 Oct 2026 against the official guides linked above. Our labs are tested on Ubuntu 22.04 (x86_64) with Docker 29.1.3 and containerlab 0.81.1.