镜像是 Docker 的三大核心概念之一。Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的镜像,Docker 会尝试从默认的镜像仓库下载。当然用户也可以通过配置,使用自定义的镜像仓库。
本文将介绍镜像的具体操作,包括使用 pull 命令从 Docker Hub 的镜像仓库中拉取(下载)公共镜像;查看本地已有的镜像信息;使用 search 命令搜索镜像;删除镜像标签和镜像文件;创建用户自定义镜像并上传到 Docker Hub 镜像仓库。
与镜像相关的操作都被定义在 docker image 子命令中,虽然不带 image 的格式依然被兼容,但带上 image 后会让命令更容易理解,也会有更好的自动补全效果。
获取镜像
本地镜像是运行容器的前提,所以在运行容器前我们需要使用 docker image pull 命令从网络上的镜像仓库把镜像拉取到本地。该命令的格式为:
docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
如果只指定了镜像的名称,默认会选择拉取 latest 标签标记的镜像。比如我们要拉取最新的 Ubuntu 镜像:
$ docker image pull ubuntu
该命令实际拉取的是 ubuntu:latest 镜像,当前的最新版本为 16.04。从上图中可以看到,docker 的镜像其实被分成了很多的层,每层保存一些特定的文件。上面的命令实际相当于:
$ docker image pull registry.hub.docker.com/ubuntu:latest
即从默认的数据仓库服务器 registry.hub.docker.com 中拉取 ubuntu 仓库中的最新镜像。如果我们感觉从 Docker Hub 上拉取镜像太慢,可选择从其它的数据仓库服务器上拉取,比如 Docker Hub 在国内部署的服务器:
$ docker image pull registry.docker-cn.com/library/ubuntu:latest
镜像下载到本地后就可运行容器了,比如:
$ docker run --rm ubuntu echo hello docker
查看镜像信息
使用 docker image ls(或 docker images) 命令可以列出本地存储的镜像:
$ docker image ls