镜像相关操作
BioNote 2021-11-09
docker
docker image
# 常用命令
# 拉取镜像
从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
1
# 删除镜像
其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
docker image rm [选项] <镜像1> [<镜像2> ...]
# untag 和 delete
使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。
因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。
所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。
# 结合其他命令删除
- 删除所有仓库名为 redis 的镜像:
docker image rm $(docker image ls -q redis)
1
- 删除所有在 mongo:3.2 之前的镜像:
docker image rm $(docker image ls -q -f before=mongo:3.2)
1
# 列出镜像
列出机器上已经存在的镜像,可以使用docker images;同时它的alias还有ls,list
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 05a60462f8ba 5 days ago 181 MB
<none> <none> 00285df0df87 5 days ago 342 MB
1
2
3
4
2
3
4
# 虚悬镜像
出现仓库名、标签均为
$ docker image ls -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 00285df0df87 5 days ago 342 MB
1
2
3
2
3
可以使用如下命令删除该类镜像
docker image prune
1
# 过滤列出的镜像
- 根据仓库列出镜像
$ docker image ls ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 329ed837d508 3 days ago 63.3MB
ubuntu bionic 329ed837d508 3 days ago 63.3MB
1
2
3
4
2
3
4
- 指定仓库名和标签列出镜像
$ docker image ls ubuntu:18.04
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 329ed837d508 3 days ago 63.3MB
1
2
3
2
3
- 通过过滤器过滤 过滤器参数 --filter,或者简写 -f。之前我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。比如,我们希望看到在 mongo:3.2 之后建立的镜像,可以用下面的命令:
$ docker image ls -f since=mongo:3.2
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5f515359c7f8 5 days ago 183 MB
nginx latest 05a60462f8ba 5 days ago 181 MB
1
2
3
4
2
3
4
想查看某个位置之前的镜像也可以,只需要把 since 换成 before 即可。
# 以特定格式展示
可以参考Go的模版语法
直接列出镜像结果,并且只包含镜像ID和仓库名:
$ docker image ls --format "{{.ID}}: {{.Repository}}"
5f515359c7f8: redis
05a60462f8ba: nginx
fe9198c04d62: mongo
00285df0df87: <none>
329ed837d508: ubuntu
329ed837d508: ubuntu
1
2
3
4
5
6
7
2
3
4
5
6
7
以表格等距显示,并且有标题行,和默认一样,不过自己定义列:
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
5f515359c7f8 redis latest
05a60462f8ba nginx latest
fe9198c04d62 mongo 3.2
00285df0df87 <none> <none>
329ed837d508 ubuntu 18.04
329ed837d508 ubuntu bionic
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8