3.2.1 列出本机的镜像
下面的命令可以列出本地存储中镜像,也可以查看这些镜像的基本信息。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04.2 2103b00b3fdf 5 months ago 188.3 MB ubuntu latest 2103b00b3fdf 5 months ago 188.3 MB ubuntu trusty 2103b00b3fdf 5 months ago 188.3 MB ubuntu trusty-20150228.11 2103b00b3fdf 5 months ago 188.3 MB ubuntu 14.04 2d24f826cb16 5 months ago 188.3 MB busybox buildroot-2014.02 4986bf8c1536 7 months ago 2.43 MB busybox latest 4986bf8c1536 7 months ago 2.43 MB
此外,通过--help参数还可以查询docker images的详细用法,如下:
$ docker images --help Usage: docker images [OPTIONS] [REPOSITORY] List images -a, --all=false Show all images (default hides intermediate images) --digests=false Show digests -f, --filter=[] Filter output based on conditions provided --help=false Print usage --no-trunc=false Don't truncate output -q, --quiet=false Only show numeric IDs
其中,--filter用于过滤docker images的结果,过滤器采用key=value的这种形式。目前支持的过滤器为dangling和label。--filter"dangling=true"会显示所有“悬挂”镜像。“悬挂”镜像没有对应的名称和tag,并且其最上层不会被任何镜像所依赖。docker commit在一些情况下会产生这种“悬挂”镜像。下面第一条命令产生了一个“悬挂”镜像,第二条命令则根据其特点过滤出该镜像了。图3-2中的d08407d841f3就是这种镜像。
$ docker commit 0d6cbf57f660 $ docker images --filter "dangling=true" REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> d08407d841f3 3 hours ago 2.43 MB
在上面的命令中,--no-trunc参数可以列出完整长度的Image ID。若添加参数-q则会只输出Image ID,该参数在管道命令中很有用处。一般来说悬挂镜像并不总是我们所需要的,并且会浪费磁盘空间。可以使用如下管道命令删除所有的“悬挂”镜像。
$ docker images --filter "dangling=true" -q | xargs docker rmi Deleted: 8a39aa048fe3f2e319651b206073b2a2e437dcf85c15fedb6f437cfe86105145
这里的--digests比较特别,这个参数是伴随着新版本的Docker Registry V2(即Distribution)产生的,在本书接下来的第4章会详细说明。
按照Docker官方路标和最近的动作,Docker只会保留最核心的image相关命令和功能,因此那些非核心功能就会被删除。比如--tree和--dot已经从Docker 1.7中删掉。官方推荐使用dockerviz工具分析Docker image。执行以下命令,可以图形化地展示Docker image的层次关系。
# dockviz images -d | dot -Tpng -o images.png
执行结果如图3-2所示,可以看到,同一个仓库中的镜像并不一定要有特别的关系,比如ubuntu:14.04和ubuntu:14.04.2之间就没有共享任何层。
图3-2 Docker image层次关系