Are you tired of configuring, and reconfiguring, and configuring yet again your favorite server applications? I was, but Docker fixed that. Portability makes Docker one of my favorite homelab tools, and I think you’ll love it too.

Configuring Apps Is the Most Annoying Part of Any Software

There’s nothing more annoying than configuring and setting upself-hosted apps. Some software makes setup a breeze, and it only takes a few minutes, while other programs can, quite literally, take several hours to properly configure.

Between setting up users, remote access, libraries and catalogs, and other configuration options, once I have a program set up I don’t want to go through the process again.

This is one of the best features ofDocker—once you set up a program, you really don’t have to worry about setting it up again in the future unless something goes majorly wrong with your configuration files.

Docker’s Portability Keeps Configuration Files Outside the App

One of my favorite features of Docker is that the configuration and settings files are kept outside the app.

This is done in one of two ways. First, Docker can use its ownDocker volumefor each container (or one volume for multiple containers). Docker volumes act as their own storage unit and are completely managed by Docker.

With Docker volumes, you won’t be able to manage or edit the files yourself outside the container, which can be seen as a downside. However, the Docker container won’t have any access to host files when using a volume, which is definitely more secure. Plus, Docker volumes are the best option for portability as Docker knows exactly what it’s doing with it, since a Docker volume uses Docker’s own file system.

The second way Dockers files are managed is through what’s called abind mount. With a bind mount, you’re actually binding a folder or file from your host to the Docker container. This is my preferred method, as I can then access all the Docker configuration files for that container from the host with ease.

Bind mounts are portable just like Docker Volumes, but you might have to change up paths or symbols when moving between operating systems, should you migrate from say, Linux to macOS or Windows. However, if you’re going Linux to Linux, then things should just copy over.

Regardless of which method you use—volumes or bind mounts—most Docker containers store all configuration files, databases, and other similar things outside the container. What this does is allow you to move the container to a new system or simply reinstall the container without worrying about configuring things again.

Docker’s Design Makes Reinstalling a Worry of the Past

With Docker’s portability, it’s easy to change which container you’re using or just reinstall a container without worrying that things will break.

For instance, I was trying to useCalibre-Web(connected tomy Calibre container) to convert some ebook files a few weeks ago. The Calibre-Web container I was using was outdated and missing some libraries. I started out by trying to manually install them in the container, but that didn’t work.

So, I moved to creating an entirely new container, with the help ofChatGPT, that had the missing libraries already configured. This was relatively easy, but the best part was that I simply changed my Docker container from using the old image to my new image.

Since the underlying functionality of my Docker container didn’t change—it was still Calibre-Web, after all—I was able to leave my configuration files in place and everything worked as I changed what container I was using.

Likewise, I’ve had containers that were community maintained when I started, but eventually got official containers down the road. While a few environmental flags had to be changed in Docker, I was able to simply change the image I was using, and I was on the official container without an issue.

I’ve also beenexec’d into a container(accessing that container’s terminal shell) and messed with core files to that container trying to fix something, only to break it worse. In that instance, I just re-pulled the Docker image and reinstalled the container. All my configuration settings were saved because they lived outside the container, but the changes I madeinsidethe container were fixed by the reinstallation.

Overall, the portability of Docker is why I run my favorite apps in it. I’m able to move Docker containers from one system to another, or reinstall apps without losing any configuration data.

If you’ve not tried Docker yet, then now’s the perfect time to give it a try. Your app setups will be one-and-done for most containers, and the benefits only go up from there.

Not sure where to get started with Docker? I have a slew offavorite Docker containersthat I think every homelabber should run. From Plex to Homepage, there’s something for everyone in my roundup.