Skip to Content
0 likes
Put Two Containers on One User-Defined Network Level: Beginner

Create a network, reach one container from another by name and see the same call fail on the default network. After this, you can fix a bad address error between containers.

0 likes
Write a Dockerfile That Builds on the First Try Level: Beginner

Write a four-line Dockerfile, build it and run it, then read the errors for a missing file and a missing Dockerfile. After this, you can package a small script and fix the first build errors yourself.

0 likes
Connect a Container to Two Networks Level: Intermediate

Put a proxy on a front and a back network and prove which containers can reach which. After this, you can connect one container to several networks and keep the rest isolated.

0 likes
Find What Is Using Disk With docker system df Level: Intermediate

Read the docker system df summary, find the big image or volume with the verbose form, and decide what is safe to remove. After this, you can find where the space went without running a broad prune.

0 likes
Fix "permission denied" on a Bind Mount Level: Intermediate

Reproduce the error with a non-root container, read the owner numbers and fix it by changing the folder's owner or the container's user. After this, you can tell which side to change and stop reaching for chmod 777.

0 likes
Named Volume vs Bind Mount for a Database Level: Intermediate

Run PostgreSQL 18 on a named volume and on a bind mount and compare what each leaves on your disk. After this, you can pick the right mount for a database and mount the right folder.

0 likes
Override ENTRYPOINT for a One-Off Job Level: Intermediate

Run a different program from the same image with --entrypoint, in docker run and in Compose. After this, you can start a shell or a one-time job without rebuilding the image.

0 likes
Pass Env Vars Without Hard-Coding Secrets Level: Intermediate

Pass variables from your shell, from an env file and from a Compose secret, and make Compose refuse to start when a required one is missing. After this, you can keep real values out of your files and your commands.

0 likes
Push to Docker Hub and Pull on Another Machine Level: Intermediate

Tag, push and pull an image in the order you type the commands, shown against a local registry, with the Docker Hub version written out. After this, you can move an image to another computer.

0 likes
Split Dev and Prod With Compose Override Files Level: Intermediate

Keep one base compose.yaml and merge a development override and a production file on top of it. After this, you can see what each environment gets with docker compose config before you run it.

0 likes
Stop Shipping node_modules in the Image Level: Intermediate

Keep node_modules out of the build context with a .dockerignore file and let npm ci install the packages inside the image. After this, you can cut the context size and avoid copying Windows-built packages into a Linux image.

0 likes
Tag an Image With a Version and latest Level: Intermediate

Tag one build with a version, latest and a commit name, then release the next version without moving the old tag. After this, you can roll back with one command.