我正在尝试对 Docker 容器进行带宽限制。为了限制下行带宽,我可以先找到容器的veth接口,使用tc tc qdisc add dev vethpair1 root tbf rate 1mbit latency 50ms burst 10000
:。如果我想限制上行带宽,我需要指定--cap-add=NET_ADMIN
何时启动容器并在容器eth0
内使用相同的 tc 命令。是否有任何非侵入性的方法可以做到这一点,以便我可以管理任何容器而不赋予它特权?
问问题
2903 次
1 回答
3
您可以告诉 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 客户端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
于 2016-04-27T18:48:25.397 回答