Infrastructure
Docker Intermediate #1: Multi-stage Builds and Image Slimming
Splitting build dependencies from runtime dependencies inside a single Dockerfile. Multi-stage patterns for Go, Node, and Python, all the way to distroless and scratch — the workflow that takes images from gigabytes down to tens of megabytes.
RHEL Basics #5: Users / Groups / Permissions — UID/GID, sudo, ACL
The shape of /etc/passwd and /etc/shadow, the useradd / usermod / groupadd family, what rwx means and chmod's two notations, ACL (getfacl / setfacl) when finer-grained control is needed, and least-privilege sudo — all in one post.
AWS Basics #2: IAM — Users, Groups, Roles, Policies
The four elements of IAM — Users, Groups, Roles, Policies. JSON policy syntax, the essence of AssumeRole, and permission design patterns that hold up in production.
Docker Basics #6: .dockerignore and the Build Context — Using the Cache Well
The most common reason builds get slow or images get bloated is mishandling the build context. What it is, how to trim it with .dockerignore, and how to find where the layer cache breaks so you can order your instructions well. Wrap-up for Docker Basics.
RHEL Basics #4: Intro to systemd — Services, Targets, journalctl
systemd is RHEL's PID 1. Starting and stopping services with systemctl, enabling auto-start on boot, selecting the system's mode via targets, writing your first .service unit by hand, and reading every log in one place with journalctl.
AWS Basics #1: Account, Region, and Availability Zone
Where the cloud and AWS sit, the account and root user, regions and Availability Zones (AZ) around the world, and the difference between global and regional services — the map you need before putting anything on AWS.
Docker Basics #5: Registries — Docker Hub, GHCR, push/pull
To use an image you built on a different machine, you push it to a registry. The structure of an image name, logging into Docker Hub and GHCR, the tag/push/pull flow, and pinning images precisely with digests.
RHEL Basics #3: dnf and Package Management — repo, modules, AppStream
Package management on RHEL is unified under one command: dnf. From everyday commands like install / remove / search / info / history, to why BaseOS and AppStream are split apart, to picking a specific version of a package via modules, to safely attaching external repos like EPEL — all in one post.
Docker Basics #4: Volumes and Networks — Data and Communication
Keeping data alive after a container dies, and getting containers to talk to each other by name. The difference between bind mount and named volume, the bridge / host / none network modes, and -p port mapping — all in one place.
RHEL Basics #2: Setup — Installing RHEL 9, Subscription Manager, First Login
Grab the RHEL 9 ISO via Developer Subscription, build a VM in UTM or VirtualBox, walk through the Anaconda installer, register with subscription-manager, and clean up the small post-install items (hostname / time / dnf update / sudo user) — all in one pass.
Docker Basics #3: Images and Containers — build, run, ps, logs, exec
The day-to-day Docker CLI commands in one place. build options, the run flags you actually use (-d, --name, --rm, -e), and the lifecycle that runs through ps , logs , exec , stop , rm.
RHEL Basics #1: What Is RHEL — From Fedora to RHEL, plus AlmaLinux and Rocky Linux
Fedora is where new technology gets tried first; what survives flows into RHEL. CentOS Stream sits in the middle as a preview of the next RHEL, and AlmaLinux and Rocky Linux have settled into the role of free RHEL-compatible distros. Here's the shape of the RHEL ecosystem after CentOS, in one read.