《Docker技术入门与实战(第3版)》——3.2 查看镜像信息

举报
华章计算机 发表于 2019/06/02 02:21:33 2019/06/02
【摘要】 本书摘自《Docker技术入门与实战(第3版)》——书中的第3章,第3.2节作者是杨保华、戴王剑、曹亚仑。

3.2 查看镜像信息

本节主要介绍 Docker 镜像的ls、tag和inspect子命令。

1.使用images命令列出镜像

使用docker images或docker image ls命令可以列出本地主机上已有镜像的基本信息。

例如,下面的命令列出了上一小节中下载的镜像信息:

$ docker images

REPOSITORY            TAG           IMAGE ID          CREATED             SIZE

ubuntu                18.04         452a96d81c30      2 weeks ago         79.6MB

ubuntu                latest        452a96d81c30      2 weeks ago         79.6MB

在列出信息中,可以看到几个字段信息:

来自于哪个仓库,比如 ubuntu表示ubuntu 系列的基础镜像;

镜像的标签信息,比如 18.04、latest表示不同的版本信息。标签只是标记,并不能标识镜像内容;

镜像的ID(唯一标识镜像),如果两个镜像的 ID 相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已;

创建时间,说明镜像最后的更新时间;

镜像大小,优秀的镜像往往体积都较小。

其中镜像的 ID 信息十分重要,它唯一标识了镜像。在使用镜像 ID 的时候,一般可以使用该 ID 的前若干个字符组成的可区分串来替代完整的 ID。

TAG信息用于标记来自同一个仓库的不同镜像。例如 ubuntu 仓库中有多个镜像,通过 TAG 信息来区分发行版本,如18.04、18.10等。

镜像大小信息只是表示了该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。

images子命令主要支持如下选项,用户可以自行进行尝试:

-a, --all=true|false:列出所有(包括临时文件)镜像文件,默认为否;

--digests=true|false:列出镜像的数字摘要值,默认为否;

-f, --filter=[]:过滤列出的镜像,如dangling=true只显示没有被使用的镜像;也可指定带有特定标注的镜像等;

--format="TEMPLATE":控制输出格式,如.ID代表ID信息,.Repository代表仓库信息等;

--no-trunc=true|false:对输出结果中太长的部分是否进行截断,如镜像的 ID 信息,默认为是;

-q, --quiet=true|false:仅输出ID信息,默认为否。

其中,还支持对输出结果进行控制的选项,如-f. --filter=[]、--no-trunc= true|false、-q、--quiet=true|false等。

更多子命令选项还可以通过man docker-images来查看。

2.使用tag命令添加镜像标签

为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签。例如,添加一个新的myubuntu:latest镜像标签:

$ docker tag ubuntu:latest myubuntu:latest

再次使用docker images列出本地主机上镜像信息,可以看到多了一个myubuntu: latest标签的镜像:

$ docker images

REPOSITORY           TAG           IMAGE ID           CREATED             SIZE

ubuntu               18.04         452a96d81c30       2 weeks ago         79.6MB

ubuntu               latest        452a96d81c30       2 weeks ago         79.6MB

myubuntu             latest        452a96d81c30       2 weeks ago         79.6MB

之后,用户就可以直接使用myubuntu:latest来表示这个镜像了。

细心的读者可能注意到,这些myubuntu:latest镜像的ID跟ubuntu:latest是完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而已。docker tag命令添加的标签实际上起到了类似链接的作用。

3.使用inspect命令查看详细信息

使用docker[image]inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等:

$ docker [image] inspect ubuntu:18.04

[

    {

        "Id": "sha256:452a96d81c30a1e426bc250428263ac9ca3f47c9bf086f876d11cb39cf57aeec",

        "RepoTags": [

            "ubuntu:18.04",

            "ubuntu:latest"

        ],

        "RepoDigests": [

            "ubuntu@sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e"

        ],

        "Parent": "",

        "Comment": "",

        "Created": "2018-04-27T23:28:36.319694807Z",

        ...

]

上面代码返回的是一个 JSON 格式的消息,如果我们只要其中一项内容时,可以使用-f来指定,例如,获取镜像的Architecture:

$ docker [image] inspect -f {{".Architecture"}} ubuntu:18.04

amd64

4.使用history命令查看镜像历史

既然镜像文件由多个层组成,那么怎么知道各个层的内容具体是什么呢?这时候可以使用history子命令,该命令将列出各层的创建信息。

例如,查看ubuntu:18.04镜像的创建过程,可以使用如下命令:

$ docker history ubuntu:18.04

IMAGE        CREATED       CREATED BY              SIZE                   COMMENT

452a96d81c30 5 weeks ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]           0B

<missing>    5 weeks ago   /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B

注意,过长的命令被自动截断了,可以使用前面提到的--no-trunc选项来输出完整命令。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。