• docker——镜像(image)


    镜像相关命令一览表:

    • docker images
    • docker tag
    • docker inspect
    • docker history
    • docker search
    • docker pull/push
    • docker rmi
    • docker save/load

    1.查看镜像

    (1)docker images:列出本地主机上已有镜像的基本信息。

    REPOSITORY:来自哪个仓库。
      my-jx和test来自本地,也就是这两个镜像是自己创建的。
      docker.io/nginx表示来自docker官方服务器的nginx这个仓库。
      daocloud.io/index.tenxclound.com是国内云服务提供商提供的镜像。
      cent0s7-ansibel是自己创建的一个标签。

    TAG:镜像的标识信息,latest表示最新版本。
      TAG标记主要用来表示来自同一个仓库的不同镜像。

    IMAGE ID:镜像的ID(唯一标识)
      ID非常重要,实际上完整的id应该包括256个比特,由64个十六进制字符组成
      上面docker.io/centos的ID是75835a67d134,完整的ID应该是75835a67d1341bdc7f4cc4ed9fa1631a7d7b6998e9327272afea342d90c4ab6d。
      可以使用docker inspect查看完整的ID。
      在使用镜像ID的时候,可以只使用前若干个字符就可以代表完整的ID。

    CREATED:创建时间

    SIZE:镜像的大小。好的镜像往往体积都比较小。
      镜像大小信息只是表示该镜像的逻辑体积大小。

    上面这个两个镜像其实只是一个镜像,只是打了一个标签而已。
    逻辑体积是447MB,但是实际上了物理上占用的空间应该会小于各镜像的逻辑体积之和 

    docker images还支持一些子命令:
      -a, --all=true|false:列出所有的镜像文件,包括零时文件,默认为否;
      --digests=true|false:列出镜像的数字摘要值。否问为否;
      -f, --filter=[]:过滤列出的镜像;
      --format="TEMPLATE":控制输出格式;
      --no-trunc=true|false:对输出结果中太长的部分是否进行截断;
      -q, --quiet=true|false:仅输出ID信息,默认为否;

     

    (2)docker tag:给镜像打标签

    有时候从仓库里拉下的镜像名称很长,这是由于这个名称其实代表的是存储的路径,所以可能有多层。

    这个时候为了方便起见,我们可以给他打上一个标签。我们可以发现它们的ID还是相同的,其实指向同一个镜像

    下面这两种方式都是可行的。
      docker tag 758 centos 使用ID,给id为758的镜像打上一个centos的标签
      docker tag docker.io/centos centos7.2 使用全名

     

    (3)docker inspect:查看镜像的详细信息

    [root@centos003 ~]# docker inspect centos
    [
        {
            "Id": "sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb",  #完整id
            "RepoTags": [
                "centos:latest"  #标签信息
            ],
            "RepoDigests": [    #镜像摘要,推测以此来保持镜像的完整性
                "centos@sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426"
            ],
            "Parent": "",    #父镜像,镜像可能是多层的
            "Comment": "",   #说明
            "Created": "2018-12-06T00:21:07.135655444Z",  #创建时间
            "Container": "1fdbb0fcc184eb795364f7aa5fdc00299d0a2b90d8e26b4696217c22da7f983f",
            "ContainerConfig": {  #容器配置时的一些参数
                "Hostname": "1fdbb0fcc184",  #主机名
                "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:b3a68d99a4a4195c6c97c2345b83cb2d6cfd1661247816ac403cf0b584437ad7",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {  #标签
                    "org.label-schema.build-date": "20181205",
                    "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": "17.06.2-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:b3a68d99a4a4195c6c97c2345b83cb2d6cfd1661247816ac403cf0b584437ad7",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.build-date": "20181205",
                    "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": 201779604,
            "VirtualSize": 201779604,
            "GraphDriver": {
                "Data": {
                    "MergedDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/merged",
                    "UpperDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/diff",
                    "WorkDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/work"
                },
                "Name": "overlay2"
            },
            "RootFS": {
                "Type": "layers",
                "Layers": [
                    "sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956"
                ]
            },
            "Metadata": {
                "LastTagTime": "0001-01-01T00:00:00Z"
            }
        }
    ]

    docker inspect 还支持一些子命令。
      -f, --format="":格式化输出,可以通过这个参数过滤出想要的信息。
      -s, --size:如果类型为容器,则显示总文件的大小
      --type=container|image|network|node|service|task|volume:辅助查询
    如果你想查看ContainerConfig信息:

      docker inspect -f {{.ContainerConfig}} 1e11

      docker inspect -f {{.ContainerConfig.Hostname}} 1e11

     

    (4)docker history:列出各层的创建信息

    2.搜寻镜像:搜索仓库中共享的镜像,默认搜索官方仓库。

    INDEX:属于哪个仓库
    NAME:名称
    DESCRIPTION:描述
    STARS:星级
    OFFICIAL:是否是官方的
    AUTOMATED:是否自动

    docker search的子命令:
      docker search [-f|--filter[=[]]] [--help] [--limit[=LIMIT]] [--no-index] [--no-trunc] TERM
      -f, --filter=[]:过滤信息
      --no-index=true|false:不要在输出中包含索引名称。排序结果主要由注册表名。
      --limit=LIMIT:返回的最大搜索结果。默认值为25。
      --no-trunc=true|false:输出星系不截断显示,默认为否

    示例:
      docker search --filter=starts=3 fedora 星级大于等于三的结果
      docker search -s 3 fedora
      docker search --filter=is-automated=true --filter=stars=1 fedora 自动化并且星级大于等于1
      docker search --limit=10 fedora  

    3.获取镜像

    dockers pull:直接从Docker Hub镜像源来下载镜像
    docker pull [-a|--all-tags] [--help] NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

     一般不指定具体的名称,就会默认下载最新的版本latest。
    一般来说,latest 一般是最新版本但是并不稳定,因此在生产环境中最好还是使用稳定的版本。
    在拉去镜像的时候还可以指定拉取的位置。示例如下:
      docker pull hub.c.163.com/public/lamp:latest  网易

    4.删除镜像

    docker rmi 删除镜像
    docker rmi [-f|--force] [--help] [--no-prune] IMAGE [IMAGE...]

     (1)根据标签删除名称删除镜像

     (2)根据ID删除镜像

      之前说过,为了方便起见,我们会给镜像打标签,这样删除一个id可能就可能删除多项。

     需要注意的情况是当镜像被容器依赖的情况:

      此时你必须先删除依赖该镜像的所有容器,再来删除镜像,当然你也可以-f强制删除。

    5.创建镜像

    创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

    (1)基于已有的容器创建

    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    子命令参数:
      -a, --author="":作者信息
      -c , --change=[]: 提交的时候执行Dockerfile指令
      -m, --message="":提交消息
      -p, --pause=true|false:提交时暂停容器运行

      查看:

    (2)基于Dockerfile创建

    详细内容请查看:xxxxx

    6.存出和载入镜像

    docker save:导出镜像到本地文件
    docker load:将导出的tar文件再次导入镜像库
    导入到本地:

    删除原镜像:

    载入镜像:

    查看结果:

    7.上传镜像

    可以使用docker push命令上传镜像到仓库,默认上传到官方仓库

  • 相关阅读:
    redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)
    阿里笔试-生产者消费者模式
    调用 redis 原子命令,保证多线程安全 的incr命令问题
    忽略警告注解@SuppressWarnings详解
    怎样查出连续数字中缺失的数字
    IDEA-Maven的Dependencies中出现红色波浪线
    Java实现AES加密(window机器和linux机器) 注意window机器 和linux机器算法稍有不同
    PR代码提交规范
    接口的幂等性,如何保证
    bash 括号(小括号,双小括号,中括号,双中括号,大括号)
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/10150144.html
Copyright © 2020-2023  润新知