From the moment containerization technology was born, Docker has become a leader in this field. However, one voice is getting louder and louder, and it has to do with Docker not being a "container." This sentence is incredible, because Docker has always been synonymous with containerization technology, and people are talking about Docker Container.
So, why do some people say that Docker is not a "container"? How to understand this problem? This article will analyze why Docker is not a "container" from the perspective of technical implementation principles and philosophy.
- Technical Implementation Principle
Docker’s original idea was not containerization, but to encapsulate it based on LXC (Linux Container) and present it with a set of REST APIs Come out and make it easier for application developers to use it. This is the original idea of Docker. Docker technology initially supports single-process programs, which is based on submitting an Image image file. Once the image is submitted, Docker can start one or more containers through the image, and the application process is running in the container.
Compared with traditional virtualization technologies (such as VMWare, Virtual Box), Docker uses process-level isolation, that is, multiple containers on the same host can share the same set of operating system kernels. This can save a lot of resource overhead and easily achieve features such as rapid deployment, quick startup, quick migration, and version management.
In fact, Docker technology has improved and improved the original LXC technology and encapsulated it into a more lightweight and powerful container engine. From this perspective, Docker is not a native container technology, but an encapsulation and enhancement of containers, so some people say that Docker is not a "container".
- Philosophical level
In addition, there is another issue to consider from the philosophical level of Docker. Docker does not really install, configure, run and install "containers". Remove these aspects of management. In Docker, image building, updating, and version control are still managed by developers themselves. This means that Docker has not fully developed a unified mechanism to manage containers and images, which requires more or less manual work.
Moreover, Docker encapsulates the underlying container technology too much, making it too complex and easily confusing for beginners. And it contains too many pitfalls and limitations, which complicates containerization, a method that originally simplifies the process.
From this perspective, especially from the engineering implementation level, Docker cannot be classified as a "container" because it still needs to be improved mechanically.
- Is Docker a container?
Since the answer to the above two points is "no", what are the nature and characteristics of the Docker system? There is no doubt that Docker is a solution for application environment deployment and management, which is closely related to container technology. The benefits of Docker lie in its excellent operational simplicity, efficient sandbox mechanism, convenient image creation and sharing methods, and convenience in deploying containers. What Docker brings to people is a more scientific, faster and more convenient deployment method. Therefore, Docker can be seen as an application environment solution rather than a "container" dry matter.
Summary
This article explains why some people say that Docker is not a "container" from two aspects: Docker technology implementation principle and philosophical level. In fact, Docker is defined as a solution for application environment deployment and management. This does not mean that Docker replaces or does not require container technology, but it shows that Docker technology is based on the enhancement of container technology and better realizes the value of container technology. Although the nature and characteristics of Docker are not containers, the changes brought by Docker are a major leap forward in application environment management, bringing great convenience and flexibility.
The above is the detailed content of Why docker is not a container. For more information, please follow other related articles on the PHP Chinese website!

Docker and Linux are perfect matches because they can simplify the development and deployment of applications. 1) Docker uses Linux's namespaces and cgroups to implement container isolation and resource management. 2) Docker containers are more efficient than virtual machines, have faster startup speeds, and the mirrored hierarchical structure is easy to build and distribute. 3) On Linux, the installation and use of Docker is very simple, with only a few commands. 4) Through DockerCompose, you can easily manage and deploy multi-container applications.

The difference between Docker and Kubernetes is that Docker is a containerized platform suitable for small projects and development environments; Kubernetes is a container orchestration system suitable for large projects and production environments. 1.Docker simplifies application deployment and is suitable for small projects with limited resources. 2. Kubernetes provides automation and scalability capabilities, suitable for large projects that require efficient management.

Use Docker and Kubernetes to build scalable applications. 1) Create container images using Dockerfile, 2) Deployment and Service of Kubernetes through kubectl command, 3) Use HorizontalPodAutoscaler to achieve automatic scaling, thereby building an efficient and scalable application architecture.

The main difference between Docker and Kubernetes is that Docker is used for containerization, while Kubernetes is used for container orchestration. 1.Docker provides a consistent environment to develop, test and deploy applications, and implement isolation and resource limitation through containers. 2. Kubernetes manages containerized applications, provides automated deployment, expansion and management functions, and supports load balancing and automatic scaling. The combination of the two can improve application deployment and management efficiency.

Installing and configuring Docker on Linux requires ensuring that the system is 64-bit and kernel version 3.10 and above, use the command "sudoapt-getupdate" and install it with the command "sudoapt-getupdate" and verify it with "sudoapt-getupdate" and. Docker uses the namespace and control groups of the Linux kernel to achieve container isolation and resource limitation. The image is a read-only template, and the container can be modified. Examples of usage include running an Nginx server and creating images with custom Dockerfiles. common

The reason for using Docker is that it provides an efficient, portable and consistent environment to package, distribute, and run applications. 1) Docker is a containerized platform that allows developers to package applications and their dependencies into lightweight, portable containers. 2) It is based on Linux container technology and joint file system to ensure fast startup and efficient operation. 3) Docker supports multi-stage construction, optimizes image size and deployment speed. 4) Using Docker can simplify development and deployment processes, improve efficiency and ensure consistency across environments.

Docker's application scenarios in actual projects include simplifying deployment, managing multi-container applications and performance optimization. 1.Docker simplifies application deployment, such as using Dockerfile to deploy Node.js applications. 2. DockerCompose manages multi-container applications, such as web and database services in microservice architecture. 3. Performance optimization uses multi-stage construction to reduce the image size and monitor the container status through health checks.

Select Docker in a small project or development environment, and Kubernetes in a large project or production environment. 1.Docker is suitable for rapid iteration and testing, 2. Kubernetes provides powerful container orchestration capabilities, suitable for managing and expanding large applications.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 English version
Recommended: Win version, supports code prompts!

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
