Explore the Catalog

Tutorials, challenges, courses, skill paths, playgrounds, and more — search the whole library in one place.

Tutorial

How to Build Smaller Container Images: Docker Multi-Stage Builds

Learn how to build smaller, more secure Docker container images using Multi-Stage Builds. This guide explains common sources of image bloat, best practices for slimming down production images, and practical examples for Node.js, Go, Rust, and other application stacks. Start optimizing your containers today!

How to Build Smaller Container Images: Docker Multi-Stage Builds (cover image)
Tutorial

Native SSH Reverse Tunneling with Pomerium

Use Pomerium's native SSH support to publish a local service through a standard reverse SSH tunnel, with OpenID Connect (OIDC) authentication and continuous authorization on every request. Reach services behind Network Address Translation (NAT) without firewall holes or custom agents, and control both who can use the service and who can open the tunnel. Application traffic stays on infrastructure you control.

Native SSH Reverse Tunneling with Pomerium (cover image)
See all tutorials →
Challenge

Squash a Bloated Container Image to Remove Waste and Leaked Credentials

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.

See all challenges →
Skill Path

Docker 101: Build Container Images

Learn how to write Dockerfiles from scratch and build production-ready container images. Start with the basics of image building and progress through handling dependencies, compiling applications, inspecting image internals, and optimizing builds with multi-stage Dockerfiles. Then go deeper with advanced Dockerfile instructions, analyzing image internals, and producing multi-platform builds.

See all skill paths →
See all shell gyms →