Kubernetes. Mesos. Marathon. Centurion. If you're a newcomer to Docker containers, these names probably sound like terms from a classical history book. But they're actually container orchestration platforms. And they're only a few of them. Confused? Here's what you need to know about container orchestration.
To understand container orchestration, you first need to understand containers, of course. Today, when people talk about containers, they're referring to virtualized apps that use the LXC layer in the Linux kernel to abstract code from the underlying system.
On their own, containers only let you run individual apps. That doesn't make them very useful. If you just want to run a few apps you can do it more easily without containers.
But if you have a large number of apps to run -- as you likely do if you have migrated to the cloud -- containers come in handy. They make it easy to turn apps on and off to meet fluctuating demand. They also let you move apps seamlessly between different servers.
Unless you're super-human, though, you can't move container apps around very efficiently on your own. You need a management platform that will automatically spin containers up, suspend them or shut them down when needed -- and, ideally, also control how they access resources like the network and data storage.
That's where orchestration platforms come in. They provide this piece of the container puzzle.
The container ecosystem is basically open source. Open source programmers like choice. So it's no surprise that there are now dozens of orchestration platforms that can handle containers.
Discussing all of them here would make for a very long read. So we'll outline just the top orchestration platforms:
- Kubernetes: Descended from a platform (Borg) that Google developed to manage its infrastructure, Kubernetes is well suited for very large cloud environments. It's complex and sophisticated, which is great if you have a large datacenter -- but overkill if you only need to manage a few hundred containers.
- Swarm: This is Docker's home-grown orchestration platform. Docker claims it's faster than the competition, but results will probably vary depending on how big your environment actually is. If you build your container infrastructure using other Docker components, though, it probably makes sense to use Swarm, too.
- Mesos: Hosted by Apache, Mesos is designed for general datacenter management, not just containers. But it supports them, too. It's an obvious orchestration choice if you are building a cloud that hosts not just containerized apps but also other virtual or bare-metal servers.
- Kontena: A new, up-and-coming (so we believe) orchestration tool that promises to "maximize developer happiness." It's designed for ease-of-use, making it a good option for admins new to the container game.
Again, we could go on. But we think these are the essentials. If your favorite container orchestration tool is not listed here, feel free to let us know why you think it should be.