Docker-docker镜像
前言
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
查看安装的Docker版本信息:
[dockuser@localhost Desktop]$ docker version
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:23 2017
OS/Arch: linux/amd64Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:49 2017
OS/Arch: linux/amd64
Experimental: false
[dockuser@localhost Desktop]$
Docker api版本为1.32
一、下载镜像
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
- Docker Registry地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
- 仓库名:如之前所说,这里的仓库名是两段式名称,既 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
比如
docker pull ubuntu:14.04
命令中没有给出 Docker Registry 地址,因此将会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:14.04
,因此将会获取官方镜像 library/ubuntu
仓库中标签为 14.04
的镜像。
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
如:docker image pull ubunut:17.10
二、查看镜像
查看所有的本地镜像
docker images
展示的镜像列表:
列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间。
镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签。因此,在上面的例子中,我们可以看到 ubuntu:16.04
和 ubuntu:latest
拥有相同的 ID,因为它们对应的是同一个镜像。
占用空间
由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。
在 Docker 1.13+ 版本中可以你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。
docker system df
虚悬镜像
查看虚悬镜像
docker images -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
docker rmi $(docker images -q -f dangling=true)
在 Docker 1.13+ 版本中你可以便捷的使用以下命令来删除虚悬镜像。
docker image prune
中间层镜像
为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认的 docker images
列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a
参数。
$ docker images -a
列出部分镜像
不加任何参数的情况下,docker images
会列出所有顶级镜像,但是有时候我们只希望列出部分镜像。docker images
有好几个参数可以帮助做到这个事情。
根据仓库名列出镜像
$ docker images ubuntu
列出特定的某个镜像,也就是说指定仓库名和标签
$ docker images ubuntu:16.04
docker images
还支持强大的过滤器参数 --filter
,或者简写 -f
。之前我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。比如,我们希望看到在 mongo:3.2
之后建立的镜像,可以用下面的命令:
$ docker images -f since=mongo:3.2
想查看某个位置之前的镜像也可以,只需要把 since
换成 before
即可。
此外,如果镜像构建时,定义了 LABEL
,还可以通过 LABEL
来过滤。
$ docker images -f label=com.example.version=0.1
以特定格式显示
默认情况下,docker images
会输出一个完整的表格,但是我们并非所有时候都会需要这些内容。比如,刚才删除虚悬镜像的时候,我们需要利用 docker images
把所有的虚悬镜像的 ID 列出来,然后才可以交给 docker rmi
命令作为参数来删除指定的这些镜像,这个时候就用到了 -q
参数。
$ docker images -q