## 7.3 Managing containers by using Kubernetes 

This section provides an introduction to containers, the key points behind containers, and the differences between containers and virtual machines. It also introduces Kubernetes for container orchestration. 

## 7.3.1 Introduction to containers 

Containers represent a major technology shift for infrastructure management and application development. It aims to simplify several application development activities while providing better system resources utilization. Containers are a critical component that are present on modern clouds in such a way that the union of containers with microservices applications is the key component for an organization’s digital success. 

Similarly, the IBM LinuxONE platform is ready to meet the current and future growing container requirements. When LinuxONE is used as the platform for hosting your cloud services, it achieves excellent and unmatched scalability numbers when compared to x86 alternatives. Because of these reasons, the use of a container-based infrastructure also helps to reduce costs by improving the overall infrastructure consolidation process, making infrastructure management easier, and speeding up applications to market. 

Conceptually, a container image  encapsulates that required runtime components of an application, such as libraries, frameworks, and configuration files, along with the application binaries and code. By doing so, it instantiates much smaller and self-capable containers that can be scaled up on a single host, or scaled out across multiple systems. Because of these factors, containers become the de facto infrastructure of choice for building and deploying microservice applications. 

## Images and containers 

A container image is a collection of immutable layers that together contain all packaged components that are required to run an application. An image can be shared across multiple functional teams by using public or private registries. They also can be easily maintained and updated to different needs. An image primarily consists of the following components: 

GLYPH<SM590000> An application 

GLYPH<SM590000> Its dependencies, libraries, and other binary files 

GLYPH<SM590000> Configuration files that are needed to run it 

After an image is created and is ready to be distributed, it is then instantiated  on what are called containers. That is, while an image is a static representation of an application, a container represents a running instance of such image. This method ensures application consistency across various environments in such a way that the roll-out time from development to production is greatly enhanced. Similarly, it also dramatically reduces human errors during the application configuration, deployment, and implementation steps. 

The practice of creating and distributing container images and running containers from them is also referred as containerization . 

