## Docker 获取镜像

之前提到过,[Docker Hub](https://hub.docker.com/) 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。

从 Docker 镜像仓库获取镜像的命令是 `docker pull`。其命令格式为:
```
# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

```

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
比如:
```
# 向docker拉取,最小化的jre 1.8的运行环境(anapsix/alpine-java 项目名称name,8_server-jre_unlimited为标签tag)
docker pull anapsix/alpine-java:8_server-jre_unlimited
```


从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。

### 查看已下载镜像列表
`docker images`  或 `docker image ls`

```
[root@localhost ~]# docker images
REPOSITORY            TAG                      IMAGE ID            CREATED             SIZE
anapsix/alpine-java   8_server-jre_unlimited   49d744fbb526        5 months ago        126MB
```

### 删除镜像
`docker image rm IMAGE_ID|NAME [IMAGE_ID|NAME...]` 或 `docker rmi IMAGE_ID|NAME [IMAGE_ID|NAME...]`

### 清空虚悬镜像

docker在构建了一个新的镜像(名字和tag都一样的)之后,旧的那个镜像就会变成一个虚悬镜像(旧的镜像就没有名字了),此时旧的镜像就没啥用了,可以一件清空

`docker image prune`