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

2024-05-15

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


你可以告诉 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` 

检查官方文档 https://www.kernel.org/doc/Documentation/cgroups/net_cls.txt关于如何对此类应用带宽限制。

注:--storage-driver=devicemapperand -e lxc选项适用于 Dockerdaemon,不适用于您运行时使用的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 tc 限制 Docker 容器的传出网络带宽 的相关文章

随机推荐