Many are delving into learning containers and Kubernetes. With this, having your own home lab environment is especially valuable in tinkering and setting up an environment for learning. This post will focus on the best Docker containers for home server environments and see which solution provides an easy way to get up and running with Docker containers to learn.
What are containers?
Even though containers have been around for quite some time in the Linux world, there started to be huge interest, and an uptick in container adoption after the virtualization and physical to server consolidation movement started to slow. Also, the huge adoption of cloud and cloud-native processes and applications created a shift among enterprises to rearchitect their monolithic applications and transition to microservices. Microservices allow developers to more aggressively release application enhancements as larger overall applications are broken into individual services. These are most often run inside containers.
Unlike virtual machines, containers are fully contained application environments that have all the dependencies rolled up inside the container so the application can run without any other requirements using the container. With this advantage, containers running on one system can be moved to another without worrying about the dependencies being met.
Containers are also more DevOps friendly as, due to their smaller size, they can be instantiated much more quickly than virtual machines and allow introducing idempotency for lifecycle management. Containers can be spun up, serve their purpose, and destroyed without worry about upgrades and other lifecycle operations with virtual machines.
What is Docker?
Docker is arguably the de facto standard in container technology and is THE solution that is most often used in containerized environments.
It is an open platform for developing, shipping, and running applications, allowing you to separate applications from your infrastructure. As mentioned earlier, this allows delivering software quickly. Docker provides an implementation of containers with a rich toolset that allows:
- Developing your application and supporting components
- Distribute and test your applications
- Allows implementing containers easily as part of your CI/CD pipeline
Note the following architecture and Docker components:
What is Kubernetes?
We can’t have a post about Docker and containerization without mentioning Kubernetes. What is Kubernetes, and why should you care when thinking about the best Docker containers for home server? Kubernetes is a container orchestration platform that takes care of your containerized applications’ management and high availability.
When you learn containers and get started with the best Docker containers for home server, your journey will probably not stop there. You will want to not only run containers, but at some point, you will want those containers to have all the features and capabilities found in enterprise environments for business-critical workloads.
Although there are vast technical differences, I like to conceptually think about Kubernetes benefits as similar to an enterprise hypervisor (which it is not). However, the similarities with Kubernetes in my mind come with the management and orchestration your enterprise hypervisor does today, like resource scheduling and availability, which are part of what Kubernetes brings to the table with your containers.
Keep in mind that containers in an of themselves are not highly available or orchestrated in any way. So, if the host goes down where the container is running, your containers will go down as well along with it. Kubernetes creates a cluster of resources that schedules and watches containers ensuring there are multiple replicas and these are orchestrated by the Kubernetes control plane.
Best Docker Containers for Home Server
In thinking about the best docker containers for home server, take note of my recommendations on running Docker containers for home server environments.
- Docker Desktop or Windows Subsystem for Linux (WSL)
- Standalone virtual machine with Docker installed
- Virtual Machine with Portainer
- Kubernetes cluster using Rancher and Rancher Desktop
- Synology NAS
1. Docker Desktop or Windows Subsystem for Linux (WSL)
Docker Desktop provides a super easy way to run Docker containers on a workstation machine. You can simply install Docker Desktop and use it for a graphical interface for running your Docker containers in Windows, Linux, or macOS.
You can think of Docker Desktop like running VMware Workstation on your desktop. It provides an easy way to download, configure, and play around with Docker containers in an environment that is intuitive and easy to use. It includes a graphical GUI wrapper to interact with your containers.
Learn more about Docker Desktop here and download it for your operating system:
On Windows machines, another great tool is installing Docker in Windows Subsystem for Linux (WSL). WSL is built into Windows 10 & 11 and can easily be used to house Docker. Note my post here:
2. Standalone virtual machine with Docker installed
One of the easiest ways to play around with Docker is running a standalone virtual machine with Docker installed. This is a great option, especially if you have a lab environment you run 24x7x365 or an environment where you want to run your Docker environment more than you run your workstation.
With VMs, you also have access to virtual machine snapshots which are a great tool in the learning environment. They provide an easy point-in-time to roll back to when needed.
At this point, in my home lab, I have upgraded my Packer template to Ubuntu 22.04. I am using Ubuntu with Docker installed. You can take a look at some of my relevant posts below:
Once you have your virtual machine up and running, it is as simple as getting Docker installed. You can find the relevant post covering installing Docker in Ubuntu here:
3. Virtual machine with Portainer
Another great option for best Docker containers for home server environments is using Docker installed and then using Portainer to manage your Docker environment. Portainer itself runs as a Docker container. So the workflow is to install your virtual machine, then Docker, and then install Portainer as a container to manage the environment. Portainer is open source and free with the community edition
Read my full walkthrough of installing Ubuntu 22.04 prerequisites and installing Portainer. I also covered how to upgrade your existing Portainer installation here:
4. Kubernetes cluster using Rancher and Rancher Desktop
Rancher is another really great free open source solution that allows having a solution to easily spin up Kubernetes clusters to manage your Docker containers. With Rancher, you have a fully GUI-driven web interface allowing you to create and manage your Docker containers and Kubernetes clusters.
In addition to a full server installation, Rancher has a Rancher Desktop tool that is new. It is the equivalent to Docker Desktop. However, it is only in the early stages of development so is a bit shy on features at this time. However, it will undoubtedly become better and better as a local development tool.
Read my Rancher and Rancher Desktop posts here:
- Rancher Desktop v1.0 Features Installation and Configuration
- Create Kubernetes Cluster with Rancher and VMware vSphere
- Rancher connect to existing cluster
5. Synology NAS
If you are like me, you didn’t even realize you had the ability to run Docker on your Synology NAS device. However, it is a real thing and you can easily install the Synology Docker app and use this to create and manage your Docker containers on your Synology NAS device. If you are already running a Synology NAS at home, you can use it for Docker. For many, this may be the best docker containers for home server solution.
Below, you can see the Docker app displayed in the Synology Package Center.
Best Docker containers for Home Server FAQs
- What are containers? Containers are self-contained application environments that are small in size, flexible, easily to install, and portable. They provide many benefits over virtual machines in enterprise environments.
- What is Docker? Docker is arguably the dominant leader in production container technology and ran in more data centers than any other container platform. They are the most mature container technology on the market and provide the most capabilities and tools for development and infrastructure.
- What is Kubernetes? Kubernetes is the premiere container orchestration platform used today. It has undoubtedly won the lion’s share of the container orchestration market and is THE technology to use to orchestrate and manage your containerized workloads.
- What is the best Docker containers for home server? This is up to you. There are many options available that allow running containers on a local workstation environment (Docker Desktop, WSL2, and Rancher Desktop). There are also many server technologies that allow running Docker containers and provide feature-rich capabilities. These include Portainer, Rancher, and others.
Hopefully this look at the best Docker containers for home server post will help any get started in working with and using containers if you haven’t already spun up an environment to do so. The five options I presented in the post are by no means the only options out there. They are options I have used personally and have had good success with. If you have other technologies you like to use, please let me and others know in the comments section.