Containers
In my homelab, I rely heavily on containerisation to manage and deploy my applications. This approach allows me to run multiple services in isolated environments, ensuring that they do not interfere with each other. Below are the key tools I use for containerisation and orchestration.

Kubernetes
Kubernetes is the backbone of my container orchestration. It automates the deployment, scaling, and management of containerised applications, making it easier to maintain and scale my homelab services. I use K3s, a lightweight version of Kubernetes, to run my clusters efficiently on resource-constrained devices. I run two instances, one for internal services and one for external services.

Docker
Docker is the primary tool I use for building and running containers. It allows me to package applications and their dependencies into a single container image, which can be easily deployed across different environments. Docker simplifies the development and deployment process, ensuring consistency and reliability in my homelab. While I primarily use Kubernetes, I of course use Docker for building the images that I deploy to my clusters. I do have some VMs that run Docker for specific applications that do not require Kubernetes or where I want the separation.