《Docker技术入门与实战》——3.2 查看镜像信息

本节书摘来自华章计算机《Docker技术入门与实战》一书中的第3章,第3.2节,作者:杨保华,戴王剑,曹亚仑著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 查看镜像信息

使用docker images命令可以列出本地主机上已有的镜像。
例如,下面的命令列出了本地刚从官方下载的ubuntu:14.04镜像,以及从DockerPool镜像源下载的ubuntu:latest镜像。

$ sudo docker images
REPOSITORY           TAG        IMAGE ID     CREATED       VIRTUAL SIZE
ubuntu             14.04         5506de2b643b      1 weeks ago        197.8 MB
dl.dockerpool.com:5000/ubuntu  latest   5506de2b643b   1 weeks ago    197.8 MB

在列出信息中,可以看到几个字段信息:
来自于哪个仓库,比如ubuntu仓库。
镜像的标签信息,比如14.04。
镜像的ID号(唯一)。
创建时间。
镜像大小。
其中镜像的ID信息十分重要,它唯一标识了镜像。
TAG信息用于标记来自同一个仓库的不同镜像。例如ubuntu仓库中有多个镜像,通过TAG信息来区分发行版本,包括10.04、12.04、12.10、13.04、14.04等标签。
为了方便在后续工作中使用这个镜像,还可以使用docker tag命令为本地镜像添加新的标签。例如添加一个新的ubuntu:latest镜像标签如下:

$ sudo docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest

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

$ sudo docker images
REPOSITORY           TAG         IMAGE ID       CREATED          VIRTUAL SIZE
ubuntu              14.04         5506de2b643b     1 weeks ago       197.8 MB
dl.dockerpool.com:5000/ubuntu latest   5506de2b643b    1 weeks ago    192.8 MB
ubuntu              latest         5506de2b643b      1 weeks ago       192.8 MB

细心的读者可能会注意到,这些不同标签的镜像的ID是完全一致的,说明它们实际上指向了同一个镜像文件,只是别名不同而已。标签在这里起到了引用或快捷方式的作用。
使用docker inspect命令可以获取该镜像的详细信息。

$ sudo docker inspect 5506de2b643b
[{
    "Architecture": "amd64",
    "Author": "",
    "Comment": "",
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "065262ce3c91",
        "Image":"964692831e07f7362f5c3fedf0c4b81a622f2c6e3ec5f19d0eddff21afd64c12",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Container":"f26bc14cc07412402bdab911b8a935fead0322649cf042cee8515c02ebdfa53a",
    "ContainerConfig": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/sh",
            "-c",
            "#(nop) CMD [/bin/bash]"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "065262ce3c91",
        "Image":"964692831e07f7362f5c3fedf0c4b81a622f2c6e3ec5f19d0eddff21afd64c12",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2014-09-23T22:37:05.812213629Z",
    "DockerVersion": "1.2.0",
    "Id": "53bf7a53e8903fce40d24663901aac6211373a8d8b4effe08bc884e63e181805",
    "Os": "linux",
    "Parent":"964692831e07f7362f5c3fedf0c4b81a622f2c6e3ec5f19d0eddff21afd64c12",
    "Size": 0
}
]

docker inspect命令返回的是一个JSON格式的消息,如果我们只要其中一项内容时,可以使用-f参数来指定,例如,获取镜像的Architecture信息:

$ sudo docker inspect -f {{".Architecture"}} 550
amd64

在指定镜像ID的时候,通常使用该ID的前若干个字符组成的可区分字串来替代完整的 ID。

上一篇:安装 MySQL报错 -bash: mysql: command not found


下一篇:Rainbond V5.2.0-beta2版本发布,企业中台视图来了