Docker 下载镜像

文章首发我的网站: https://www.exception.site/docker/docker-pull-imagemysql

本文中,咱们将须要学习 Docker 如何下载镜像?sql

1、前言

你们都知道,镜像是 Docker 三大核心概念中最重要的。若是咱们想要在本地运行容器,就必须保证本地存在对应的镜像。因此,第一步,咱们须要下载镜像。当咱们尝试下载镜像时,Docker 会尝试先从默认的镜像仓库(默认使用 Docker Hub 公共仓库)去下载,固然了,用户也能够自定义配置想要下载的镜像仓库。docker

2、下载镜像

镜像是运行容器的前提,咱们能够使用 docker pull [IMAGE_NAME]:[TAG]命令来下载镜像,其中 IMAGE_NAME 表示的是镜像的名称,而 TAG 是镜像的标签,也就是说咱们须要经过 “镜像 + 标签” 的方式来下载镜像。bash

注意:您也能够不显式地指定 TAG, 它会默认下载 latest 标签,也就是下载仓库中最新版本的镜像。这里并不推荐您下载 latest 标签,由于该镜像的内容会跟踪镜像的最新版本,并随之变化,因此它是不稳定的。在生产环境中,可能会出现莫名其妙的 bug, 推荐您最好仍是显示的指定具体的 TAG。服务器

举个例子,如咱们想要下载一个 Mysql 5.7 镜像,能够经过命令来下载:学习

docker pull mysql:5.7

会看到控制台输出内容以下:网站

Docker 下载镜像

注意:因为官方 DockerHub 仓库服务器在国外,下载速度较慢,因此我将仓库的地址更改为了国内的 docker.io 的镜像仓库,因此在上图中,镜像前面会有 docker.io 出现。spa

当有 Downloaded 字符串输出的时候,说明下载成功了!!命令行

2、验证

让咱们来验证一下,本地是否存在 Mysql5.7 的镜像,运行命令:code

docker images

验证本地镜像是否存在

能够看到本地的确存在该镜像,确实是下载成功了!

3、下载镜像相关细节

再说说上面下载镜像的过程:

Docker 镜像下载

经过下载过程,能够看到,一个镜像通常是由多个层(layer) 组成,相似 f7e2b70d04ae这样的串表示层的惟一 ID。

PS: 实际上完整的 ID 包括了 256 个 bit, 64 个十六进制字符组成的。

**您可能会想,若是多个不一样的镜像中,同时包含了同一个层(layer),这样重复下载,岂不是致使了存储空间的浪费么?**实际上,Docker 并不会这么傻会去下载重复的层(layer),Docker 在下载以前,会去检测本地是否会有一样 ID 的层,若是本地已经存在了,就直接使用本地的就行了。

另外一个问题,不一样仓库中,可能也会存在镜像重名的状况发生, 这种状况咋办?

严格意义上,咱们在使用 docker pull 命令时,还须要在镜像前面指定仓库地址(Registry), 若是不指定,则 Docker 会使用您默认配置的仓库地址。例如上面,因为我配置的是国内 docker.io 的仓库地址,我在 pull 的时候,docker 会默认为我加上 docker.io/library 的前缀。

如:当我执行 docker pull mysql:5.7 命令时,实际上至关于 docker pull docker.io/mysql:5.7,若是您未自定义配置仓库,则默认在下载的时候,会在镜像前面加上 DockerHub 的地址。

Docker 经过前缀地址的不一样,来保证不一样仓库中,重名镜像的惟一性。

4、PULL 子命令

命令行中输入:

docker pull --help

会获得以下信息:

[root@iZbp1j8y1bab0djl9gdp33Z ~]# docker pull --help

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Pull an image or a repository from a registry

Options:
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)
      --help                    Print usage

咱们能够看到主要支持的子命令有:

  1. -a, --all-tags=true|false: 是否获取仓库中全部镜像,默认为否;
  2. --disable-content-trust: 跳过镜像内容的校验,默认为 true;

5、总结

本文中,咱们着重了解了 Docker 中如何下载镜像,下载镜像相关的细节,以及 Docker pull 相关子命令。祝您学习愉快!

相关文章
相关标签/搜索