Docker中镜像、容器、仓库三者之间的关系
镜像:
定义:
镜像只是一个静态的、只读的模板,包括了创建容器所需的文件系统、依赖库、和配置。类似于操作系统之中的安装光盘或虚拟机的磁盘镜像。
特点和作用
特点:
- 分层存储:镜像由多个只读层(Layer)叠加而成,每一层代表一个修改步骤(如安装软件)
- 不可变性:镜像一旦被创建,内容不可更改,任何的修改操作就会生成新层。
作用:
提供容器运行时候的基础环境。
容器:
定义:
容器是镜像的运行实例。它基于镜像创建,并添加一个可写层(读写层),允许在运行时修改文件系统。
特点
- 容器共享主机内核,资源占用少。
- 每一个容器都拥有独立的进程、网络和文件系统。
- 容器的数据数据默认随着容器的删除而删除(要想实现容器数据的持久化需要将数据挂载在宿主机的某个文件夹下面)
与镜像之间的关系:
- 容器是基于镜像创建的
- 容器的可以简单的理解为在原有的镜像基础上面又加了一个读写层。(如果不明白的话可以搜一搜什么是联合文件系统)
仓库
定义:
就是集中存储和分发镜像的地方,就类似于代码仓库,DockerHub就类似于GitHub一样,分为远程仓库和本地仓库。
作用:
- 分发镜像(docker pull/push)。
- 管理镜像版本(通过标签区分不同版本)。
三者之间的关系
镜像作为模板,可以通过docker run 实例化多个容器,容器可以通过docker commit 来生成新的镜像。(前面我已经说了,容器就是在镜像的基础上面加上了一层读写),镜像通过仓库实现共享与版本管理。