使用tc来限制Docker容器的传出networking带宽

我正在尝试对Docker容器进行带宽限制。 为了限制下行带宽,我可以先find容器的veth接口,并使用tc: tc qdisc add dev vethpair1 root tbf rate 1mbit latency 50ms burst 10000 。 如果我想限制上行链路的带宽,我需要指定--cap-add=NET_ADMIN当我启动容器并在容器内的eth0上使用相同的tc命令时。 有没有非侵入性的方式来做到这一点,以便我可以pipe理任何容器而不给予它特权?

你可以告诉Docker在底层使用LXC:使用-e lxc选项。

 Create your containers with a custom LXC directive to put them into a **traffic class** : `docker run --lxc-conf="lxc.cgroup.net_cls.classid = 0x00100001" your/image /bin/stuff` 

查看有关如何将带宽限制应用于此课程的官方文档 。

注意:– --storage-driver=devicemapper-e lxc选项适用于Docker 守护进程 ,不适用于运行docker run .......时使用的Docker客户端docker run .......

你也可以这样做:

 mkdir /var/run/netns ln -sf /proc/`docker inspect -f '{{ .State.Pid }}' YOUR_CONTAINER`/ns/net /var/run/netns/SOME_NAME ip netns exec SOME_NAME iptables -L -nv 
Interesting Posts