Docker技术入门与实战(第2版)3.2 查看镜像信息
1.?使用images命令列出镜像
使用docker images命令可以列出本地主机上已有镜像的基本信息。
例如,下面的命令列出了上一小节中下载的镜像信息:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 2fa927b5cdd3 2 weeks ago 122 MB
ubuntu latest 2fa927b5cdd3 2 weeks ago 122 MB
ubuntu 14.04 8f1bd21bd25c 2 weeks ago 188 MB
在列出的信息中,可以看到以下几个字段信息。
来自于哪个仓库,比如ubuntu仓库用来保存ubuntu系列的基础镜像;
镜像的标签信息,比如14.04、latest用来标注不同的版本信息。标签只是标记,并不能标识镜像内容;
镜像的ID(唯一标识镜像),如ubuntu:latest和ubuntu:16.04镜像的ID都是2fa927b5cdd3,说明它们目前实际上指向同一个镜像;
创建时间,说明镜像最后的更新时间;
镜像大小,优秀的镜像往往体积都较小。
其中镜像的ID信息十分重要,它唯一标识了镜像。在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。
TAG信息用来标记来自同一个仓库的不同镜像。例如ubuntu仓库中有多个镜像,通过TAG信息来区分发行版本,包括10.04、12.04、12.10、13.04、14.04、16.04等标签。
镜像大小信息只是表示该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像的逻辑体积之和。
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 16.04 2fa927b5cdd3 2 weeks ago 122 MB
ubuntu latest 2fa927b5cdd3 2 weeks ago 122 MB
myubuntu latest 2fa927b5cdd3 2 weeks ago 122 MB
ubuntu 14.04 8f1bd21bd25c 2 weeks ago 188 MB
之后,用户就可以直接使用myubuntu:latest来表示这个镜像了。
细心的读者可能注意到,这些myubuntu:latest镜像的ID跟ubuntu:latest完全一致。它们实际上指向同一个镜像文件,只是别名不同而已。docker tag命令添加的标签实际上起到了类似链接的作用。
3.?使用inspect命令查看详细信息
使用docker inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等:
$ docker inspect ubuntu:14.04
[
{
"Id": "sha256:8f1bd21bd25c3fb1d4b00b7936a73a0664f932e11406c48a0ef19d82fd0b7342",
"RepoTags": [
"ubuntu:14.04"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-05-27T14:13:04.103044105Z",
"Container": "eb8c67a3bff6e93658d18ac14b3a2134488c140a1ae1205c0cfdfd49f087113f",
"ContainerConfig": {
"Hostname": "fff5562e8198",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [\"/bin/bash\"]"
],
"Image": "f9cdf71c33f14c7af4b75b651624e9ac69711630e21ceb289f69e0300e90c57d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "1.9.1",
"Author": "",
"Config": {
"Hostname": "fff5562e8198",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [],
"Cmd": [
"/bin/bash"
],
"Image": "f9cdf71c33f14c7af4b75b651624e9ac69711630e21ceb289f69e0300e90c57d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 187957543,
"VirtualSize": 187957543,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a7e1c363defb1f80633f3688e945754fc4c8f1543f07114befb5e0175d569f4c",
"sha256:dc109d4b4ccf69361d29292fb15e52707507b520aba8cd43a564182f26725d74",
"sha256:9f7ab087e6e6574225f863b6013579a76bd0c80c92fefe7aea92c4207b6486cb",
"sha256:6f8be37bd578bbabe570b0181602971b0ea3509b79a1a3dd5528a4e3fc33dd6f",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
}
}
]
返回的是一个JSON格式的消息,如果我们只要其中一项内容时,可以使用参数-f来指定,例如,获取镜像的Architecture:
$ docker inspect -f {{".Architecture"}}
amd64
4.?使用history命令查看镜像历史
既然镜像文件由多个层组成,那么怎么知道各个层的内容具体是什么呢?这时候可以使用history子命令,该命令将列出各层的创建信息。
例如,查看ubuntu:14.04镜像的创建过程,可以使用如下命令:
$ docker history ubuntu:14.04
IMAGE CREATED CREATED BY SIZE COMMENT
8f1bd21bd25c 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
missing 2 weeks ago /bin/sh -c sed -i s/^#\s*\(deb.*universe\)$/ 1.895 kB
missing 2 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
missing 2 weeks ago /bin/sh -c set -xe echo #!/bin/sh /u 194.5 kB
missing 2 weeks ago /bin/sh -c #(nop) ADD file:aca501360d0937bc49 187.8 MB
注意过长的命令被自动截断了,可以使用前面提到的--no-trunc选项来输出完整
命令。
容器技术-Docker的优点 当产品运行在内部的虚拟化平台中,如openstack,也就是KVM虚拟化,创建虚拟机,但是不断增加的云端应用,增加了对硬件资源的消耗,不断的创建虚拟机,消耗了大量的硬件资源。 那么如何高效的利用硬件资源实现云服务呢
浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid “世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的.....”,这是电影《卡萨布拉卡》中的一句著名独白,投射到现实生活中,与之类似的情况不胜枚举,这世界上有那么多的系统,系统中有那么多的浏览器,在只有一台测试机的前提下,难道我们只能排队一个一个地做兼容性测试吗?有没有效率更高的方法呢?为此我们提出一个更高效的解决方案:使用Docker+Selenium Grid。
技术:Docker基础知识(一) Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker官网:https://www.docker.com/
相关文章
- docker-compose 常用命令
- 使用docker运行轻量级BI工具superset
- docker底层技术概览
- docker 应用篇————容器卷[十一]
- Docker 基础技术之 Linux cgroups 详解
- Ubuntu安装Docker引擎和支持HTTPS的docker-registry服务
- 解决nexus docker代理无法pull镜像问题:需要先执行docker logout
- docker搭建hadoop 3节点集群:镜像使用现成的,不用另做
- 启动docker容器时报错:iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT -
- 【docker】Docker快速入门总结笔记(命令大全)
- Docker-compose 安装 Nginx PHP MySQL
- 82.第十七章 企业级容器技术docker -- Docker网络管理(十)
- 77.第十七章 企业级容器技术docker -- Docker 镜像制作和管理(五)
- 【云原生之Docker实战】使用Docker部署siyuan个人笔记系统
- Ubuntu20.04 在线安装docker
- 4. docker镜像的概念、管理(查看、下载、删除)
- 容器技术之Docker私有镜像仓库harbor
- Docker笔记 | 入门指南
- 猿创征文 | 【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库
- win10 安装docker