【Docker技术入门与实战】查看镜像信息


本文节选自《Docker技术入门与实战》,华章授权DockerOne发布本书样章,禁止以任何形式转载此文。

使用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。

0 个评论

要回复文章请先登录注册