Docker 101: Override Default Container Commands and Arguments
Run a container using the 'docker run' command, overriding the default container command and arguments.
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.
Run a container using the 'docker run' command, overriding the default container command and arguments.
Practice starting containers in "detached" mode, leaving them running in the background, reading their logs, and re-attaching to them.
Run a container using the 'docker run' command. That's it - that's the challenge.
Practice installing Docker on Fedora and learn about the different components that make up Docker Engine.
Practice installing Docker on Debian and learn about the different components that make up Docker Engine.
Practice installing Docker on Ubuntu and learn about the different components that make up Docker Engine.
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.
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 Nuxt application by following this hands-on challenge full of practical tips and tricks.
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.
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 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 copy a container image from one repository to another without using Docker, Podman, or any other container runtime.
Learn how to leverage Docker to copy a container image from one repository to another.
Learn how to perform one of the most basic Docker operations - build and publish a container image.
Hack your way through this challenge making the OOM kills invisible again.
Learn how to fine-tune the container's cgroup to make the container exit when one of its processes runs out of memory.
Run a multi-container Docker Compose application limiting its total CPU and memory usage without specifying the individual container's limits.
Prove your SRE skills - deploy a resource-greedy application to a Kubernetes cluster and make it run for a while without disrupting the service.
Prove your SRE skills - identify and stop an overloaded container, then start a new one with limited CPU and RAM resources.
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 Kubernetes pod? What if there is no shell inside and the container's user lacks the write permission?
Can you edit a file in a running container? What if there is no shell?
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 a container without shell.
Learn how to send a signal to a Kubernetes app running in an unprivileged 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 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.