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

He Made $64K Searching GitHub With A GENIUS Trick (using open source only) This issue is brought to you by: TestSprite is the Easiest AI Agent for Software Testing Ensure End-to-End Confidence in Your Software Quality. LEARN MORE This, is the story of how one individual, "Mr. B," leveraged a deep understanding of Git's less-explored features to uncover secrets in public repositories, earning over $64,000 💰. His "genius trick" wasn't about finding new tools, but about using existing Git...

Google's Git Killer Is INSANELY Better (and it's open source) You saw the title. Bold claim, right? "Insanely better"? Than Git? Git is the foundation of modern software development. It started back around 20 years ago, when Linus tried to build his first Linux kernel, and had enough of SVN. So Linus being Linus, he just went ahead and built his own. But what if the way we've always done version control isn't the only way, or even the best way anymore? That's the core idea behind Jujutsu (jj)...

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....