Docker基础篇2:镜像管理

1、镜像简介

简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。

       镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默认存储在/var/lib/docker/<storage-driver>中。
         容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。
        Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

2、修改镜像源

   Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。https://hub.docker.com/explore
默认是国外的源,下载会慢,建议配置国内镜像仓:

[root@VM_190_147_centos ~]# vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"]
}

3、镜像常用命令说明

[root@VM_190_147_centos ~]# docker --help

通过docker --help命令我们发现,镜像管理的

【镜像存储的位置】
[root@VM_190_147_centos ~]# ls /var/lib/docker/image/
overlay2

【查看镜像管理命令提示】

[root@VM_190_147_centos ~]# docker image --help

 4、 镜像管理命令使用

【列出所有镜像】

[root@VM_190_147_centos ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              568c4670fa80        32 hours ago        109MB

【查看镜像历史】会显示每一层的情况

[root@VM_190_147_centos ~]# docker image history nginx

【查看镜像详情inspect】

[root@VM_190_147_centos ~]# docker image inspect nginx:latest
[
    {
        "Id": "sha256:568c4670fa800978e08e4a51132b995a54f8d5ae83ca133ef5546d092b864acf",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:5d32f60db294b5deb55d078cd4feb410ad88e6fe77500c87d3970eca97f54dba"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2018-11-27T22:21:45.207738888Z",
        "Container": "1455cab9c97f6945336dd97d5dfca0429eacbb739fcd362cc528ed8a175fcc7b",
        "ContainerConfig": {
            "Hostname": "1455cab9c97f",
            "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.15.7-1~stretch",
                "NJS_VERSION=1.15.7.0.2.6-1~stretch"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:cf9409661039371fa3448619fb988625e4542108921c4c8f923c5bccc51601eb",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": [],
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <[email protected]>"
            },
            "StopSignal": "SIGTERM"
        },
        "DockerVersion": "17.06.2-ce",
        "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.15.7-1~stretch",
                "NJS_VERSION=1.15.7.0.2.6-1~stretch"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:cf9409661039371fa3448619fb988625e4542108921c4c8f923c5bccc51601eb",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": [],
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <[email protected]>"
            },
            "StopSignal": "SIGTERM"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 109116878,
        "VirtualSize": 109116878,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/ab2eb6e813d97b338827eae1c4982601a8961cf3b30b935f371fe925b2414959/diff:/var/lib/docker/overlay2/2f5ba371b973ed35e737c77372a62500a7b895d65534c1cc1eb1ee9b72440bc3/diff",
                "MergedDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/merged",
                "UpperDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/diff",
                "WorkDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:ef68f6734aa485edf13a8509fe60e4272428deaf63f446a441b79d47fc5d17d3",
                "sha256:ad5345cbb119f7c720123e3adf28b164143e4157ca6e46a629ca694e75f7825f",
                "sha256:ece4f9fdef598687f23d39643bacbf2c609201b087b93bbae81b931da72d2a64"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

【给镜像一个标记tag】

[root@VM_190_147_centos ~]# docker image tag nginx wzy_nginx

【save保存一个镜像归档tar文件】

[root@VM_190_147_centos ~]# docker image save nginx > nginx_v1.tar
[root@VM_190_147_centos ~]# du -sh nginx_v1.tar 
108M    nginx_v1.tar
[root@VM_190_147_centos ~]# ll nginx_v1.tar 
-rw-r--r-- 1 root root 112844800 Nov 29 14:06 nginx_v1.tar

【加载一个归档tar文件的镜像】

[root@VM_190_147_centos ~]# docker load < nginx_v1.tar 
Loaded image: nginx:latest

【导入导出容器】

[root@VM_190_147_centos ~]# docker run -itd busybox
54254189b04e92e9842b73326ccae72173bc4b7b120672a03d8aff1bcf865e3e
[root@VM_190_147_centos ~]# docker export 54254189b04e > busybox.tar

[root@VM_190_147_centos ~]# docker image import busybox.tar busybox:self  
sha256:0ebfcabd404262fe2e9e324438ae3c617165aabbfc7c58ae5452a2da28c813dd

【注意】save命令和export命令,以及load命令与import的区别。save和load命令针对镜像而言,export和import针对容器文件而言。

猜你喜欢

转载自blog.csdn.net/u013089490/article/details/84630851
今日推荐