In the previous section, we looked at running applications that have been packaged inside a Docker container. As the number of application components and scale grows, it becomes harder to manage the overall application's deployment and management, while ensuring availability, by just using the Docker commands. This creates a need for a controller that can do all the heavy lifting of running and managing containers for our application and ensuring that our application deployment remains healthy and available. These controllers sit on top of the Docker engine and orchestrate all the Docker operations based on our application requirements. In this scenario, as DevOps personnel, we only talk to the orchestrator, whereas Docker stays in the background.
There are many container orchestrators, such as the following:
- Kubernetes
- Docker Swarm
- Mesosphere
- DC/OS ...