docker学习笔记之镜像探析

镜像是容器运行的基础。 
docker run 镜像名 运行指令,后才能创建一个容器。 
容器是镜像的运行状态。 
如果将容器理解成一个程序运行的虚拟环境,那么镜像就是创建这个环境的模板,我们可以通过一个镜像,创建很多个独立运行的容器。

镜像的概念

镜像是一个包含程序运行时必要的环境和代码的 只读文件,它采用分层的文件系统,每一次改变以读写层的形式增加到原来的只读文件上。 
举个例子 
镜像的系统结构: 
kernel(启动文件系统bootfs)->ubuntu(根镜像,一般是操作系统)->mysql(镜像1)->nginx(镜像2)->可读写层。这是镜像从底层到高层的关系,高层分别依赖于底层。 
就像我们通过ubuntu镜像创建一个容器,你在这个容器上部署了mysql在将这个容器持久化成镜像,这样就成为镜像1,你再在这个镜像1上创建一个容器,部署nginx,将这个容器持久化成镜像2。 
这样你就可以看出了镜像的本质就是磁盘上一系列的文件的集合。镜像间并不是孤立,而是存在单向的文件依赖关系。类似git的原理。这种文件层叠共享机制,使得镜像占用磁盘空间小,易扩展,易传播。

COW在镜像中的应用

当我们在运行docker run指定镜像运行容器时,实际上是在这个镜像上创建一个空的可读写文件系统层。,可以把这个文件系统看做是一个临时的镜像,docker指定的镜像称为父镜像,父镜像的内容都是通过只读的方式挂载进来的,容器会读共享镜像内容,一旦发生变化,docker就会将父镜像中的内容复制到这个文件系统中,所有写操作都在文件系统中完成,不会影响父镜像。

posted on 2017-11-24 17:43  yaobo  阅读(104)  评论(0)    收藏  举报