Build and Push an Uncompressed Container Image
Learn how to build and publish an uncompressed container image - a helpful trick to optimize disk I/O for large images, especially when you can benefit from a fast internal network.
Focused hands-on problems designed to help you hone your DevOps or Server Side skills. Some challenges are more educational, while others are based on real-world scenarios. The platform provides hints and feedback for each challenge, including automated solution checks.
Learn how to build and publish an uncompressed container image - a helpful trick to optimize disk I/O for large images, especially when you can benefit from a fast internal network.
In this challenge, you will practice installing and configuring containerd: obtaining the release binaries, placing them in the correct locations, adding the container runtime and CNI plugins to the system, and starting a container with full networking support.
Learn how to build a secure, lightweight, and production-ready Python container image for a FastAPI application by following this hands-on challenge full of practical tips and tricks. Solutions for pip + venv, poetry, and uv are included.
This exercise tests your ability to safely upgrade a multi-node Kubernetes cluster from version 1.30 to 1.31 following the standard upgrade procedure.
Learn how to build a secure, lightweight, and production-ready container image for a dynamically linked Go application by following this hands-on challenge full of practical tips and tricks.
Learn how to build a secure, lightweight, and production-ready container image for a statically linked Go application by following this hands-on challenge full of practical tips and tricks.
Learn how to build a secure, lightweight, and production-ready Node.js container image for a SvelteKit application by following this hands-on challenge full of practical tips and tricks.
Learn how to build a secure, lightweight, and production-ready Node.js container image for a Next.js application by following this hands-on challenge full of practical tips and tricks.
Learn how to build a secure, lightweight, and production-ready Node.js container image for a Nuxt application by following this hands-on challenge full of practical tips and tricks.
Test your Linux and Networking skills by identifying which port a service is using. Sounds easy? Perhaps, but be careful - you only get one shot!
Test your Linux and Networking skills by pinpointing a process that is listening on a given port. Sounds easy? Perhaps, but be careful - you only get one shot!
Can you resolve issues with a Node.js container's termination process to ensure graceful shutdown on 'docker stop'?
Can you make a container exit gracefully after the 'docker stop' command while preserving its extensible entrypoint mechanism?
This challenge focuses on debugging memory usage issues in a Go application deployed in a Kubernetes cluster. The goal is to ensure the application can handle moderate traffic without crashing, even when it runs with significantly constrained memory resources.
This exercise tests your ability to configure kubernetes network policies to make sure only pods with specific labels can communicate with each other.
Learn how to copy all image tags from one repository to another in an efficient way.
Learn how to copy a multi-platform image from one repository to another using the docker manifest command or other, more convenient, tools like crane, skopeo, or regctl.
Learn how to perform one of the most basic Docker operations - build and publish a container image.
Learn how to leverage Docker to copy a container image from one repository to another.
Learn how to copy a container image from one repository to another without using Docker, Podman, or any other container runtime.
Hack your way through this challenge making the OOM kills invisible again.
Prove your SRE skills - deploy a resource-greedy application to a Kubernetes cluster and make it run for a while without disrupting the service.
Run a multi-container Docker Compose application limiting its total CPU and memory usage without specifying the individual container's limits.
Learn how to fine-tune the container's cgroup to make the container exit when one of its processes runs out of memory.
Learn how to set up a cgroup v2 to make the OOM killer terminate the entire process group when one process goes out-of-memory.
Start a Linux process and limit its CPU and memory usage with cgroups.
Prove your SRE skills - identify and stop an overloaded container, then start a new one with limited CPU and RAM resources.
Learn how to write a Dagger Function to run the unit test suite of a Go project.
Learn how to use Docker Scout to analyze and remediate vulnerabilities in a container image.
Learn how to write a Dagger Function to build a multi-arch Go project.
Learn how to start using Dagger in your project. Practice by creating your first Dagger module and adding some functions to it.
In this simple challenge, you will learn how to install the Dagger CLI on a Linux machine with Docker already running.
Practice copying files to/from running Kubernetes Pods that don't have a shell or other command line tools installed.
Practice copying files to/from running Kubernetes Pods to become a Kubernetes troubleshooting ninja.
Practice copying files to/from running containers to become a container troubleshooting wizard.
Can you unpack the filesystem of a container image into a local directory?
Practice your container debugging skills by editing a file in a running container.
Can you edit a file in a running container? What if there is no shell?
Can you edit a file in a running Kubernetes pod? What if there is no shell inside and the container's user lacks the write permission?
Not all distroless images are created equal. Can you find the right base image for the application in this challenge?
Learn on practice the limitations of FROM scratch images and the ways to mitigate them.
Be a networking Sherlock Holmes - find out which port a Kubernetes app uses and send a request to it.
Learn how to send a signal to an application running as a Kubernetes pod.
Learn how to send a signal to a Kubernetes app running in an unprivileged container without shell.
Learn how to send a signal to a Kubernetes app running in a container without shell.
Bring your understanding of Linux containers to the next level - start an Nginx container performing every main step of the process manually.
Can you start a container using the default containerd CLI, ctr? Knowing how to use ctr may come in handy when you need to debug lower-level container issues.
Explore how nerdctl tries to look like Docker when it comes to UX. Are containers started with nerdctl any different from those started with Docker 🐳?
Start a container using an alternative container runtime - Podman. Shouldn't be too hard if you already know how to start a container with Docker 🐳
Perform the most fundamental Docker operation - start a container. Sounds too easy? Be ready to also answer a few tricky questions about it!
Prove your networking skills by setting up an improvised proxy server with netcat.
Prove your networking skills by mapping one network address to another using socat.
Prove your networking skills by mapping one network address to another without starting any additional processes.
Prove your mastery of Linux and containers by connecting multiple network namespaces into a single network.
Prove your Linux networking skills by connecting two network namespaces with a virtual Ethernet device.
There is a container that seems to have access to all host's interfaces but for some reason cannot call any addresses outside of the host. Can you fix it?
Learn how to create fully isolated virtual network environment using Linux network namespaces.
Learn a bunch of Linux networking tricks while trying to access an Nginx server running inside a container started with ctr and a bare containerd daemon.
Learn how to extract files from container images with the ctr command-line client.
Learn how to label container images using the ctr command.
Learn how to pull container images from different registries using the ctr command.
Learn how to tag and push container images to a remote registry using the ctr command.
Learn a trick or two about container image labels and how to read them with ctr.
Learn a bunch of Linux networking tricks while trying to access an Nginx server running inside a Docker container with no published ports.
Can you find a way to execute a command in a Docker container using ctr?
Learn how to work with containerd namespaces using the ctr command-line client.
Identify what causes the Pod initialization to fail and fix it while keeping the Pod images unchanged.
Identify what causes the Pod initialization to fail and fix it while keeping the Pod images unchanged.