Hands-On with Linux and Docker: Building, Breaking, and Learning
Lately, I’ve been knee-deep in my homelab, exploring what it really means to self-host and manage services in a Dockerized environment. It’s one thing to read about containerization, but it’s another to build and troubleshoot it on your own system — where every permission error, missing dependency, and YAML misalignment becomes a lesson in systems administration. My current project, running Glance, a self-hosted dashboard app, has been both a technical challenge and a rewarding crash course in Linux fundamentals, networking, and Docker architecture.
Setting up Glance required more than simply running a container — it demanded a full understanding of Docker volumes, port mapping, and dependency management. I’ve had to dive into configuration files, track down missing packages, and even restructure file mappings when updates changed directory paths. What initially started as “just getting something to run” has turned into a deep, practical education in how containerized systems communicate, how environments are isolated, and how small mistakes in configuration can ripple through an entire stack.
What stands out most is the iterative nature of the process — the constant cycle of building, breaking, fixing, and improving. Each obstacle teaches something new: how services depend on each other, how networking behaves behind containers, and how the Linux filesystem acts as the foundation for everything. This hands-on learning isn’t just about making Glance work; it’s about gaining a clearer picture of how modern infrastructure operates, and how powerful it feels to control and understand the environment that powers your own systems.














