--------------------------------------------------------------------------------------

Blog:    http://blog.csdn.net/chinagissoft

QQ群:

idkey=db34317167632c01ab4750de87c000ae63cf173cf6fcbbd724ae60213272da91">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文件夹的共存。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

比如,这是一个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的发展方向

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

关于Docker的发展方向。通过这一张图能够看到,Docker急需在网络(两个小乌龟打电话),安全(锁),以及容器引擎方面进行完好。

最新文章

  1. iOS字体加载三种方式
  2. Publishing failed with multiple errors 异常
  3. SQL Server的小数数值类型(float 和 decimal)用法
  4. Keeplived配置Nginx双机高可用
  5. 图解AngularJS Wijmo5和LightSwitch
  6. paip.解决 数据库mysql增加列 字段很慢添加字段很慢
  7. saltstack配置安装的一些关键步骤及安装时各种报错的分析
  8. Servlet一次乱码排查后的总结(转)
  9. EasyUI实例源码
  10. fmt命令
  11. Java 小型学生管理系统心得
  12. 《第一行代码》学习笔记29-内容提供器Content Provider(2)
  13. Java Web 入门(一)使用 Intellij IDEA 14.1.5 创建 Maven Web项目
  14. Hdu 5050 Divided Land
  15. WebService客户端添加SOAPHeader信息
  16. HttpClient和 HtmlParser实现爬虫
  17. Js中for循环的阻塞机制
  18. koala 的使用
  19. Spring_Four -- 团队项目设计完善&编码测试
  20. hdu 3613"Best Reward"(Manacher算法)

热门文章

  1. JDBC 具体解释(1)
  2. POJ1390 Blocks 【动态规划】
  3. SAN (Storage Attached Network),即存储区域网络
  4. php.ini配置文件参数优化
  5. Java基础——类和对象的初始化过程
  6. 浅谈SpringCloud (一) 什么是微服务和不使用SpringCloud怎么访问服务提供者
  7. java同步锁的正确使用
  8. for循环的写法及优化
  9. net-speeder 安装
  10. 【摘录】JAVA内存管理-JVM垃圾收集机制