本节书摘来自华章计算机《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。