NETWORK INCIDENTS

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:

terminal
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:

terminal
bash -c "$(curl -sL https://get.containerlab.dev)"

From containerlab's installation guide. For Docker on its own, see Docker's install guide.

Windows

  1. 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.

  2. 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

terminal
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:

terminal
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 up builds the lab and waits until everything works.
  • ./lab.sh break breaks it the way the episode does. Then it's your turn to find out why.
  • ./lab.sh hint gives one hint at a time; ./lab.sh check says whether it works yet.
  • ./lab.sh fix applies the fix, if you'd rather see it; ./lab.sh down removes the lab.
  • Optional: ./lab.sh dashboard, in a second terminal, opens the live dashboard from the videos at http://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:

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.