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

本文详细介绍了Docker所依赖的九项关键技术:Namespace用于进程ID的隔离;Cgroups实现资源限制;Chroot创建独立文件系统;Veth实现网络虚拟化;UnionFS支持文件系统的增量更新;Iptables和Netfilter实现网络策略;TC控制网络流量;Quota限制磁盘使用;Setrlimit设置进程限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.  Namespace

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

2.  Cgroups

cgroup用于内存,cpu和io速率的隔离。

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中打开的进程数,限制打开的文件个数等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值