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

开源
以下是linux container一些基本的技术,docker基本是实现了前五个的技术,用libcontainer做了一层封装,要实现一个完整的安全的container技术,docker还有一些路需要走,期待docker的完善……

 

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!

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

责任编辑:牛小雨 来源: 杨华辉的博客
相关推荐

2014-09-16 10:34:59

Docker达龙云

2014-09-17 15:44:42

DockerContainer虚拟化

2014-06-03 09:55:34

DockerLinux容器Ubuntu

2014-11-26 10:44:33

DockerOpenStack云计算

2020-11-05 11:14:29

Docker底层原理

2014-12-23 13:33:35

Dockercontainerimage

2021-07-23 13:34:50

MySQL存储InnoDB

2021-09-09 12:01:13

Linux内核f宏

2016-09-20 21:32:16

DockerLinux Names

2016-09-20 22:04:55

Docker Linux Names

2017-03-22 09:39:09

Docker数据容器

2014-11-11 15:25:00

Dockerambassador云计算

2019-10-16 16:33:41

Docker架构语言

2015-09-09 10:34:58

底层网络技术网络技术

2014-08-20 09:49:50

虚拟机Linux Conta

2019-06-20 11:17:26

Linux底层体系

2018-11-28 15:01:44

老龄化物联网IOT

2019-11-07 23:06:55

区块链数据存储去中心化

2014-11-26 09:09:10

AmazonAWSEC2 Contain

2019-11-11 15:52:15

KVMLinuxQemu
点赞
收藏

51CTO技术栈公众号