With everyone talking about docker and containers these days, it was due time to check what good things could be done with these (new) technologies.
From previous (very quick) glances at docker, I thought it an interesting option but with limited capabilities for complex deployments (multi-tier, load balancing, auto-scaling ...). I just started last week to do a more serious research on how to overcome this gap.
In my mind, there should be something out there that does for docker what mcollective does for puppet, so provide orchestration capabilities to manage hundreds or thousands of puppet controlled VMs.
And surely, there is. We can discuss about the level of maturity of the different projects, but we are not short of options. Let's have a quick overview to the result of my research so far:
CoreOS provides the foundations for a few of the more high level projects that we will see below. It is an extremely interesting project to follow.
Basically CoreOS is a bare-bones, highly available OS that offers a platform on which to deploy applications on top of software containers.
It provides all the building blocks to build reliable container orchestration and can be deployed on dedicated hardware, AWS, GCE, Vagrant ... so looks like a great starting point for my research.
Very interesting is the OS upgrade process, based on dual partition scheme where upgrade is performed on secondary/passive partition and only activated on reboot with easy roll-backs to a working configuration if things go wrong.
From the different higher level container orchestration platforms I have looked at, Boulder based DEIS seems the most mature (even if very young) and closer to production ready (not there yet, though).
DEIS leverages CoreOS to build a simple enough architecture that includes all the components needed to build your own PaaS. Being CoreOS based, means that it can run anywhere CoreOS does, another very interesting point.
It is a bit rough around the corners and my first attempts to deploy on Vagrant have not been completely successful but it looks a solid project very active on github.
Following suit and with a very similar approach we have Flynn. It is based on CoreOS too, but just uses the etcd component of it along with Google Omega scheduler. for its foundations.
Here you have a very good comparison of DEIS vs Flynn from the Docker people.
Apache Mesos + Marathon
This would be a different beast at a completely different league but an option all the same.
Mesos offers the cluster management capabilities (so would be the CoreOS of the two projects above), while Marathon provides the framework for starting, stopping, and scaling docker applications on top of it.
I am looking for somewhat simpler options, so I left my research on it here.
Even more in their infancy, the next two projects are worth a look all the same.
MaestroNG runs on a stock OS and relies on the Docker daemon running on each host for orchestration (in this sense there is no low level / container specific OS like CoreOS at work here).