Tutorials

Deep dives into DevOps and server-side topics, combining theory with hands-on examples. Run every command in an attached remote playground, from your browser or local terminal over SSH — no setup required.

Collection
Category
Tutorial

How Container Filesystem Works: Building a Docker-like Container From Scratch

Learn how Linux containers are built from the ground up. Starting with the mount namespace and a root filesystem, see why PID, cgroup, UTS, and network namespaces naturally follow - and how this foundation makes concepts like bind mounts, volumes, and persistence in Docker or Kubernetes much easier to grasp.

How Container Filesystem Works: Building a Docker-like Container From Scratch (cover image)
Tutorial

How Container Registries Work: Pushing and Pulling Images By Hand

Container registries look simple until you need to debug what was actually pushed, why a pull picked the wrong image, or why deleting a tag didn't remove anything. Learn how registries work by pushing, pulling, inspecting, and deleting image data directly through the Registry API.

How Container Registries Work: Pushing and Pulling Images By Hand (cover image)
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

A Deeper Look into Node.js Docker Images: Help, My Node Image Has Python!

Choosing the right base image for your Node.js application can drastically affect its security, size, and performance. This post breaks down popular options - from slim and distroless to full-sized images - helping you navigate the trade-offs and pick the best fit for your development, build, and production needs.

A Deeper Look into Node.js Docker Images: Help, My Node Image Has Python! (cover image)
Tutorial

Uncloud: How to Deploy a Django Web Application

Learn how to quickly deploy your Python Django-based application to a remote Linux server under your control. This hands-on tutorial covers preparing and packaging a Django application from source code on your local machine and then deploying it to an Uncloud-managed machine, along with the networking ingress configuration and without using any external image registry.

Uncloud: How to Deploy a Django Web Application (cover image)
Tutorial

Podman Configuration: Registries, Runtimes and Containers Without a Restart

This tutorial will help you configure your rootless podman instance to pull from only from specific registries, using different OCI runtimes as well as configure all containers to have specific attributes all without any daemon restarts or sudo calls.

Podman Configuration: Registries, Runtimes and Containers Without a Restart (cover image)
Tutorial

Change Your Root: Chroot Basics

Understand how the chroot system call changes the root directory for a process, learn how dynamic linkers resolve dependencies inside a jail, and see what an isolated process perceives as its filesystem root.

Change Your Root: Chroot Basics (cover image)
Tutorial

Managing Podman Instances Remotely

Learn how you can control multiple podman instances on remote machines without SSHing into them manually. Also learn to deploy your Compose application stacks without SCP / SSH with podman remote feature and Docker Compose v2

Managing Podman Instances Remotely (cover image)
Tutorial

Build a Custom Rootfs Image That Boots as a microVM, Not a Container

A container image and a bootable root filesystem are not the same artifact. This tutorial builds both from the same Dockerfile so you can see exactly where they diverge: what a plain ubuntu:24.04 is missing, the five requirements an iximiuz Labs playground rootfs has to satisfy, and how to prove an image would boot without being able to boot it. Ends with the same image built the easy way, from the official rootfs base.

Build a Custom Rootfs Image That Boots as a microVM, Not a Container (cover image)
Tutorial

Podman with Kubernetes: Play Before You Apply

This tutorial provides an in-depth know-how of working with Pods (group of container) with Podman. It also gives insights into how the podman CLI works well with Kubernetes, albeit in limited capacity to develop better Container Workflows.

Podman with Kubernetes: Play Before You Apply (cover image)
Tutorial

Kubernetes Debugging with DebugBox: Right-Sized Containers for Every Scenario

Most Kubernetes debugging images ship as a single 200+ MB package. DebugBox takes a different approach: three variants (15 MB, 47 MB, 91 MB) each scoped to a specific debugging task. This tutorial covers when to use lite, balanced, and power, how to run each as an ephemeral container or debug pod, and what tools are available in each variant.

Kubernetes Debugging with DebugBox: Right-Sized Containers for Every Scenario (cover image)
Tutorial

Podman and Linux Namespaces

Understand how podman works with configured Linux User Namespaces and how to configure / update these namespaces for current users.

Podman and Linux Namespaces (cover image)
Tutorial

Containers are processes

In this brief tutorial we'll explore the idea that Docker containers are just processes, from the perspective of the operating system. Based on this Securitylabs blog post https://securitylabs.datadoghq.com/articles/container-security-fundamentals-part-1/

Containers are processes (cover image)