“ Docker和基本概念包含三部分。镜像、容器、仓库。这三个基本概念构建了Docker的整个生命周期。”

今天继续学习Docker.
01
—
Docker镜像
大家在安装系统的时候应该都用过系统镜像,Linux,Windows等相关的系统镜像。而Docker的镜像类似于虚拟机中的镜像,提供一个只读的模版,包含一个独立的文件系统,运行所需配置等用于安装容器。
例如:一个镜像可以包含一个完整CentOS或Ubuntu的操作系统环境与用户所部署的其他的应用程序。
Docker提供了一个简单机制来创建或者更新现有的镜像,同时用户还可以直接从其他的地方获取所需的镜像用于直接生成容器环境。
Docker的镜像不包含任何的动态数据,镜像内容在构建之后也不会发生改变。
Docker镜像是分层存储的,分层存储就是镜像在构建时会进行一层一层的存储,每一层的镜像在构建完成后就不会发生改变,后一层的任何改变都只会发生在自己所在的层。所以再构建镜像时需要注意对于额外的东西应该再构建前进行删除。
02
—
Docker容器
容器与镜像的关系就像是面向对象语言中的`类`与`实例`的关系。
镜像是一种静态的定义而实例则是由镜像生成的运行时实体。容器可以被创建、删除、运行、停止、暂停等。
Docker的每个容器都是相互隔离的,保证安全的平台。容器可以看做一个简易的Linux环境,而容器的实质是一个进程,它本身有一套属于自身独立的`命名空间`,因此容器拥有自身root文件系统、网络配置、进程空间等。容器内的进程运行在一个隔离的环境中,但是在实际使用的时候就像是在宿主机的操作系统重一样。
镜像在存储时使用的是分层存储,容器同样如此。容器在运行时会以镜像为基础层,在其上创建当前容器的存储层。容器存储层的声明周期随着容器的消亡而消亡,所以任何保存于容器的信息都会随之消除。按照Docker的一般要求,容器不应该向其存储层写入任何的数据。容器数据的保存应该使用Volume或者绑定宿主机的目录。
03
—
Docker仓库
用过Git的朋友应该大概理解仓库的意思。Docker的仓库与Git仓库的意思基本一致。Docker镜像在构建完成后,需要在其他的服务器进行部署时需要获取该镜像那么则可以通过仓库获取。
下图为阿里云镜像仓库

Docker仓库分为私有仓库与公有仓库。公有仓库最大的就是DockerHub。存储大量的镜像供用户进行下载。而私有仓库是用户在本地网络环境构建的Docker仓库,用于存储用户的系统镜像,应用程序镜像等。




