一、镜像(Image)
- Docker镜像是一个特殊的文件系统,提供了容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
- 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
- 初学者可以将镜像理解为一个系统ISO文件(它不是!!), 但其实它是一个多层(layer)结构的文件系统, 每一层都是在前一层的基础上构建的。每一层构建完就不会再发生改变了,后一层上的任何改变只发生在自己这一层。
二、容器(Container)
- 镜像(Image)和容器(Container)的关系,类似于面向对象程序设计中的 类 和 实例的关系,镜像是文件的概念,容器是镜像运行时的进程。
- 容器在启动时,会以镜像为基础层,创建一层存储层作为最上层
- 容器存储层的生命周期和容器一样,容器被删除时,容器存储层也随之消失。
- 容器有自己的进程空间、网络配置、文件系统
三、注册服务(Registry)和仓库(Repository)
- 注册服务是开放给用户上传、下载和管理镜像的服务。公开的服务允许用户免费上传、下载公开的镜像, 并可能提供收费服务供用户管理私有镜像。注册服务包含多个仓库(repository).
- 仓库是集中存放Docker镜像文件的场所, 仓库包含多个镜像(image), 每个镜像还有不同的标签(tag).
- 有时候会把仓库和注册服务混为一谈,并不严格区分。
四、举例说明
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.9.2 5cb3aa00f899 2 weeks ago 5.53MB
centos 7.6.1810 d5f224905a66 3 months ago 202MB
- <REPOSITORY:TAG>可表示一个具体的镜像, 作用等同于IMAGE ID。<REPOSITORY>所表示的镜像, 它的tag默认为latest.
- 以上都是Docker Hub的公开镜像,REPOSITORY列只显示仓库名; 私有镜像在REPOSITORY的显示为<Registry:Repository>