As a Network Engineer, there's already a dizzying array of topics and technologies to master—think routing, switching, firewalls, SD-WAN, VXLAN, and the list goes on. And that's just the network-specific technologies. Once you throw in automation tools like Ansible and Terraform, the educational landscape turns into a seemingly endless ocean of possibilities.
For years, Docker remained on my "to-learn" list. I always thought of it as a tool more suited for developers, building web apps or microservices. Most tutorials I came across were geared towards this perspective, which made Docker seem somewhat irrelevant to my networking world. So I procrastinated, focusing on what I thought were more immediate concerns for my role.
Fast forward to the present day. I finally bit the bullet and decided to invest some serious time in learning Docker from the ground up. And let me tell you, I'm kicking myself for not doing it sooner. Not only has it changed how I think about application deployment, but it has revolutionized my approach to running everyday tools and services like PiHole, UniFi Controller, Uptime Kuma and web servers.
The transformation has been nothing short of eye-opening, and it's made me wonder how much more effective I could have been had I adopted Docker earlier.
Let's say you've recently invested in some UniFi networking gear, be it an access point, a switch, or both. To make the most out of these devices, you'll need a UniFi Controller. You have a few options here: a cloud-managed controller that requires a monthly subscription, a local controller, or you could even install it on your Windows laptop.
Traditionally, I would go for the laptop option, but that approach has its challenges. From dealing with Java dependencies to keeping my laptop running 24/7, it can be more trouble than it's worth.
With Docker, you can simply spin up a UniFi Controller container on a low-power device like a Raspberry Pi. The beauty of Docker is that you can run multiple applications on the same Raspberry Pi without worrying about conflicting dependencies or system requirements. All of this, without the need for monthly subscriptions or a machine that needs to be on at all times.
In essence, with just one command, your UniFi Controller will be up and running, saving you from a tedious or costly setup. But wait, there's more! Let's say you also want to monitor the uptime of your network applications. With another single command, you can deploy an instance of "Uptime Kuma" right alongside your UniFi Controller.
Docker is really helpful for network-related applications too. Want a monitoring system like LibreNMS? You can set it up easily with Docker. The same goes for a Radius Server or a DHCP server. Instead of setting up a new Linux VM for each job, you can run all these on one VM using Docker. This makes things simpler and saves time. Docker lets you do a lot with a little, which is great for anyone working in Networking.
If you're keen on diving into Docker, I highly recommend the book Docker Deep Dive by Nigel Poulton. It's a great starting point, especially if you're new to the subject. But hey, if you're someone who prefers watching over reading, there are plenty of videos available on YouTube that do a fantastic job of teaching Docker basics and beyond.