Chapter 9. Container orchestration: managing multiple Docker containers

 

This chapter covers

  • Managing Docker containers on a single host
  • Deploying containers to multiple hosts
  • Retrieving information about where containers have been deployed

The technology Docker is built on has existed for a while in different forms, but Docker is the solution that’s managed to grab the interest of the technology industry. This puts Docker in an enviable position—the mindshare did the initial job of kickstarting an ecosystem of tools, which became a self-perpetuating cycle of people being drawn into the ecosystem and contributing back to it.

This is particularly evident when it comes to orchestration. After seeing a list of company names with offerings in this space, you’d be forgiven for thinking that everyone has their own opinion on how to do things and has developed their own tool.

Although the ecosystem is a huge strength of Docker (which is why we’ve been drawing from it so much in this book), the sheer quantity of possible orchestration tools can be overwhelming to novices and veterans alike. This chapter will take you on a tour through some of the most notable tools available and give you a feel for the high-level offerings so you’re better informed when it comes to evaluating what you want a framework to do for you.

There are many ways of arranging family trees of the orchestration tools. Figure 9.1 shows some of the tools we’re familiar with.

9.1. Simple single-host Docker

Technique 75 Managing your host’s containers with systemd

Technique 76 Orchestrating your host’s containers with systemd

9.2. Multi-host Docker

Technique 77 Manual multi-host Docker with Helios

Technique 78 A seamless Docker cluster with Swarm

Technique 79 Using a Kubernetes cluster

Technique 80 Building a framework on Mesos

Technique 81 Micromanaging Mesos with Marathon

9.3. Service discovery: what have we here?

Technique 82 Using Consul to discover services

Technique 83 Automatic service registration with Registrator

9.4. Summary