• DOCKER学习_009:Docker的镜像管理


    1 查看镜像

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    redis                     4.0                 e263c3a3ce1f        2 days ago          89.2MB
    httpd                     2.4                 c2aa7e16edd8        3 days ago          165MB
    centos                    7                   5e35e350aded        7 weeks ago         203MB
    nginx                     latest              540a289bab6c        2 months ago        126MB
    goodsmileduck/redis-cli   latest              4b2315bf1ad2        4 months ago        48.9MB

    镜像的SIZE的是压缩后的大小,实际运行后的大小,要比这个SIZE大

    2 镜像命名规范

    无论我们对镜像做何种操作,首先它得有个名字。我们在前面使用docker run来运行容器的时候,就需要传递一个镜像名称,容器基于该镜像来运行。

    一个完整的镜像名称由两部分组成:

    <image name> = <repository>:[tag]

    其中repository包含如下内容:

    [Docker Registry地址/][项目目录/]<名称>

    所以一个完整的镜像命名如下:

    [Docker Registry地址/][项目目录/]<名称>:[标签]

    当没指明镜像tag时,默认为latest,但latest没有任何特殊含义,在docker hub上很多repository将latest作为最新稳定版本的别名,但这只是一种约定,不是强制规定,一个repository可以有多个tag,而多个tag也可能对应同一个镜像

    3 镜像的基本操作

    拉取镜像

    docker pull  镜像名,默认是从dokcer的仓库中拉取

    [root@docker-server3 ~]# docker pull centos

    Using default tag: latest
    latest: Pulling from library/centos
    729ec3a6ada3: Pull complete 
    Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
    Status: Downloaded newer image for centos:latest
    docker.io/library/centos:latest

    也可以指定位置拉取镜像

    [root@docker-server3 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3

    • 指定仓库位置 registry.cn-hangzhou.aliyuncs.com
    • 路径:google_containers
    • 镜像名:coredns:1.1.3
    1.1.3: Pulling from google_containers/coredns
    88286f41530e: Pull complete 
    9e8fb813cddc: Pull complete 
    3ac8c130be3b: Pull complete 
    Digest: sha256:d929e48a87979279307111fd28a52272d3fac0ed1dc8f2f53a9489be45e5f2eb
    Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3
    registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                                                    TAG                 IMAGE ID            CREATED             SIZE
    redis                                                         4.0                 e263c3a3ce1f        2 days ago          89.2MB
    httpd                                                         2.4                 c2aa7e16edd8        3 days ago          165MB
    centos                                                        7                   5e35e350aded        7 weeks ago         203MB
    nginx                                                         latest              540a289bab6c        2 months ago        126MB
    centos                                                        latest              0f3e07c0138f        3 months ago        220MB
    goodsmileduck/redis-cli                                       latest              4b2315bf1ad2        4 months ago        48.9MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/coredns   1.1.3               b3b94275d97c        19 months ago       45.6MB

    4 获取镜像的详细信息

    [root@docker-server3 ~]# docker inspect centos:latest

    [
        {
            "Id": "sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da",
            "RepoTags": [
                "centos:latest"
            ],
            "RepoDigests": [
                "centos@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9"
            ],
            "Parent": "",
            "Comment": "",
            "Created": "2019-10-01T23:19:57.105928163Z",
            "Container": "711572e3c0c1ac06d5c13c4e668ec170b8ad8786b5f0949f884a5f7fd350d856",
            "ContainerConfig": {
                "Hostname": "711572e3c0c1",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ],
                "Cmd": [
                    "/bin/sh",
                    "-c",
                    "#(nop) ",
                    "CMD ["/bin/bash"]"
                ],
                "ArgsEscaped": true,
                "Image": "sha256:c0bda62fdbad65a3c6a1843d293a3a47d8233115cc6d384e3cb07c53580a2b43",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.build-date": "20190927",
                    "org.label-schema.license": "GPLv2",
                    "org.label-schema.name": "CentOS Base Image",
                    "org.label-schema.schema-version": "1.0",
                    "org.label-schema.vendor": "CentOS"
                }
            },
            "DockerVersion": "18.06.1-ce",
            "Author": "",
            "Config": {
                "Hostname": "",
                "Domainname": "",
                "User": "",
                "AttachStdin": false,
                "AttachStdout": false,
                "AttachStderr": false,
                "Tty": false,
                "OpenStdin": false,
                "StdinOnce": false,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ],
                "Cmd": [
                    "/bin/bash"
                ],
                "ArgsEscaped": true,
                "Image": "sha256:c0bda62fdbad65a3c6a1843d293a3a47d8233115cc6d384e3cb07c53580a2b43",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.build-date": "20190927",
                    "org.label-schema.license": "GPLv2",
                    "org.label-schema.name": "CentOS Base Image",
                    "org.label-schema.schema-version": "1.0",
                    "org.label-schema.vendor": "CentOS"
                }
            },
            "Architecture": "amd64",
            "Os": "linux",
            "Size": 219583055,
            "VirtualSize": 219583055,
            "GraphDriver": {
                "Data": {
                    "MergedDir": "/var/lib/docker/overlay2/166424768dce2d380cf1fe7cd570b2b72feb3b5768859101e5b5d46aa87ccc8d/merged",
                    "UpperDir": "/var/lib/docker/overlay2/166424768dce2d380cf1fe7cd570b2b72feb3b5768859101e5b5d46aa87ccc8d/diff",
                    "WorkDir": "/var/lib/docker/overlay2/166424768dce2d380cf1fe7cd570b2b72feb3b5768859101e5b5d46aa87ccc8d/work"
                },
                "Name": "overlay2"
            },
            "RootFS": {
                "Type": "layers",
                "Layers": [
                    "sha256:9e607bb861a7d58bece26dd2c02874beedd6a097c1b6eca5255d5eb0d2236983"
                ]
            },
            "Metadata": {
                "LastTagTime": "0001-01-01T00:00:00Z"
            }
        }
    ]

    5 镜像的删除操作

    [root@docker-server3 ~]# docker rmi 0f3e07c0138f

    Untagged: centos:latest
    Untagged: centos@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
    Deleted: sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da
    Deleted: sha256:9e607bb861a7d58bece26dd2c02874beedd6a097c1b6eca5255d5eb0d2236983

    当镜像有容器存在时

    [root@docker-server3 ~]# docker ps -a

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    acd538e93dec        redis:4.0           "docker-entrypoint.s…"   3 hours ago         Up 3 hours          6379/tcp            zen_raman
    5e82ea0e65f0        centos:7            "/bin/bash"              3 hours ago         Up 3 hours                              romantic_lewin

    [root@docker-server3 ~]# docker rmi 5e35e350aded

    Error response from daemon: conflict: unable to delete 5e35e350aded (cannot be forced) - image is being used by running container 5e82ea0e65f0

    强制删除

    [root@docker-server3 ~]# docker rmi -f 5e35e350aded

    Error response from daemon: conflict: unable to delete 5e35e350aded (cannot be forced) - image is being used by running container 5e82ea0e65f0

    运行的容器,镜像是无法删除的,停止容器

    [root@docker-server3 ~]# docker stop 5e82ea0e65f0

    再次删除镜像

    [root@docker-server3 ~]# docker rmi  -f 5e35e350aded

    Untagged: centos:7
    Untagged: centos@sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c
    Deleted: sha256:5e35e350aded98340bc8fcb0ba392d809c807bc3eb5c618d4a0674d98d88bccd

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                                                    TAG                 IMAGE ID            CREATED             SIZE
    redis                                                         4.0                 e263c3a3ce1f        2 days ago          89.2MB
    httpd                                                         2.4                 c2aa7e16edd8        3 days ago          165MB
    nginx                                                         latest              540a289bab6c        2 months ago        126MB
    hub.darren.com/library/nginx                                  version1            540a289bab6c        2 months ago        126MB
    goodsmileduck/redis-cli                                       latest              4b2315bf1ad2        4 months ago        48.9MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/coredns   1.1.3               b3b94275d97c        19 months ago       45.6MB

    centos7的镜像已经被删除  

    6 修改镜像名,打标签

    [root@docker-server3 ~]# docker tag nginx:latest hub.darren.com/library/nginx:version1

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                                                    TAG                 IMAGE ID            CREATED             SIZE
    redis                                                         4.0                 e263c3a3ce1f        2 days ago          89.2MB
    httpd                                                         2.4                 c2aa7e16edd8        3 days ago          165MB
    hub.darren.com/library/nginx                                  version1            540a289bab6c        2 months ago        126MB
    nginx                                                         latest              540a289bab6c        2 months ago        126MB
    centos                                                        latest              0f3e07c0138f        3 months ago        220MB
    goodsmileduck/redis-cli                                       latest              4b2315bf1ad2        4 months ago        48.9MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/coredns   1.1.3               b3b94275d97c        19 months ago       45.6MB

    7 镜像的导入和导出

    删除掉所有的镜像

    拉去两个镜像

    [root@docker-server3 ~]# docker pull busybox

    [root@docker-server3 ~]# docker pull alpine

    [root@docker-server3 ~]# docker image ls

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    busybox             latest              6d5fcfe5ff17        4 days ago          1.22MB
    alpine              latest              cc0abc535e36        6 days ago          5.59MB

    [root@docker-server3 ~]# docker tag alpine:latest hub.darren.com/library/alpine:3.7

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
    busybox                         latest              6d5fcfe5ff17        4 days ago          1.22MB
    alpine                          latest              cc0abc535e36        6 days ago          5.59MB
    hub.darren.com/library/alpine   3.7                 cc0abc535e36        6 days ago          5.59MB

    镜像不是一个文件

    [root@docker-server3 ~]# cd /var/lib/docker/image/overlay2/

    [root@docker-server3 overlay2]# ll

    drwx------ 4 root root  58 Nov  9 03:50 distribution
    drwx------ 4 root root  37 Nov  9 03:12 imagedb
    drwx------ 5 root root  45 Nov  9 03:52 layerdb
    -rw------- 1 root root 677 Dec 31 10:45 repositories.json

    导出

    [root@docker-server3 ~]# docker save -o alpine:3.7.tar hub.darren.com/library/alpine:3.7

    [root@docker-server3 ~]# ll

    -rw-------  1 root root 5866496 Dec 31 10:51 alpine:3.7.tar

    [root@docker-server3 ~]# docker rmi -f cc0abc535e36

    Untagged: alpine:latest
    Untagged: alpine@sha256:2171658620155679240babee0a7714f6509fae66898db422ad803b951257db78
    Untagged: hub.darren.com/library/alpine:3.7
    Deleted: sha256:cc0abc535e36a7ede71978ba2bbd8159b8a5420b91f2fbc520cdf5f673640a34
    Deleted: sha256:6b27de954cca6332272e7709b7d8ceccee1489d9452af73391df360a26123580
    [root@docker-server3 ~]# docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    busybox             latest              6d5fcfe5ff17        4 days ago          1.22MB

    导入

    [root@docker-server3 ~]# docker load --input alpine:3.7.tar 

    6b27de954cca: Loading layer [==================================================>]  5.857MB/5.857MB
    Loaded image: hub.darren.com/library/alpine:3.7

    [root@docker-server3 ~]# docker image ls

    REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
    busybox                         latest              6d5fcfe5ff17        4 days ago          1.22MB
    hub.darren.com/library/alpine   3.7                 cc0abc535e36        6 days ago          5.59MB

    容器的镜像管理结束


     博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(https://www.cnblogs.com/breezey/)本人同意即可转载,谢谢

  • 相关阅读:
    Poi之Word文档结构介绍
    Cannot create PoolableConnectionFactory (ORA-28040: No matching authentication protocol
    ZipFile和ZipInputSteam解压zip文件
    Java读取其他jar包里的配置文件
    安装oracle后不能连接问题
    JDBC oracle 错误总结
    vimplugin破解
    SQL之left join、right join、inner join
    ELK之安装searchguard后默认管理员用户admin修改
    CentOS使用systemctl daemon-reload报错Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: Timeout was reached (g-io-error-quark, 24)解决办法
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/12129538.html
Copyright © 2020-2023  润新知