Docker可以实现网络IO隔离吗,怎么实现?


RT,现在在做资源隔离方面的东西,Docker可以实现CPU,内存的隔离,磁盘的IO隔离也可以通过systemctl实现,但是不知道网络IO隔离能不能实现,如果能该如何实现?
已邀请:

xds2000 - 数人科技CTO

赞同来自: DockOne Luffy 石海旭


这个问题我在Docker回答过,那就是网络带宽不是Docker需要关心的问题。因为这样简单的回答非常容易误导大家,我就在展开讲一下这里的问题点和实践内容。

目前对Docker的使用分为两大类,你要么把容器当系统中的一个进程,要么会把容器当一台虚拟机来使用。所以,最有可能提出这个需求的前提,你把容器当虚拟机使用,所以你要限制带宽。容器在实际使用中,构建的网络环境是往超级复杂的大型网络构建,结构非常简单,但规模增长速度非常快。这样的网络机构,如何管理每一个容器的带宽本身就是一个挑战,对一台主机来说,你已经限制了带宽,然后你想更细颗粒度的管理里面的容器带宽,但一旦你上了生产,你对容器的种类就会放开,各种不一样的容器都会上来,你任然要面对复杂的带宽管理策略问题,这不是一刀切就能解决的,给你的决策的容器占用条件是动态的,对任何人都是挑战。

所以,我再实际使用中并不限制容器的带宽,我们要做的就是监控带宽流量日志,让运维的重点在于实时监控网络流量,在运用监控脚本去管理容器,比如超过可控范围的容器就要杀掉并报警。这个问题的解决办法依赖于你要构建的系统是什么,我不便猜测并展开无用的讨论,但思路是明确的,实现网络IO隔离,本来容器中的网络就是隔离的,没有安全问题。网络本地走NAT没办法,肯定用同样的带宽。要么你独占,要么走bridge/ovs 或者OPENVSWITCH – SETTING A BANDWIDTH LIMIT

所有网络限制的方法都是和Docker无关的,这也间接看出来,Docker并不适合当虚拟机使用。

田浩浩 - wizmacau developer

赞同来自:


google到了一篇:供题主参考CPU,内存,IO隔离原文

要回复问题请先登录注册