Docker 101: Publish All Exposed Ports on Random Host Ports to Avoid Port Conflicts
Can you get several builds of an app running side by side without port conflicts, so you can test them simultaneously?
Focused, hands-on problems for sharpening your DevOps and server-side skills. Some teach specific concepts while others mirror real-world scenarios. Every challenge includes hints, feedback, and automated solution checks.
Can you get several builds of an app running side by side without port conflicts, so you can test them simultaneously?
Build five ways to combine containers in one Pod: a sidecar that extends the app, an init container that finishes before the app starts, a native sidecar with a startup guarantee, an ambassador that mutates an outbound call, and an adapter that translates an inbound one.
Set up your own OCI-compatible container registry with username/password authentication and HTTPS - the kind of protection you'd expect before using a registry in production.
Stand up a self-hosted container registry so you can push and pull images without relying on a third-party registry. Useful for tests, internal services, air-gapped environments, or just for poking at the OCI Distribution API.
Get container images onto a server that has no route to the Internet or access to a container registry.
Explore the OCI image index, manifests, and configuration of a remote multi-platform image - without pulling a single byte of filesystem layers into the local Docker daemon.
Investigate a potentially compromised CI host. A sandboxed "agent" running in the background is suspected of breaking out - confirm the breach and neutralize it without taking the sandbox down.
Learn how to build container images for non-native CPU architectures by offloading the build to a remote machine using Docker Buildx.
A poorly structured Docker image contains leftover build dependencies and leaked private registry credentials hiding in its intermediate layers. Squash the image to produce a clean, compact version with the same runtime filesystem.
Practice using Docker build arguments to inject version and commit metadata into a Go application during the image build.