1.镜像的基础知识
- 镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象
- 镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包
- 因为容器的设计初衷就是快速和小巧,所以镜像通常都比较小
- 拉取操作会将镜像下载到本地 Docker 主机,可以使用该镜像启动一个或者多个容器
- 镜像就像停止运行的容器。实际上,可以停止某个容器的运行,并从中创建新的镜像
- 在该前提下,镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(run-time)结构,如下图所示:
- 一旦容器从镜像启动后,二者之间就变成了互相依赖的关系,并且在镜像上启动的容器全部停止之前,镜像是无法被删除的
- 尝试删除镜像而不停止或销毁使用它的容器,会导致出错
- 容器目的就是运行应用或者服务,这意味着容器的镜像中必须包含应用/服务运行所必需的操作系统和应用文件
- 但是,容器又追求快速和小巧,这意味着构建镜像的时候通常需要裁剪掉不必要的部分,保持较小的体积
- Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构
- 文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上
- 当容器启动后,所有镜像都会统一合并到一个进程中
- 联合文件系统中的文件被