Docker 1.12 — A Swarm In A Teacup
Docker 1.12 integrated Swarm directly into the Docker engine. We can now create a Docker Swarm cluster in just two commands:
- docker swarm init
- docker swarm join — token <some_token> <ip_address>:<port>
With these two commands we have made magic happen!
- We get a deployment platform which gives us resilience, robustness, failover and fault tolerance for our containers.
- We get load balancing and a routing mesh which makes service discovery simple.
- We can use our server resources more efficiently with various allocation strategies.
- We can scale containers up and down with one command.
- Communications within the cluster are secured with dynamically rotating certificates.
And all of this with no additional software to install or administer, and no key value stores to make this happen!
I have deployed every orchestration platform our there, and believe us when we say that this simplicity of this is a complete game changer in standing up and managing a container orchestration platform.
I point this out because this week, there has been some noise and blog posts about the stability of the 1.12 Docker Swarm.
My read is that integrating Swarm into the Docker 1.12 engine was an ambitious project. Container orchestration is a very complicated distributed computing problem. Delivering the platform and then merging it into the engine must have been a fiendishly complicated exercise.
Of course we would ideally like perfect bug free software the first time around, but in the real world, let’s be pragmatic if some edge cases issues occur on the initial release with something as ambitious and complex as this. One of the most visible complaints this week for instance was based on running on Raspberry Pi. This definitely qualifies as a niche use case.
In addition, traditional Docker Swarm still exists and there is no publicly stated aim to deprecate it so it is probably still the go-to way of deploying Swarm in production. No regression was introduced. This is a new, optional feature which I think will always remain clearly separated from the underlying Docker engine. If anything could have been improved, perhaps that could have been communicated better.
In short, Docker Swarm is a hugely ambitious piece of software which moves container orchestration on leaps and bounds. A few launch bugs on edge case platforms shouldn’t cloud that.