🍁简介
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。
🍁获取镜像
1.Docker Hub 上有大量的高质量的镜像可以用,从 Docker 镜像仓库获取镜像的命令是 docker pull。
- 命令格式:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
2.具体的选项可以通过 docker pull --help 命令看到。
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。
- 默认地址是 Docker Hub。
- 仓库名:仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
$ docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
bf5d46315322: Pull complete
9f13e0ac480c: Pull complete
e8988b5b3097: Pull complete
40af181810e7: Pull complete
e6f7c7e5c03e: Pull complete
Digest: sha256:147913621d9cdea08853f6ba9116c2e27a3ceffecf3b492983ae97c3d643fbbe
Status: Downloaded newer image for ubuntu:16.04
3.上面的命令中没有给出 Docker 镜像仓库地址,因此会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:16.04,因此将会获取官方镜像 library/ubuntu 仓库中标签为 16.04 的镜像。
- 从 Docker Hub下载镜像非常缓慢,可以根据镜像加速器配置加速器。
- 有了镜像后,就能够以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:16.04 为例,启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。
$ docker run -it --rm \
ubuntu:16.04 \
bash
root@e7009c6ce357:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.4 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
- 参数说明
- -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。
- –rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。
- ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器。
- bash:放在镜像名后的是命令,希望有个交互式 Shell,因此用的是 bash。
- 进入容器后,可以在 Shell 下操作,执行任何所需的命令。这里执行了 cat /etc/os-release,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 16.04.4 LTS 系统。
- 通过 exit 退出这个容器。
🍁列出镜像
- 要想列出已经下载下来的镜像,可以使用 docker image ls 命令
$ docker image ls
- 列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。
- 镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签ubuntu:16.04 和 ubuntu:latest 拥有相同的 ID,因为它们对应的是同一个镜像。
🔥镜像体积
- 通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。
$ docker system df
🔥中间层镜像
- 为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像,默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数。
$ docker image ls -a
🔥虚悬镜像
- 这个镜像既没有仓库名,也没有标签,均为
<none> <none> 00285df0df87 15 days ago 342 MB
- 无标签镜像也被称为 虚悬镜像,可以用下面的命令专门显示这类镜像:
$ docker image ls -f dangling=true
- 虚悬镜像是可以删除的,可以用下面的命令删除。
$ docker image prune
🍁删除本地镜像
1.删除本地的镜像,可以使用 docker image rm 命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]
2.用 ID、镜像名、摘要删除镜像
$ docker image ls
3.删除 redis:alpine 镜像
$ docker image rm 501
4.使用镜像名,也就是 <仓库名>:<标签>,来删除镜像
$ docker image rm centos
5.使用镜像摘要 删除镜像。
$ docker image ls --digests
6.docker image ls 命令来配合
- 需要删除所有仓库名为 redis 的镜像
$ docker image rm $(docker image ls -q redis)
- 删除所有在 mongo:3.2 之前的镜像
$ docker image rm $(docker image ls -q -f before=mongo:3.2)