获取镜像
docker pull [选项] [Docker Registry 地址 [:端口号] / ] 仓库名 [:标签]
示例:
$ docker pull ubuntu:16.04
没有给出Docker镜像仓库地址,因此将会从Docker Hub中获取镜像
运行
$ docker run -it --rm \ ubuntu:16.04 \ bash
" \ "表示 换行
-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。
列出镜像
// 列出所有已经下载的镜像$ docker image ls// 效果同上条命令$ docker images
结果:
//仓库名 标签 镜像ID 创建时间 所占用的空间REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 00fd29ccc6f1 3 weeks ago 111MB laradock_redis latest 19a977a11685 3 months ago 107MB <none> <none> a03f07cc3324 3 months ago 15.5MB laradock_php-fpm latest f4ad9b641995 3 months ago 400MB laradock_workspace latest 318c7dc4d367 3 months ago 696MB laradock_mysql latest 59affc42159e 3 months ago 343MB redis latest b6dddb991dfa 3 months ago 107MB mysql 8.0 6cfa8ff69d16 3 months ago 343MB
注:
1、这里的所占空间大小和 Docker Hub 上的镜像大小不同,Docker Hub 中显示的是压缩后的大小。
2、这里的所占空间大小总和,并非实际的硬盘的占有大小,因为Docker镜像是多层存储结构,并且可以继承、复用,因此不同镜像可使用相同的基础镜像。
中间层镜像
默认的 docker image ls 列表中,只会显示顶层镜像,
// 显示包括中间层镜像在内的所有镜像$ docker image ls -a
注:
这样会看到很多无标签的镜像,和之后的虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,这些无标签镜像,不能删除,否则会导致上层镜像因为依赖丢失而出错。
列出部分镜像
// 根据仓库名列出镜像$ docker image ls ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 00fd29ccc6f1 3 weeks ago 111MB ubuntu 15.10 9b9cb95443b5 17 months ago 137MB// 列出指定镜像$ docker image ls ubuntu:16.04REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 00fd29ccc6f1 3 weeks ago 111MB// 显示指定镜像之后的镜像列表(可比对之前的列表)$ docker image ls -f since=redis REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 00fd29ccc6f1 3 weeks ago 111MB laradock_redis latest 19a977a11685 3 months ago 107MB <none> <none> a03f07cc3324 3 months ago 15.5MB laradock_php-fpm latest f4ad9b641995 3 months ago 400MB laradock_workspace latest 318c7dc4d367 3 months ago 696MB laradock_mysql latest 59affc42159e 3 months ago 343MB// 查看之前也可以,把 since 换成 before即可
以特定格式显示
// 显示镜像ID$ docker image ls -q00fd29ccc6f119a977a11685 a03f07cc3324 f4ad9b641995318c7dc4d36759affc42159e// 自定义结构(使用了Go的模板语法)$ docker image ls --format "{{.ID}}: {{.Repository}}"00fd29ccc6f1: ubuntu19a977a11685: laradock_redis a03f07cc3324: <none> f4ad9b641995: laradock_php-fpm318c7dc4d367: laradock_workspace59affc42159e: laradock_mysql b6dddb991dfa: redis// 以表格等距显示,并且有标题行$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"IMAGE ID REPOSITORY TAG00fd29ccc6f1 ubuntu 16.0419a977a11685 laradock_redis latest a03f07cc3324 <none> <none> f4ad9b641995 laradock_php-fpm latest318c7dc4d367 laradock_workspace latest59affc42159e laradock_mysql latest b6dddb991dfa redis latest
镜像、容器、数据卷所在空间
$ docker system df
注:因为需要统计的镜像的大小,所以执行会有些慢。
TYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 19 6 2.339GB 2.133GB (91%)Containers 19 0 292.9kB 292.9kB (100%)Local Volumes 17 0 0B 0BBuild Cache 0B 0B
虚悬镜像
上面的列表中,存在一个特殊的镜像,这个镜像既无仓库名也无标签,均为<none>。
这是由于新旧镜像同名,旧镜像名称被取消,所以出现仓库名、标签都为<none>的镜像,也就是虚悬镜像。
// 检索此类镜像$ docker image ls -f dangling=trueREPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> a03f07cc3324 3 months ago 15.5MB// 删除此类镜像$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B
注:
再次检索,可能还会有虚悬镜像存在,这是因为有其他镜像依赖。
删除本地镜像
$ docker image rm [选项] <镜像1> [<镜像2> ...]
<镜像>可以是镜像的ID(可以省略后面部分,但要有唯一性)、仓库名、摘要。
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 00fd29ccc6f1 3 weeks ago 111MB laradock_redis latest 19a977a11685 3 months ago 107MB<none> <none> a03f07cc3324 3 months ago 15.5MB laradock_php-fpm latest f4ad9b641995 3 months ago 400MB laradock_workspace latest 318c7dc4d367 3 months ago 696MB laradock_mysql latest 59affc42159e 3 months ago 343MB redis latest b6dddb991dfa 3 months ago 107MB // 删除 laradock_mysql 镜像(取ID的前三个字符) $ docker image rm 59a Untagged: laradock_mysql:latest Deleted: sha256:59affc42159e311116e8505d5012606607109ec7ad8c2c5219fa05c3e1908d2d Deleted: sha256:3cc7addd185366686786b581d02d88974978b45ecfbe9e836545271d3e7591e0 Deleted: sha256:295affe1cbf149bd05360a6fb9411d575506450f545ce69c08ce700ee341225f Deleted: sha256:40ff835efbee0a844c96ccb695cb99c4d1f22d44e78ba8cc210423323935f81e Deleted: sha256:cdb003b7b07a3b2d7809b31d25a77f3ed65bc1dc066f8f4868e5a86e9a77c723 Deleted: sha256:7a38549437804e837bd3cd5073555ce806640a654e011cc8933fb61974b5b2bc Deleted: sha256:54661a4bf02571f947385c6c1216d9207a54af5127390364c51499df93695717 Deleted: sha256:ebc2d72325235c58372407b2c85c57d514253b88f6f01ecbadd4387f845d7306 Deleted: sha256:a6daead3b1372f15bd02b3e7512ef11030bd2b7d3b641fb54aade329ddb267f7 Deleted: sha256:9689cfa85ce950b075b93d888b105e2aca2b2eed658732a31e20594fcf0ef404 // 使用镜像名删除 $ docker image rm laradock_workspace // 查看镜像摘要 $ docker image ls --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE ubuntu 16.04 sha256:fbaf303d18563e57a3c1a0005356ad102509b60884f3aa89ef9a90c0ea5d1212 00fd29ccc6f1 3 weeks ago 111MB laradock_redis latest <none> 19a977a11685 3 months ago 107MB<none> <none> <none> a03f07cc3324 3 months ago 15.5MB laradock_php-fpm latest <none> f4ad9b641995 3 months ago 400MB laradock_workspace latest <none> 318c7dc4d367 3 months ago 696MB redis latest sha256:472c9a984607e6194dc2e645d23907738b77bf76ea0abcf870cbde741d5f650a b6dddb991dfa 3 months ago 107MB
注:
上面命令的运行输出信息
Untagged :表示满足删除条件的镜像标签,都取消,因为一个镜像可以有多个标签,只有当这个镜像的所有标签都取消了,才对触发删除操作,也就是 Deleted 表示的意思。考虑到Docker的多层存储结构,就算是删除操作,也只会删除没有任何镜像的依赖的层。
使用docker image ls 命令配合删除
// 删除所有仓库名为 laradock_php-fpm 的镜像$ docker image rm $(docker image ls -q laradock_php-fpm)// $(docker image ls -q laradock_php-fpm) 返回的是 laradock_php-fpm 镜像的ID// 注意 -q 的功能,所以是删除指定 ID 的镜像// 删除所有在 redis 之前的镜像(原理同上)$ docker image rm $(docker image ls -q -f before=redis)
作者:不器不争
链接:https://www.jianshu.com/p/e2ce48821824
共同学习,写下你的评论
评论加载中...
作者其他优质文章