--------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/chinagissoft
QQ群:16403743
宗旨:专注于"GIS+"前沿技术的研究与交流。将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方式
转载说明:文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!
--------------------------------------------------------------------------------------
现在,Docker越来越在IT界深入人心,事实上我们应该感谢它的前身。dotCloud,一家专注于PaaS的云平台公司。我们能够訪问它的官网去了解很多其它:https://www.dotcloud.com/
那么Docker是怎样实现?
首先。最早的容器技术是基于Linux的LXC,随着技术的不断发展,使用libcontainer来取代LXC,因为libcontainer是使用go语言编写的,而Dockers就是基于go语言开发的,所以Docker如今与容器有天然的结合,随着Docker的不断发展。相信Google也会在go语言的推广方面更上一个台阶。
只是最为关键就是Docker採用aufs文件系统来管理镜像和容器。
AUFS
所谓AUFS(Advanced multi layer unification filesystem)。也称之为高级的多层的联合文件系统,它能够实现多个不同的文件夹的内容合并在一起,并且实现Read-Only和Read-Write文件夹的共存。
比如,这是一个Docker执行实例。那么桔黄色部分就是我们所说的Root FS,红色的部分为可写。蓝色的为仅仅读,该容器能够共享Fa和Fb。当然也能够将扩展属于自己的Fc,这样的机制特别适合于共享同一个文件基础,每个在该文件基础的执行实例还包含自己的文件信息。
Docker怎样使用aufs
Docker使用aufs来实现分层的文件系统的管理,对于Docker来说有两个概念,镜像和容器,普通情况下熟悉虚拟化的朋友也应该比較好理解。镜像和虚拟机实例。普通情况下,镜像我们觉得是仅仅读的,而容器我们觉得是可写的。
比如上图。该宿主OS里面包括两个容器。桔黄色容器和蓝色容器。桔黄色容器为例,该容器是从一个busybox的镜像生成的,在该镜像基础上加入了自己的内容,构建了当前桔黄色容器的状态。当然我们也能够将当前状态也生成一个镜像。就好比蓝色容器的emaces镜像和Apache镜像。
所以Image类似一个单链表系统。每个Image包括一个指向Parent image的指针。假设没有了Parent Image的镜像事实上就是Os的Kernel了。
Docker的局限性
当然,Docker技术还是一个新技术,还有非常多局限性须要注意:
1、它仅仅能给予Linux64。不支持32位,当然这个条件对于遍地64位环境来说并非多大的局限。
2、眼下Docker的宿主机OS还仅仅能是Linux,当然也听说Windows 2016 Server也支持容器,也很期待。
3、Docker的隔离性方面相比較KVM等虚拟化技术还有所欠缺
4、容器採用Cgroup和Resource control 对于CPU度量比較难,所以一般公共环境的度量往往採用内存指标
5、Container是随着用户进程的停止而销毁的
Docker的发展方向
关于Docker的发展方向。通过这一张图能够看到,Docker急需在网络(两个小乌龟打电话),安全(锁),以及容器引擎方面进行完好。