You Need To Learn Docker Swarm!


You Need To Learn Docker Swarm!

Ever felt like you're overcomplicating your container deployments?

You might be.

Today, we're diving into a Docker orchestrator that's likely already on your machine (run `docker service` for a second will ya?), but you're probably overlooking: Docker Swarm.

The Underdog Orchestrator

For years (for me, the past 11 years to be exact), the path has seemed to be either simple Docker Compose or the more, WAY MORE complex, Kubernetes.

Compose is great for local development but falls short when scaling, especially when you have more than one machine, and production system doesn't? Heck, I don't know of one serious home lab running one node.

Kubernetes, while powerful, can be overkill for smaller projects.

But what if there was a middle ground?

I remember asking my mentor years ago about the best container deployment options.

He told me, and I quote:

"People tend to develop emotions to technology... but remember: there's no best, there's better, there's worse, sure, but the most important rule is using the right tool for the task at hand."

This stuck with me and led me to explore alternatives whenever possible, regardless of what common wisdom says. In a way, it's the tech version of "question everything".

Docker Swarm offers a sweet spot.

It's incredibly easy to use, lets you scale, load balance applications, self-heal, manage secrets, collect logs, and much more.

It's perfect for local use, home labs, and even production systems that require a few simple nodes and a straightforward deployment.

Plus, it's fully compatible with your existing Compose files!

Solving the Orchestration Problem

Scaling and managing containerized applications can be a headache, especially when running local home lab, or small scale production deployments.

Most people jump straight to Kubernetes, even for smaller projects.

If you pick a K8s SaaS, like AWS's, Google or Azure, you're going to not only pay for the pleasure of having a managed control plane, you'd have to hone the skills of Kubernetes which cannot, and should not be taken lightly.

Docker Swarm offers a simpler, lightweight solution for many use cases.

If you have you compose file ready, Docker Stack will cover all the requirements you have.

If you don't, I bet that with zero knowledge, you'll have your containers running in a remote cluster in a matter of a couple of hours.

Getting Started with Swarm

Setting up a Swarm cluster is surprisingly easy.

Locally, I'm using Lima VM to self-host machines.

You'll need a manager node (the leader) and worker nodes. Swarm makes cluster setup incredibly easy, mostly through its CLI.

To initialize a swarm cluster, use the following command:

docker swarm init --advertise-addr

This command will return a command to join worker nodes to the swarm.

To add worker nodes to the swarm, use the command returned by the init command on the manager node.

Once the cluster is set up, you can create services.

A service in Swarm is a containerized application deployed and managed within the cluster.

This enables automated scaling, load balancing, and fault tolerance.

To create a simple service with 2 replicas that runs an Alpine linux box pinging docker.com:

docker service create --replicas 2 --name my-app alpine ping docker.com

You can scale the service using:

docker service scale my-app=5

This command scales "my-app" to five replicas. Swarm takes care of the rest.

Swarm also has rolling updates. If you create a service that uses an older image, you can update it using:

docker service update --image


Putting it into Action

Think of Docker Swarm as the "Goldilocks" of container orchestration – not too simple, not too complex, but just right for many situations.

Next time you're starting a new project, consider whether Swarm might be a better fit than jumping straight to Kubernetes.

You might be surprised at how much easier it makes your life.


Thank you for reading.
Feel free to reply directly with any question or feedback.
Have a great weekend!

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

How I Setup Terminal On My Mac To Make It Amazing I often get asked about my "terminal setup", and I try to throw tips but it's never enough. This answer took a long time to compile but I'm glad to share it: A terminal setup from scratch (literal white screen terminal) to multiplexing, color output, auto-completion, history manager, fonts, nerd fonts etc etc etc... I learned that the journey to a “perfect” terminal setup is a personal one, built from years of small, incremental improvements....

The Unreasonable Effectiveness of 12-Factor Apps This issue is brought to you by: Twingate: It's time to ditch your VPN. Keep private resources and internet traffic protected with Zero Trust security tools built for the modern world of work. Start securing your Kubernetes clusters today! The title of this newsletter isn’t just fluff; it points to a fundamental truth in software development. Often, the most expensive problems stem from ignoring a few simple, foundational rules. The...

Custom computer build with blue led lighting

FFmpeg Converts ANYTHING - The Trick Book I Wish I Had This issue is brought to you by: Learn backend development the smart way with boot.dev Use the code DEVOPSTOOLBOX to get 25% off your first payment for boot.dev. Get Started Today The title of this newsletter isn't an exaggeration. There's a single, free tool that can genuinely convert, create, and manipulate almost any media file you throw at it. It’s the hidden engine powering everything from YouTube, through OBS, online media...