#Docker#
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull ubuntu:18.04
获取官方镜像library/ubuntu
仓库中的18.04的镜像
docker run -it —rm \
ubuntu:18.04 \
bash
随便一个操作,查看当前ubuntu版本:
cat /etc/os-release
退出
exit
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 62f816a209e6 5 weeks ago 109MB
ubuntu 18.04 ea4c82dcd15a 7 weeks ago 85.8MB
docker image ls -a
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 195MB 195MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
镜像列表中,可能会看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均为 。:
00285df0df87 5 days ago 342 MB
这个镜像原本是有镜像名和标签的,随着官方镜像维护,发布了新版本后,旧的镜像上的这个名称则被取消,从而成为了 。这类无标签镜像也被称为虚悬镜像(dangling image) ,可以用下面的命令专门显示这类镜像:
$ docker image ls -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的
$ docker image prune
根据仓库名列出镜像
$ docker image ls ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 ea4c82dcd15a 7 weeks ago 85.8MB
除此以外,docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。我们希望看到在 mongo:3.2 之后建立的镜像,可以用下面的命令:
$ docker image ls -f since=ubuntu:18.04
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 62f816a209e6 5 weeks ago 109MB
想查看某个位置之前的镜像也可以,只需要把 since 换成 before 即可。
此外,如果镜像构建时,定义了 LABEL,还可以通过 LABEL 来过滤。
默认情况下,docker image ls 会输出一个完整的表格,但是我们并非所有时候都会需要这些内容。比如,刚才删除虚悬镜像的时候,我们需要利用 docker image ls 把所有的虚悬镜像的 ID 列出来,然后才可以交给 docker image rm 命令作为参数来删除指定的这些镜像,这个时候就用到了 -q 参数。
$ docker image ls -q
62f816a209e6
ea4c82dcd15a
–filter 配合 -q 产生出指定范围的 ID 列表,然后送给另一个 docker 命令作为参数,从而针对这组实体成批的进行某种操作的做法在 Docker 命令行使用过程中非常常见,不仅仅是镜像,将来我们会在各个命令中看到这类搭配以完成很强大的功能。因此每次在文档看到过滤器后,可以多注意一下它们的用法。
另外一些时候,我们可能只是对表格的结构不满意,希望自己组织列;或者不希望有标题,这样方便其它程序解析结果等,这就用到了 Go 的模板语法。比如,下面的命令会直接列出镜像结果,并且只包含镜像ID和仓库名:
$ docker image ls --format "{{.ID}}: {{.Repository}}"
或者打算以表格等距显示,并且有标题行,和默认一样,不过自己定义列:
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"