The rise of containers has changed the way programmers think about developing, deploying and maintaining software applications. Using the capabilities of native isolation of modern operatingsystems, containers support a separation of concerns similar to virtual machines, but without consuming too many resources and greater deployment flexibility compared with virtual machines.
Containers are so lightweight and flexible that they have spawned new application architectures. This new approach consists of packaging the different services that make up an application in separate containers and then deploying those containers across a cluster of physical or virtual machines.
Read: How to solve Docker error: no space left on device
But today the applications are complex and as a general rule it is not enough to deploy a single container in production, except in the simplest cases. The usual thing is to need several, which also must scale differently along with other complexities. For example, a container for the Front-End, one or more for the services interface, another for the database … Not to mention if you use microservices …
All this gives rise to the need for container orchestration , that is, to have a tool or system that automates the deployment, management, scaling, interconnection and availability of our container-based applications.
A container orchestrator deals with things like:
- Automatic configuration
- Automatic deployment and “lift” of container-based services
- Load balancing
- Container auto-scaling and auto-restart
- Control of the “health” of each container
- Data exchange and networking
- Maintenance of “secret” parameters and settings
As the Docker container ecosystem continues to grow, in this article we are going to review the most important and well-known orchestrators and planners .
Read: How to Use and Connect MariaDB GUI and Command Line Clients
1. Kubernetes
Kubernetes is in fact the most popular container orchestration engine on the market. It started out as a Google project and is used by thousands of developer teams to deploy containers into production. Google claims that it runs billions of containers using Kubernetes every week.
The tool works by grouping containers that make up an application into logical units for easy management and discovery.
2. Amazon ECS
The AWS service for container orchestration, Amazon ECS, is a highly scalable management system that enables developers to run containerized applications on EC2 instances. It is made up of many built-in components that allow easy planning and deployment of Docker clusters, tasks and services.
Although, as a main disadvantage, there is no support for running containers outside of EC2, the pros include advantages of the AWS service such as CloudTrail, CloudWatch, Elastic Load Balancing, etc.
Read: How to Pass Environment Variables to Docker Containers
3. Azure Container Service (AKS)
Relatively recently, the ACS brand name was changed to AKS. The Azure service is open source and optimized for use in Azure virtual machines, called Azure Virtual Machines . It provides the necessary tools to create, configure and manage the open Docker container infrastructure. AKS offers simplified container-based application development and deployment with support for Kubernetes, Mesosphere DC / OS, or Swarm for orchestration.
Scale and orchestrate using the application management tools of your choice and connect via standard API access points.
4. Docker Swarm
Swarm is Docker’s solution to developers’ problems when orchestrating and scheduling containers across many servers. Swarm has been bundled with the Docker engine since version 1.12.0, and offers many advanced built-in features such as service discovery, load balancing, scaling and security.
Read: How to run and manage a Docker container on Linux Ubuntu/Debian
Swarm follows the Docker philosophy of focusing on simplicity and the developer experience. It’s arguably easier to use than Kubernetes, but not as powerful and not as widely adopted by businesses, cloud providers or the community.
5. HashiCorp Nomad
Supported by Linux, Mac, and Windows, Nomad is a single binary tool capable of scheduling all virtualized, containerized, or standalone applications. Nomad gives you the ability to run, if you wanted, 1 million containers across 5,000 hosts in a matter of minutes. Nomad helps improve density while reducing costs, as it is able to efficiently distribute more applications on fewer servers.
6. Mesosphere DC / OS
The Mesosphere Datacenter Operating System (DC / OS) is an open source, integrated platform for data and containers built on the Apache Mesos distributed system kernel. It is designed to manage multiple machines within a data center as one or more clusters, either in the cloud or using software on local servers. DC/OS can deploy containers and manage both stateless applications and stateful protocols in the same environment.
It is capable of working with Docker Swarm and Kubernetes.
7. Google Container Engine (GKE)
Mounted on Kubernetes (in fact its official name is Google Kubernetes Engine , GKE), it allows to deploy, manage and scale container applications in the Google cloud. GKE’s goal is to optimize development productivity by improving the management of container-based workloads. Hide both simple and complex management tasks behind command line tools, using transparent and easy-to-use interfaces.
Obviously, Kubernetes is the backbone of GKE. Although it is not strictly necessary to master Kubernetes to use GKE, it will help you a lot if you at least know its basic fundamentals.
8. Helios
Helios started out as Spotify’s in-house tool to ensure hundreds of microservices were running efficiently across thousands of servers. It is capable of deploying and managing containers at scale and comes equipped with an HTTP-based API and a command line client.
Helios does not need a specific network topology; it only requires a ZooKeeper cluster and a JVM on the servers where the tool will run. It is available as an open source project.
9. Marathon
Marathon is a private, production-level platform as a service (PaaS) built on Apache Mesos. The Marathon framework scales Docker applications and expands them to more nodes when needed, to increase available resources and scale. It can also act as a container orchestration tool to facilitate container failure recovery. Marathon automatically manages hardware or software failures and ensures that the application is always active.
If you like the content, we would appreciate your support by buying us a coffee. Thank you so much for your visit and support.