Do you think Docker is only for developers? I’ve heard that saying, but it couldn’t be more wrong. I’m not a developer, and I use Docker to run dozens of services and apps in my homelab.
What Is Docker Anyway?
Docker is a containerization platformthat allows you to run services, programs, and mini operating systems on your computer or server. It can also be used to run various development environments, tools, and other things needed for building applications.
One of the main reasons to use Docker is to run various services segregated from both each other and your host operating system. This allows you to have greater privacy and protection for your system. If one container gets compromised, it only has access to itself and whatever else you grant it access to.

So, Am I a Developer?
I wouldn’t necessarily call myself a “developer.” While I used to do some programming and application development, I haven’t in many years. I do know my way around a Linux terminal, and still dabble in HTML or CSS when it comes to my personal websites, but I am in no way a full-blown developer.
At most, I’m a tinkerer. I love messing with things, changing an app’s code to make it do what I want, and poking around the various services that I run in my homelab.

Because I don’t do development tasks, I don’t actually run any development services in Docker. There are someawesomedeveloper tools available in Docker, I just don’t have a use for them personally.
If I’m Not a Developer, Why Use Docker?
While Docker does afantasticjob ofhelping with development tasks, that’s just not my use case for it. Instead, I leverage the containerization of Docker for something entirely different:homelabbing.
There are tens of thousands of Docker containers available. Many of the available containers focus on running services or programs, not necessarily development.
In my homelab,I have nearly 30 Docker containers deployedon my primary Docker host, and another half dozen on my secondary Docker host. These services range fromPi-holetoPlex, OpenSpeedTest,Calibre, paperless-ngx,Home Assistant,Tautulli,Homepage, and many others.
The question is: why do I use Docker for this instead of just installing the apps themselves? The answer is simple: I love containers.
With Docker, my Plex container cannot access anything on my network unless I grant it access. So, I give Plex access to my media library and that’s it. Home Assistant actually has zero access to my server at all; it has its own IP and runs on my network, but if it gets compromised, it can’t get to the other hardware on my network.
The same goes for all the other apps I run on Docker. They’re all segregated away from each other. Docker containers only have access to what I grant, meaning I have fine-tuned control over my security risks in the homelab.
On top of that, Docker containers come pre-configured for the app you’re wanting to run, so there’s little setup required to get a service up and running. All dependencies are already there, and they are kept up-to-date by the container developer. If a dependency requires a reboot, all I have to reboot is the Docker container, not my host system.
Docker is also portable in that I can easily change the host system without reinstalling or reconfiguring services. I recently moved my Docker server from one computer to another, and the only container that didn’t actually bring its configuration with it was Home Assistant (which I easily restored from a backup).
When I first started using Docker, I didn’t realize how useful of a feature this would be. However, I’ve used it so many times. While the migration function is nice, my favorite part of Docker is thatI can reinstall a containerwithout losing any settings or configurations.
So, why do I use Docker? It’s simply the easiest way for me to install, test, and use services in my homelab. Deploying a Docker container takes just a few seconds. When I’m done, I just remove the container and the service (with all dependencies) disappear.
Docker Runs My Entire Homelab and I Couldn’t Imagine Otherwise
At this point in my homelab journey, I couldn’t imagine not using Docker. I can’t even begin to count the number of services I’ve tried out in Docker, only to remove a few minutes later because it didn’t do what I wanted.
Without Docker, I’d have to install the software plus any dependencies it had. Uninstallation would then require the removal of those dependencies, and there’s almost always stray configuration files left behind.
Docker just makes managing my homelab simple, and it’s definitely the best tool for the job.
In the future, I plan to deploy Docker in a high-availability environment. Essentially, I’ll have three similarly-specced servers that all run Docker. Portainer, my preferred Docker manager, would then distribute those services between the various servers.
If I needed to work on one server, all of those services would migrate to another server and stay running. When the server that underwent maintenance was back up, then it’d be available for containers to deploy to it again.
Without using some form of application management system, like Docker, this wouldn’t be possible. Because of how Docker handles its volumes and storage, when those services migrate, so do all their preferences, configuration files, and any local storage used by the app.
Docker is absolutely essential to my setup, and I don’t see it going anywhere anytime soon.
So, no, I am not a developer, but I absolutely love Docker. If you’re not a developer, you should totally give Docker a try—it’ll change your setup for the better.
There are a lot of Docker containers out there to try. Tens of thousands, actually. If that’s overwhelming to you, you’re not alone.Here are a handful of my favorite Docker containersthat I think should be in every homelab, ranging from simple web pages to full-blown services.