【问题标题】:Use tc to throttle Docker container's outgoing network bandwidth使用 tc 限制 Docker 容器的传出网络带宽
【发布时间】:2016-04-26 17:16:44
【问题描述】:

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

【问题讨论】:

    标签: docker bandwidth-throttling trafficshaping


    【解决方案1】:

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

    查看official documentation,了解如何将带宽限制应用于此类。

    注意:--storage-driver=devicemapper-e lxc选项适用于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
    

    【讨论】:

    • 谢谢。我试过 net_cls 但没有用。是因为我没有使用 LXC 抽象吗?稍后我会尝试 LXC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2011-09-12
    相关资源
    最近更新 更多