首页 > 系统服务 > 详细

Docker(linux container) 所依赖的底层技术

时间:2014-08-19 18:33:15      阅读:373      评论:0      收藏:0      [点我收藏+]

1 Namespace

用来做PID的隔离,有了namespace,在docker container里头看来,就是一个完整的linux的世界。在host看来,container里的进程,就是一个普通的host进程,namespace提供这种pid的映射和隔离效果,host承载着container,就好比造物者创造一个个世外桃源。

2 Cgroups

在我的另外一篇博文里,有详细介绍cgroup如何做到内存,cpu和io速率的隔离,移步cgroups

3 Chroot

如何在container里头,看到的文件系统,就是一个完整的linux系统,有/etc、/lib 等,通过chroot实现

4 Veth

container里,执行ifconfig可以看到eth0的网卡,如何通信呢?其实是在host上虚拟了一张网卡出来(veth73f7),跟container里的网卡做了桥接,所有从container出来的流量都要过host的虚拟网卡,进container的流量也是如此。

5 Union FS

对于这种叠加的文件系统,有一个很好的实现是AUFS,在Ubuntu比较新的发行版里都是自带的,这个可以做到以文件为粒度的copy-on-write,为海量的container的瞬间启动,提供了技术支持,也会持续部署提供了帮助。不过以文件为粒度的copy-on-write带来一个问题,就是修改大文件时候,需要复制整个大文件进行修改,效率堪忧。

6 Iptables, netfilter

主要用来做ip数据包的过滤,比如可以做container之间无法通信,container可以无法访问host的网络,但是可以通过host的网卡访问外网等这样的网络策略

7 TC

主要用来做流量隔离,带宽的限制

8 Quota

用来做磁盘读写大小的限制,区别于cgroups对blkio的控制,quota是用来限制用户可用空间的大小

9 Setrlimit

可以限制container中打开的进程数,限制打开的文件个数等

 

抛砖引玉,希望大家对每一点技术做更加深入的了解与探索。以上是linux container一些基本的技术,docker基本是实现了前五个的技术,用libcontainer做了一层封装,要实现一个完整的安全的container技术,docker还有一些路需要走,期待docker的完善,大家可以多多关注这个2014年度最热的开源技术,docker!

Docker(linux container) 所依赖的底层技术,布布扣,bubuko.com

Docker(linux container) 所依赖的底层技术

原文:http://www.cnblogs.com/yanghuahui/p/3922576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!