← All writing

Docker was never the hard part

Abhay Bagda 04 May 2026 4 min Quick Take

I spent two years in school being marched through Docker. Lectures, labs, a graded exam at the end. I could write a Dockerfile from memory, recite the difference between an image and a container, and tell you what docker compose up was supposed to do. None of that is the same as knowing how to use the thing. I had memorised it, not learned it, and at the time I could not tell the difference.

Last year I took on a contract to build an internal tool for a small office and deploy it on their Synology NAS. Anyone who has worked with a Synology knows where this is going. The clean way to ship anything onto one is Docker. Synology has native support for it. The container shows up in the GUI, runs alongside everything else on the box, survives reboots without me having to think about it. I knew this on day one. I also knew, somewhere I was not yet willing to say out loud, that I had no idea how to actually do it.

I took the job anyway. Quoted it like it was a walk in the park. The certificate said I knew Docker, the exam said I knew Docker, the version of me that had nodded through the lectures said I knew Docker. So I told the client the same thing.

Then I sat down to start, and the gap between memorising and knowing opened up like a trapdoor.

You can pass an exam on something for years and still not know it. The thing that turns a fact into a tool is the moment you have to use it on a deadline.

The first thing I tried was AI. I asked Claude to write me a Dockerfile. It did. I asked it to walk me through the Synology side. It tried. The problem was that every answer it gave assumed I understood the next layer down, and I did not. I was pasting commands into a terminal hoping the right one would land. Two days in, I had a half-built image that would not run, a network setup I could not explain, and a client who thought I was making good progress. The lie was getting expensive.

The second thing I tried was a friend. I called Rafiq and told him the truth. He sat with me for a couple of hours and taught me Docker from the start. Not the exam version, the real one. He pulled apart every wrong assumption I had been carrying since school, the ones the lectures had quietly left in place because nobody was checking whether the model in my head matched the thing on disk. After that one session, the whole project collapsed in difficulty. The exam version had built me a maze. He handed me the map. The same session he also slipped in a handful of the small tools he uses every day to keep his workflow tight, things like justfile for replacing the half-remembered shell commands I had been typing from memory. Tiny upgrades, but the kind that compound across a year of work. I am writing those up properly in a separate piece so I can do them justice. I love it when friends pass knowledge sideways like that. It is the part of this industry that still feels like a community and not a leaderboard.

This is what Docker actually does. It takes your application and everything it needs to run, the OS bits, the libraries, the right version of Node, the environment variables, the ports, and packs it into one box that runs the same way on any machine that has Docker on it. Your laptop, a server, a Synology NAS, a colleague’s Windows desktop. Same box, same behaviour. No more “works on my machine”. No more spending an afternoon installing dependencies on a fresh server only to find the version is one minor off. No more wondering whether what you tested last week is what is actually running in production. You build the box once and you ship it. When the client wants the app moved to a new NAS three years from now, future me will copy one file across and start the container. That is the whole pitch.

The hard part was never Docker. The hard part was me deciding it was hard before I had tried, and then defending that decision by avoiding it. The mental block was doing more work than the technology ever asked of me.

If you have been carrying that kind of block around with a piece of tech for years, find the friend who actually uses it and ask them to sit with you for an hour. You will be embarrassed for the first ten minutes and free for the rest of your career.