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

我正在尝试对Docker容器进行带宽限制.

为了限制下行带宽,我可以先找到容器的veth接口并使用tc:tc qdisc add dev vethpair1 root tbf rate 1mbit latency 50ms burst 10000.如果我想限制上行带宽,我需要指定–cap -add = NET_ADMIN当我启动容器并在容器内的eth0上使用相同的tc命令时.是否有任何非侵入性的方法来做到这一点,以便我可以管理任何容器而不给予它特权? 最佳答案 您可以告诉Docker在引擎盖下使用LXC:使用-e lxcoption.

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` 

检查official documentation有关如何将带宽限制应用于此类.

注意:–storage-driver = devicemapperand -e lxcoptions用于Docker守护进程,而不是用于运行docker run ……..时使用的Docker客户端.

你也可以这样做:

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
点赞