Topic
Docker & Containers
If you spend any time in this corner of the internet, sooner or later everything ends up in a container. These posts cover the practical side: Compose files that actually run, networking that doesn't break, volumes that survive an upgrade, and the trade-offs nobody tells you about until you're at 2 AM trying to figure out why your mounts went read-only. Docker, Podman, image hardening, registries, and a healthy amount of "don't reach for Kubernetes yet."
190 articles in this topic.
Featured posts
-
yq: Editing YAML From the Command Line
Install the Go yq, not the Python one. Bump compose tags, patch Kubernetes manifests, merge configs and edit front matter from the shell, plus the gotchas.
13 min read -
PUID and PGID: Container Permission Fights
Why Sonarr, qBittorrent and Jellyfin fight over bind-mounted files, how PUID/PGID works in the image, when Docker's user: fits better, and how to share media.
12 min read -
PrivateBin vs Hemmelig: Secrets That Burn
PrivateBin and Hemmelig both share secrets that self-destruct. Compare encryption, features, and upkeep, plus tested Compose files and the archived-repo catch.
14 min read -
Shlink vs YOURLS: Self-Hosted Short Links
Shlink or YOURLS for your own short-link domain? Docker Compose setups for both, tested, plus API, analytics, multi-domain, backups and a clear verdict.
13 min read -
Self-Hosted Excalidraw, Minus the Cloud
Run Excalidraw on your own server in two minutes. Then see what the stock image still sends to excalidraw.com, and how to host real collaboration yourself.
16 min read -
Docker's Embedded DNS: Inside 127.0.0.11
Docker's embedded DNS at 127.0.0.11 resolves container names, aliases and replicas, then forwards everything else upstream. How it works and how to debug it.
14 min read
All Docker & Containers articles
- yq: Editing YAML From the Command Line
- PUID and PGID: Container Permission Fights
- PrivateBin vs Hemmelig: Secrets That Burn
- Shlink vs YOURLS: Self-Hosted Short Links
- Self-Hosted Excalidraw, Minus the Cloud
- Docker's Embedded DNS: Inside 127.0.0.11
- Monolith vs Microservices, Measured
- Pterodactyl Wings: Scaling Past One Node
- step-ca: Let's Encrypt for Your LAN
- Container Restart Storms at 2 AM
- Rootless Podman Quadlets vs Docker
- Read-Only Docker Containers: What Breaks
- LittleLink vs LinkStack: Ditch Linktree
- PHP2Shell: Is Your Homelab Running PHP?
- Keycloak vs Authentik vs Authelia
- Outline: The Team Wiki That Needs SSO
- Jellyfin GPU Transcoding: Prove It Works
- One PC, Many Players: Steam Headless
- Database Connection Storms, Explained
- Uptime Kuma vs Gatus vs Cachet
- Sizing 7 Days to Die and Other RAM Hogs
- AppArmor Profiles for Docker, Step by Step
- Catch Your Self-Hosted Apps Phoning Home
- Docker Build Cache in CI: Make It Hit
- Devcontainers for a Whole Team
- gVisor vs Firecracker vs Kata for Agents
- Network Namespaces by Hand, No Docker
- Radicale vs Baikal: CalDAV That Syncs
- AppFlowy vs Notion: Self-Host Your Notes
- Prompt Injection vs Your Coding Agent
- Stop Handing CI Jobs Root on Your Box
- RabbitMQ vs NATS: Pick a Message Bus
- Meilisearch vs Typesense for Self-Hosters
- Docker MCP Toolkit: Trust the Sandbox?
- Komodo MCP vs the Docker Socket
- Tinyauth vs Pocket ID vs Authelia
- Pterodactyl vs Pelican vs Crafty
- 20 Unix Users, 20 Rootless Dockers
- Self-Hosted OSRM in Docker
- Nominatim: Self-Hosted Geocoding
- Devcontainers Without VS Code Lock-In
- Docker Ate 215GB in a Week
- Stoat vs Fluxer: Self-Hosting Costs
- Postgres in Docker: The Durable Setup
- The *arr Stack Without 9000 Reddit Threads
- Self-Host SigNoz: Install Guide
- TrueNAS Apps vs Docker on TrueNAS Scale
- Kaniko & Buildah: Daemonless Container Builds
- Podman Compose for Docker-Free Workflows
- LXC vs Docker: Lightweight Containers
- regclient: Container Image Lifecycle Without a Daemon
- Incus: LXD's Community Fork, Two Years In
- Your Agent Doesn't Need a Shell
- Where Should Your Coding Agent Run?
- Go on Scratch: Docker With No OS at All
- Multi-Arch Docker Builds With QEMU & buildx
- Mullvad VPN Containers via Gluetun: Per-App VPN
- cgroups v2 in Practice: Limits, Pressure, Containers
- crun vs runc vs youki: OCI Runtimes Compared
- Stirling-PDF: Stop Uploading Your Tax Returns to Sketchy Sites
- Skopeo: Container Image Surgery Without a Daemon
- Dragonfly: P2P Container Image Distribution at Scale
- Karakeep: Self-Hosted Bookmarks With AI Tagging
- Kasm Workspaces: Browser Desktops
- Rootless Docker: Tips, Gotchas & Fixes
- Dead Container Took Down Prod
- Self-Host a Local AI Coding Workhorse
- Linux Namespaces from Scratch
- Home Assistant Add-Ons vs Docker Containers
- Rancher vs Podman vs Docker Desktop
- Garden vs Tilt vs Skaffold
- Lima vs Multipass
- Compose Watch: Faster Dev Loops
- tini vs dumb-init vs --init
- Container Escape: How to Stop It
- ko vs Jib vs Buildpacks
- Cosign Keyless: Sign Without Keys
- Docker Bake vs Compose Build
- WASM Containers in 2026
- cri-o vs containerd
- Nerdctl vs Docker CLI
- Sysbox vs gVisor vs Kata
- Trivy vs Grype vs Docker Scout
- Blog Comments: Self-Host or SaaS?
- Hoist: Label-Driven Docker Updates
- Immich Hardware Acceleration: Stop Cooking Your CPU
- systemd-nspawn: The Container Runtime Already on Your Box
- Distroless Images: When Minimal Goes Too Far
- OpenCanary: Honeypots for Your Home Lab
- Colima vs OrbStack vs Docker Desktop on Mac
- SBOMs and Supply Chain Security
- Authentik vs Authelia: SSO for Your Self-Hosted Stack
- Container Security: Scan and Sign Your Images Like You Mean It
- Falco: Catch Container Attacks at Runtime
- Loki vs ELK: Centralized Logging Without the RAM Tax
- Cloudflare Tunnels: Beyond Port Forwarding
- Immich vs PhotoPrism: Escape Google Photos Without Losing Your Mind
- Trivy + Cosign: Scan and Sign Your Images
- Prometheus + Grafana: Monitoring That Doesn't Lie to You
- Wazuh: Open Source SIEM for Your Home Lab
- Rootless Docker: Run Without Root
- Docker Networking Demystified
- EmDash: WordPress Done Right, Finally
- De-Googling: Self-Hosted Replacements for Google Apps
- ctop and lazydocker: Docker Monitoring Tools
- Private Docker Registry with Harbor
- Docker Manager Showdown: Pick One
- Obsidian LiveSync: Self-Hosted Sync Without Paying for the Privilege
- HAProxy: Load Balancing Done Right
- Stop Living Dangerously on :latest Docker
- MySQL & MariaDB CLI in 2026: What Changed
- Alpine vs. Distroless: Choosing Your Minimalist Base
- Distroless: How to Build Slim, Secure Containers
- Multi-Stage Docker Builds: Stop Shipping Your node_modules to Production
- Traefik: Docker Routing with Labels
- Docker BuildKit: Stop Waiting for Your Images to Build
- Piper vs Coqui: Text-to-Speech on Your Own Hardware (Because AWS Polly Charges Per Character Like It's 1999 SMS)
- Nginx Proxy Manager for Normal Humans
- Healthcheck vs Restart Policy: The Difference Matters
- Nginx: The Config That Makes Sense
- Appwrite: Your Own Firebase, Minus the Google Surveillance Subscription
- Sysctl Tuning: The Linux Kernel Knobs That Actually Matter
- Watchtower vs Diun: Automating Docker Updates Without Burning Your Stack
- Uptime Kuma: Status Pages, Alerts, and Knowing Before Your Users Do
- Watchtower: Safe Container Auto-Updates
- Chaos Engineering: Break Things on Purpose Before They Break Themselves
- Docker Health Checks: Because "It's Running" Doesn't Mean "It's Working"
- Docker Logging: From "Where Did My Logs Go?" to Centralized Bliss
- Caddy Advanced: Automatic HTTPS, Plugins, and Config That Doesn't Make You Cry
- Lazy Docker & Dive: CLI Tools That Make Docker Less Painful
- Docker Compose Environment Variable Precedence
- Podman Quadlets: Running Containers Without the Docker Daemon (or Your Sanity)
- Ollama Beyond the Basics: Model Management, Custom Models, and Optimization
- Linux Capabilities: Drop Root Without Breaking Everything
- Docker Security Hardening: 15 Things You're Doing Wrong Right Now
- Paperless-ngx: Scan It, Forget It, Find It Instantly
- Whisper & Faster-Whisper: Self-Hosted Speech-to-Text That Actually Works
- Ulimit, Cgroups, and the Art of Stopping Processes From Eating Your Server
- Portainer vs Dockge: Managing Containers Without the Terminal
- Docker Volumes vs Bind Mounts: Where Your Data Actually Lives
- Plex Optimization: Remote Access, Transcoding, and Taming the Beast
- Traefik vs Nginx Proxy Manager: Reverse Proxies for Humans
- Wiki.js with GitSync: Documentation That Lives in Version Control Like It Should
- Docker Compose vs Docker Swarm: When "Good Enough" Beats "Enterprise"
- Vaultwarden vs Bitwarden: Own Your Passwords Before Someone Else Does
- Docker Resource Limits: Stop Letting Containers Eat Your RAM
- Docker CMD vs ENTRYPOINT: The Final Answer
- Docker Compose Profiles: Run Only What You Need
- Cleaning Up Docker Disk Space the Right Way
- Stop Putting Passwords in Docker ENV
- Why the `latest` Docker Tag Is Lying to You
- Docker Network Aliases: The Feature Nobody Uses
- Docker Healthcheck Patterns That Actually Work
- Running Docker Containers as Non-Root (And Why You Should)
- Docker Container Labels: The Metadata You're Ignoring
- Why Docker Builds Are Slow: Layer Cache Explained
- Docker Exit Codes: Why Your Container Keeps Restarting
- The .dockerignore File You're Not Writing
- Why Your Docker Logs Are Eating Your Disk
- Why Your Docker Container Ignores Ctrl+C
- Understanding and Optimizing Docker’s daemon.json File
- Docker Networking Essential Guide for All Skill Levels
- Docker Volume Mounts: Essential Flags
- How to Transfer docker Images Without a Repository
- Copying Files Between Docker Containers and Host Machines
- Dockerfile: Differences Between COPY and ADD
- Docker Strategies for Load Balancing and Failover
- Docker Networking: Connecting to the Host from a Container
- Understanding Docker vs. Full Virtual Machines (VMs)
- Multiple Actions with a Single docker exec Call
- Executing Commands with Asterisks in Docker
- WordPress, Docker, NGINX, and MySQL via Ansible
- Automating Docker via Ansible
- Observability and Monitoring for Containers
- Docker vs Podman: Key Differences
- A Guide to LXC/LXD
- Docker Compose: Orchestrating Multi-Container Applications
- Wiki.js for your documentation in docker
- NocoDB DB Management System
- Appwrite Backend-as-a-service (BaaS)
- Wireguard VPN Server in Docker
- Install & use Doxygen via Docker
- Automatic Backup of Docker MySQL or MariaDB Containers
- WordPress on PHP-FPM & Caddy in Docker
- Docker Compose useful commands
- How to install NextCloud via Docker
- Install a php script in PHP-FPM & Caddy via Docker
- Install Caddy reverse proxy via Docker
- Access Docker socket via TCP
- Install docker on Ubuntu/Debian