Docker engine is the core software used to run and manage containers. Its main components are: Docker Client, Docker daemon, containerd and runc.
The operating environment of this tutorial: linux5.9.8 system, docker-1.13.1 version, Dell G3 computer.
1. Introduction to Docker engine
Docker engine is the core software used to run and manage containers
Docker engine is powered by Many specialized tools work together to create and run containers, such as APIs, execution drivers, runtimes, shim processes, etc.
- The main components of the Docker engine are: Docker Client, Docker daemon, containerd and runc.
2. Detailed explanation of Docker engine
- When Docker was first released, it consisted of two core components: LXC and Docker daemon.
- Docker daemon is a single binary file that contains things such as Docker client, Docker API, container runtime, image building, etc.
- LXC provides the ability to operate basic tools such as namespaces and control groups (CGroup), which are container virtualization technologies based on the Linux kernel. In Docker version 0.9, Libcontainer replaces LXC as the default execution driver.
2.1. Docker daemon
- The integrity of Docker daemon brings more and more problems:
- Difficulty to change
- Running slower and slower
- This is not what the ecological company expected
- daemon uses a CRUD style API through gRPC and containerd Communication
2.2. runc
- runc is essentially a lightweight command line interactive tool packaged for Libcontainer.
- Runc function: Create container
2.3. containerd
- Main function: Container life cycle management –start|stop |pause|rm…
2.4. shim
- shim is an indispensable tool for implementing daemon-less containers. Runc creates new ones every time Containers will fork a new runc instance. Once the container is created, the corresponding runc process will exit.
- Once the parent process runc exits, the associated container-shim process becomes the container's parent process
- Part of the shim's responsibilities:
- Keep all STDIN and STDOUT streams Open state, so that when the daemon is restarted, the container will not terminate due to the closing of the pipe.
- Feed back the exit status of the container to the daemon.
2.5. Implementation on Linux
- dockerd(Docker daemon), docker-containerd(containerd), Both docker-containerd-shim(shim) and docker-runc(runc) are implemented as separate binaries.
2.6. The role of daemon
- Main functions: image management, image construction, REST API, authentication, security, core network and orchestration .
Recommended learning: "docker video tutorial"
The above is the detailed content of what is docker engine. For more information, please follow other related articles on the PHP Chinese website!