Docker镜像

1.基本概念

docker镜像类似虚拟机镜像,可以理解为一个只读的模板。
例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或任何其他用户需要的软件)。可以把它称为一个Apache镜像。
镜像是创建docker容器的基础。
通过版本管理和增量的文件系统,docker提供了一种十分简单的机制来创建和更新现有镜像。用户也可以在网上直接下载一个做好的镜像,并直接使用

2.获取镜像

官方Docker Hub网站已经提供了数十万镜像共开发下载。
获取镜像命令格式:docker [image] pull NAME[:TAG]

  • NAME为镜像仓库的名称,用来区分镜像。
  • TAG为镜像的标签,通常用来标识镜像版本信息。
  • 通常,描述一个镜像需要包括“名称+标签”信息。

如下:为获取一个ubuntu 18.04系统的基础镜像。

$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
171857c49d0f: Pull complete 
419640447d26: Pull complete 
61e52f862619: Pull complete 
Digest: sha256:646942475da61b4ce9cc5b3fadb42642ea90e5d0de46111458e100ff2c7031e6
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

如上可以看出,镜像文件一般有很多层(layer)组成,每一层有一个171857c49d0f这样的串来标识。在docker pull 下载镜像过程中,会获取并输出镜像的各层信息。当多个镜像包含相同的层时,本地只会存储一份层的内容,减小了存储空间。

如果不显示指定TAG,会默认选择lastest标签,这回下载仓库中最新版本的镜像。
如下

$ docker pull ubuntu
Using default tag: latest
...
Status: Downloaded newer image for ubuntu:latest

一般lastet标签标识改镜像会跟随最新版本变更变化,从稳定性上不要在生产环境忽略TAG设置或使用默认的lastest标签

严格来说,镜像仓库名称应该添加仓库地址(即registry,注册服务器)作为前缀,只是默认使用的是官方Docker Hub服务,该前缀可以忽略。
例如:docker pull ubuntu:18.04
相当于 docker pull registry.hub.docker.com/ubuntu:18.04

如果不从官方下载的话则需要在仓库名称前指定完整的仓库地址。
例如:若从网易蜂巢的镜像源下载ubuntu:18.04,命令需要为:

$ docker pull hub.c.163.com/ubuntu:18.04

pull子命令支持的选项主要包含:

  • -a,–all-tags=true|false:是否获取仓库中的所有镜像,默认为否
  •  --disable-content-trust :忽略镜像的校验,默认开启
$ docker pull --all-tags=false  ubuntu:18.04 
$ docker pull  ubuntu:18.04

以上两个命令是相同的含义

$ docker pull -a ubuntu

下载该仓库中所有ubuntu镜像,Ctrl + C 可取消下载镜像。

$ docker pull --disable-content-trust  ubuntu:18.04

设置代理参考
docker HTTP/HTTPS proxy设置