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

LimaVM Is Probably The Best MacOS Virtual Machine I've Ever Used If you're tired of Docker Desktop bogging down your machine, or simply don't like fuff of mapping ports, mounting volumes when all you need is a small virtual environment, this one's for you. I recently discovered LimaVM, and it's a game-changer for local development. It lets you spin up Linux VMs with ease, offering a faster, lighter alternative to Docker and other VM managers for many tasks, but especially for development....

Coding Is Changing. Here's How I Stay AHEAD This issue is brought to you by: Ideas to apps in seconds with Lovable Lovable is your superhuman full stack engineer. Click here for double credits when signing up The AI revolution isn't replacing engineers (IMHO) - it's changing how they work and which skills matter most. I mean, look at the sponsor of this week, a "vibe coding" platform that creates your idea in no time. But, does it actually matter for developers / devops and other tech...

Edit Faster: Vim Motions From Scratch Ever watched a developer frantically switching between keyboard and mouse? "Click, type, click, type..." It's like watching someone crawl when they could just walk. If you're tired of granny mode coding and want to boost your productivity, Vim motions might be exactly what you need. Every once in a while, I review my processes, trying to improve systems, tools, and yes, motions. This time I thought, why not share the basics with everyone too? These...