Copy All Image Tags from One Repository to Another
Learn how to copy all image tags from one repository to another in an efficient way.
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 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. Get your hands dirty and try to identify the right base image for your application.
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 Docker 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.
The culmination of the Docker networking challenges series. Can you create a Docker-like bridge network from scratch and using nothing but basic Linux commands.
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.