Docker image management of docker

Keywords: Docker

I. image structure and principle

1.1 Docker image principle

  • Image is the template for creating containers, which contains the file system and contents required to start containers. Therefore, image is mainly used to create and start containers conveniently and quickly.
  • The Docker image adopts a layered construction mechanism. The bottom layer is bootfs, followed by rootfs.
    • bootfs is the file system used for system boot, including bootloader and kernel. After the container is started, it will be unloaded to save memory resources.
    • Rootfs is on top of bootfs and is represented as the root file system of the docker container. In docker, rootfs is mounted in read-only mode by the kernel, and then an additional writable layer is mounted through joint mounting technology.
  • Joint mount technology can mount several layers of directories together to form a virtual file system. The virtual file system structure is just like the directory structure of ordinary linux. The image provides a linux virtual environment through these files and the kernel of the host. Each layer of file system is called layer 1. The federated file system can set three permissions for each layer of file system, read only, read write and whiteout able. However, each layer of file system in the image is read-only. When constructing an image, we start with the most basic operating system. Each operation submitted by the construction is equivalent to making a layer of modification. A layer of file system is added and stacked up layer by layer. The modification of the upper layer will cover the visibility of the lower position. When using an image, we will only see a complete whole without knowing how many layers there are.

1.2 Docker image structure

II. Search image

Click to view the code
root@ubuntu:~# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15725     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con...   2088                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of...   818                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho...   266                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS...   159                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp...   142                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        142                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou...   110                  [OK]
jasonrivers/nginx-rtmp            Docker images to host RTMP streams using NGI...   95                   [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co...   76                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al...   59                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo...   55                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  54                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo...   25                   [OK]
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con...   23                   
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN...   21                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra...   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building ...   15                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n...   13                   
raulr/nginx-wordpress             Nginx front-end for the official wordpress:f...   13                   [OK]
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a...   7                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          2                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]

III. Download Image

root@ubuntu:~# docker pull warehouse server: port / project name / image name: tag
root@ubuntu:~# docker pull nginx

IV. view local image

root@ubuntu:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
nginx         latest    87a94228f133   2 weeks ago   133MB
hello-world   latest    feb5d9fea6a5   5 weeks ago   13.3kB

V. image export

root@ubuntu:~# docker save nginx -o /opt/nginx.tar.gz
root@ubuntu:~# ls -l /opt/nginx.tar.gz 
-rw------- 1 root root 137544192 Oct 29 17:48 /opt/nginx.tar.gz

Vi. image import

root@ubuntu:~# docker load < /opt/nginx.tar.gz 
e81bff2725db: Loading layer [==================================================>]  72.52MB/72.52MB
43f4e41372e4: Loading layer [==================================================>]  64.97MB/64.97MB
788e89a4d186: Loading layer [==================================================>]  3.072kB/3.072kB
f8e880dfc4ef: Loading layer [==================================================>]  4.096kB/4.096kB
f7e00b807643: Loading layer [==================================================>]  3.584kB/3.584kB
9959a332cf6e: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest

VII. Image renaming

root@ubuntu:~# docker tag nginx test_nginx:v1.0
root@ubuntu:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
nginx         latest    87a94228f133   2 weeks ago   133MB
test_nginx    v1.0      87a94228f133   2 weeks ago   133MB
hello-world   latest    feb5d9fea6a5   5 weeks ago   13.3kB

VIII. View the image hierarchy history

Click to view the code
root@ubuntu:~# docker image history nginx
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
87a94228f133   2 weeks ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon...   0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr...   0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) COPY file:09a214a3e07c919a...   4.61kB    
<missing>      2 weeks ago   /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7...   1.04kB    
<missing>      2 weeks ago   /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0...   1.96kB    
<missing>      2 weeks ago   /bin/sh -c #(nop) COPY file:65504f71f5855ca0...   1.2kB     
<missing>      2 weeks ago   /bin/sh -c set -x     && addgroup --system -...   64MB      
<missing>      2 weeks ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1~buster     0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  ENV NJS_VERSION=0.6.2        0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.3     0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do...   0B        
<missing>      2 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) ADD file:910392427fdf089bc...   69.3MB  

IX. view image information

Click to view the code
root@ubuntu:~# docker inspect nginx
[
    {
        "Id": "sha256:87a94228f133e2da99cb16d653cd1373c5b4e8689956386c1c12b60a20421a02",
        "RepoTags": [
            "nginx:latest",
            "test_nginx:v1.0"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "",
        "Created": "2021-10-12T02:03:40.360294686Z",
        "Container": "21fd1c6cb532225ca7e04c77f6592e220574b919aec07021663576ef438e0fee",
        "ContainerConfig": {
            "Hostname": "21fd1c6cb532",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.3",
                "NJS_VERSION=0.6.2",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
            "Image": "sha256:e30f1b92b2c67fbe72fb24af7353a945f6df4f48d9064d47bf0f51674311251e",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.3",
                "NJS_VERSION=0.6.2",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "sha256:e30f1b92b2c67fbe72fb24af7353a945f6df4f48d9064d47bf0f51674311251e",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 133277153,
        "VirtualSize": 133277153,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/5936365e35391fb0cbd58837deca3071b3e184f4b379ea9083fbe92abb41d1a1/diff:/var/lib/docker/overlay2/283e87848d1aa658db2042ef4a4e5e647df5802730c329055a2a9125a9af6048/diff:/var/lib/docker/overlay2/cc6da890b6136654f4d247b48a783d065bbed8c0bcf36515ab7fbd15273280c1/diff:/var/lib/docker/overlay2/fe9766053b8733da341d4c5d868f7ea156025820b62d1028174902f3d5696168/diff:/var/lib/docker/overlay2/ade8e887e82afa5c813e45352bec310a0120dc546ea7039b226c2d3877216207/diff",
                "MergedDir": "/var/lib/docker/overlay2/272f7a79a4072689772c4344bc17bd165c91922aaa3bfc259a3411e87ba25499/merged",
                "UpperDir": "/var/lib/docker/overlay2/272f7a79a4072689772c4344bc17bd165c91922aaa3bfc259a3411e87ba25499/diff",
                "WorkDir": "/var/lib/docker/overlay2/272f7a79a4072689772c4344bc17bd165c91922aaa3bfc259a3411e87ba25499/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:e81bff2725dbc0bf2003db10272fef362e882eb96353055778a66cda430cf81b",
                "sha256:43f4e41372e42dd32309f6a7bdce03cf2d65b3ca34b1036be946d53c35b503ab",
                "sha256:788e89a4d186f3614bfa74254524bc2e2c6de103698aeb1cb044f8e8339a90bd",
                "sha256:f8e880dfc4ef19e78853c3f132166a4760a220c5ad15b9ee03b22da9c490ae3b",
                "sha256:f7e00b807643e512b85ef8c9f5244667c337c314fa29572206c1b0f3ae7bf122",
                "sha256:9959a332cf6e41253a9cd0c715fa74b01db1621b4d16f98f4155a2ed5365da4a"
            ]
        },
        "Metadata": {
            "LastTagTime": "2021-10-29T17:54:04.494435623+08:00"
        }
    }
]

X. delete image

Click to view the code
root@ubuntu:~# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:644a70516a26004c97d0d85c7fe1d0c3a67ea8ab7ddf4aff193d9f301670cf36
Deleted: sha256:87a94228f133e2da99cb16d653cd1373c5b4e8689956386c1c12b60a20421a02
Deleted: sha256:55b6972054b24c53054322a52748324df5797eefbb6dc374e41522a91d532dd5
Deleted: sha256:6b88aa6f4485486bfc779cccfbe4a7a47a502a7cff2cd70be89c59dcd0db12a8
Deleted: sha256:472c64059965c7b6b1b534ba07374c1d034b17c99acb3cf4534fe78abed41101
Deleted: sha256:788a5cf1e4599312b5923694f53e556ba0e2eb4a6bbb51958e0ec2b510345a49
Deleted: sha256:410f31f9ae37c62af85e8f9575c5f4d75542be1739ac1ca5982cf461be0b13bc
Deleted: sha256:e81bff2725dbc0bf2003db10272fef362e882eb96353055778a66cda430cf81b

root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 87a94228f133 2 weeks ago 133MB
hello-world latest feb5d9fea6a5 5 weeks ago 13.3kB

Posted by scriderpsd on Thu, 04 Nov 2021 22:43:10 -0700