What is a container?
A container, often called an application container, is a portable unit of software that typically provides a microservice and operates in an environment with other containers. It may use resources from a host, but it usually operates independent of the host operating system and can be used on any platform.
An application container is not the same as an operating system container, which is a virtual environment that shares the host OS kernel but provides user space isolation and can deliver higher server density, better application performance, and faster server provisioning compared with a hypervisor-based virtual machine.
What problems do containers solve?
An application is usually built to function in a single kind of computing environment, which makes it difficult to move or deploy it to another environment. This is a limitation for developer and IT operations teams alike.
Containers remove these dependencies so developers can build applications that function reliably when IT operations teams move them from one computing environment to another. They further solve this problem through the microservices approach to application development.
What are microservices?
Microservices are small pieces of software with simple functionalities for directing narrowly defined tasks, such as opening or updating a file. Applications built with microservices as their building blocks are better able to scale, and are more adaptable and easier to manage.
How does container orchestration work?
Container orchestration uses configuration files, usually in YAML or JSON format, for each container to instruct the orchestration tool on finding resources, establishing a network, and storing logs.
When deploying a new container, the orchestration tool automatically schedules the deployment to a cluster and finds the right host, taking into account any defined requirements or restrictions.
The orchestration tool then manages the container's lifecycle based on specifications in the configuration file. The orchestration tool will also use system parameters like CPU and memory capacity, and file parameters like proximity and file metadata, to help inform its decisions.
To support scaling and help maintain productivity, orchestration tools automate many of these tasks. Repeatable patterns in Kubernetes are used as building blocks by developers to create complete systems.
How do enterprises manage container orchestration?
Container orchestration is mainly performed with tools based on open-source platforms such as Kubernetes and Apache Mesos. Docker is one of the most well-known tools, available as a free version or as part of a paid enterprise solution.
Container orchestration as a service using Kubernetes is also available from many ISPs and cloud platforms, such as Google Cloud, Amazon Web Services, and Microsoft Azure.