The docker image contains the programs, libraries, resources, configuration and other files required to provide the container runtime, as well as some configuration parameters prepared for the runtime; the image is a special file system and does not contain any dynamic Data, the contents of which will not be changed after construction.
The operating environment of this tutorial: linux7.3 system, docker version 19.03, Dell G3 computer.
First understand what an image is:
We all know that the operating system is divided into kernel and user space. For Linux, after the kernel is started, the root file system will be mounted to provide user space support. The Docker image (Image) is equivalent to a root file system. For example, the official image ubuntu:18.04 contains a complete set of root file systems for the Ubuntu 18.04 minimal system.
Docker image is a special file system. In addition to providing the programs, libraries, resources, configuration and other files required for container runtime, it also contains some configuration parameters prepared for runtime (such as anonymous volumes). , environment variables, users, etc.). The image does not contain any dynamic data, and its content will not be changed after it is built.
Hiered Storage
Because the image contains the complete root file system of the operating system, its volume is often huge. Therefore, when designing Docker, it makes full use of the technology , designed as a hierarchical storage architecture. So strictly speaking, an image is not a packaged file like an ISO. An image is just a virtual concept. Its actual manifestation is not composed of a file, but a set of file systems, or in other words, a combination of multi-layer file systems. composition.
When the image is built, it will be built layer by layer, with the previous layer being the basis of the next layer. After each layer is constructed, it will not change again. Any changes on the subsequent layer only occur on its own layer. For example, the operation of deleting a file at the previous level does not actually delete the file at the previous level, but only marks the file as deleted at the current level. When the final container is run, although this file will not be seen, in fact, the file will always follow the image. Therefore, when building an image, you need to be extra careful. Each layer should only contain what needs to be added to the layer. Any extra things should be cleaned up before the construction of the layer is completed.
The characteristics of tiered storage also make it easier to reuse and customize images. You can even use the previously built image as the base layer, and then further add new layers to customize what you need and build a new image.
Extended knowledge:
You can understand the image as a class (Class).
First, you need to pull the image from the image warehouse service. A common image repository service is Docker Hub, but other image repository services also exist.
The pull operation will download the image to the local Docker host, and you can use the image to start one or more containers.
The image is composed of multiple layers. After each layer is superimposed, it looks like an independent object from the outside. Inside the image is a streamlined operating system (OS), which also contains files and dependency packages necessary for application running.
Because containers are designed to be fast and compact, images are usually smaller.
I mentioned many times before that an image is like a container (class) that stops running. In fact, you can stop a container and create a new image from it.
Under this premise, the image can be understood as a build-time structure, and the container can be understood as a run-time structure, as shown in the figure below.
Recommended learning: "docker video tutorial"
The above is the detailed content of What is included in the docker image. For more information, please follow other related articles on the PHP Chinese website!