docker在之前一年可以说是一个很流行,受欢迎的技术,用大家的话来说改变了以往依赖开发部署的方式。和docker的图标一样,docker就像一个集装箱,冯管你是什么都把你装起来运送到各个地方去。
在我看来docker中有以下几个概念是我们要格外注意的:
1.镜像(Images)
2.容器(Container)
3.仓库(Registry)
1.镜像:
镜像是docker的基础,在我看来这就是静态的docker,动起来的docker就是容器,我们可以使用 sudo docker run命令来将镜像转化为容器,而此时我们的容器就是可以运行的应用程序啦。那么镜像到底是什么呢?其实镜像在我看来就是 操作系统之于应用程序的作用,我们都知道应用程序必须要跑在操作系统上面才有功能,同样docker也必须跑在镜像之上(准确来说是构建在镜像之上)。在docker中镜像都是只读的,docker运用了联合加载技术将多个只读的镜像加载起来(此时的多个镜像都是以栈的形式叠加在一起的都是只读的,下一层的镜像是上一层的镜像的父镜像)当我们使用run命令创建容器的时候,在镜像的顶层添加一层读写层,此时我们在容器中所有的修改都会叠加在镜像之上。比如我们修改了/etc/log 的目录文件,此时docker会使用写时复制技术将修改的内容覆盖在原有的镜像之上。对于这个技术我联想到git,git会在每次我们提交新的代码的时候,检查到我们的修改,只将我们修改的内容提交上去。因为基于此,docker构建的内容其实是很小化的,因为我们只构建修改量。这主要得益于docker优异的文件系统。另外一点要注意的是,当我们创建完容器后,容器会被转移至内存。基于此,docker的运行速度还是相当快的。
待续。。。