If you explain container, Docker, Kubernetes in an easy-to-understand manner even for beginners, it will be like this



Container technologies such as Docker and Kubernetes are used in many systems, but it is difficult for beginners to get an overview. Backblaze, which operates a cloud storage service, summarizes the outline of such container technology in an easy-to-understand manner.

What Are Containers?
https://www.backblaze.com/blog/what-are-containers/

·table of contents
◆ What is a container?
◆ What is the difference between a container and a virtual machine?
◆ What are the benefits of containers?
◆ What is the purpose of the container?
◆ What is Docker?
◆ What is Kubernetes?

◆ What is a container?
In the world of logistics, 'containers' standardize shapes and sizes, and carry goods in the same way in 'different environments' such as ships, trains, trucks, etc. manufactured by different manufacturers, and ports around the world. It is designed to be stored. 'Container' in software development also refers to a mechanism that enables similar operation to be realized even in 'environments with different OS, hardware configuration, and software configuration'.

In a past interview , former Docker CEO Ben Golub said of Docker's development motives: 'It's easier to transport a car to the other side of the world than to move an application from one server to another.' The facts seemed like a problem to solve, 'he said, revealing that he developed Docker with inspiration from real-world logistics. Also, the Docker logo below contains a picture of a real-world container, indicating that containers in software development and real-world containers have similar purposes.



In fact, when moving an 'application developed on a laptop' to a 'test server' before the spread of container technology, the 'programming language version', 'execution permission', and 'database used' on the laptop and server It was necessary to prepare the environment necessary for executing the application such as '. However, container technology has made it possible to combine 'applications' and 'environments required for execution', making it easier to run applications on different machines.

◆ What is the difference between a container and a virtual machine?
As a mechanism to achieve the same operation in different environments, there is also a ' virtual machine ' that builds a virtual computer that imitates a physical computer in the system. However, since the virtual machine contains 'OS' and 'a copy that virtually reproduces the necessary hardware', 'the file size is large', 'a lot of system resources are required for execution', and 'time to start'. Problems such as 'it takes' can occur. Also, since each virtual machine runs the OS and virtual hardware, booting multiple virtual machines consumes a considerable amount of system resources.



On the other hand, since the OS of the system is used as it is in the container, it has features such as 'the file size can be kept small', 'the system resources required for execution are small', and 'booting is fast'. In addition, since it is executed based on the OS of the system, it is difficult for the load on the system to increase even if multiple containers are executed. However, since the container runs based on the OS of the system, it is not suitable for the purpose of 'I want to use a different type of OS'.



◆ What are the benefits of containers?
Backblaze summarizes the benefits of containers based on the above container characteristics as follows.

1: Portability can be ensured
The container contains all the dependencies needed to run an application, such as 'another application' or 'data'. Therefore, errors and bugs when moving applications between environments are reduced, and it is possible to move applications easily as long as the appropriate OS is prepared.

2: The file size is small
Since the container does not contain an OS, the file size is smaller than that of a virtual machine. for that reason. A single machine or server can support many containers.

3: Fast startup
Since the file size is smaller than the virtual machine and the system OS can be shared, the container can be started in a few seconds. On the other hand, it sometimes takes a few minutes to start a virtual machine.

4: Resources can be used efficiently
By launching multiple containers on one system, you can efficiently use system resources.

5: Separation of environment
By using a container, the execution environment can be separated not only for each application but also for each part of the application. This ensures that one part is overloaded without affecting other applications.



◆ What is the purpose of the container?
Containers with various merits can be used for many purposes. Backblaze emphasizes the convenience of containers by citing the following four uses.

1: Divide the elements of the service
Prior to the advent of containers, applications were built as an all-in-one unit with all the elements together. However, the advent of containers has made it easier to implement a technique called 'microservices architecture' that divides services. For example, when building an online shop service, it is possible to build a service by developing elements such as a 'search bar' and 'shopping cart' separately, providing them as containers, and linking the containers together.

2: Adopt the latest development method
In recent years, new development methods such as 'DevOps ', in which development staff and operation staff work closely together, and 'Agile development ', in which design, implementation, and testing are repeated in a short period of time, are gaining popularity. Backblaze argues that these development methods have become widespread as containers can be used to separate and develop each element.

3: Adoption of hybrid cloud and multi-cloud
By using containers, it is possible to run applications in different environments. This makes it possible to effectively utilize hybrid clouds and multi-clouds built by multiple cloud services in different environments.

4: Smooth transition to the latest environment
The container's feature of being able to run applications in different environments facilitates the transition to the latest environment.



◆ What is Docker?
Container technology is supported on Linux by interfaces called 'LXC ' and ' LXD'. The Docker project was launched in 2013 as a project to build LXC containers. Starting with Docker 0.9 released in 2014, it is possible to build containers without relying on LXC. After that, Docker became popular as a utility that can efficiently create and execute containers, and became the de facto global standard in application development.



◆ What is Kubernetes?
Kubernetes is a platform for managing containers that

can automate container deployment / deployment and load balancing (scaling). Kubernetes is open source software developed based on the container manager ' Borg ' developed by Google, and is managed by the Cloud Native Computing Foundation at the time of writing the article.

Kubernetes users can leave container deployment and scaling to Kubernetes by describing how to manage the container in a YAML file. Kubernetes' official website says about its container management capabilities: 'Kubernetes has increased the number of operations teams because it's designed to follow the same principles that allow Google to run billions of containers a week. You can scale up without having to do it. '

In addition, the following article summarizes the outline of Kubernetes in an easy-to-understand manner even for beginners.

If you explain the container management platform 'Kubernetes' in an easy-to-understand manner even for beginners, it will be like this --GIGAZINE

in Software, Posted by log1o_hf