gpt4 book ai didi

docker - 如何对 docker 容器上的网络流量进行速率限制

转载 作者:行者123 更新时间:2023-12-02 06:50:20 46 4
gpt4 key购买 nike

我想为对等 2 对等应用程序设置一个 docker 容器。此应用程序没有应用程序级别速率限制,因此我尝试在容器级别设置限制。我想对除应用程序 Web UI 使用的端口之外的所有端口上的传出和传入连接进行速率限制。

最佳答案

我很惊讶找到这个问题的答案是多么困难。各种论坛上的大多数答案都是不正确的(我用两个 iperf3 节点测试了它们,发现这些解决方案不起作用或只限制一个方向的流量(仅传入或仅传出)。具有更多对称数据使用的 P2P 应用程序与传统的客户端/服务器应用程序相比,因此必须限制两个方向的流量。

我发现限制 Docker 容器的网络带宽(传入和传出)的最佳方法是在运行的容器中使用 Linux 自己的流量控制设置。在启动 P2P 应用程序之前在容器内执行 tc 命令。

例如,您可以创建如下所示的启动脚本,将其复制到 Docker 镜像中并将其作为入口点调用。

Dockerfile(片段):

COPY start-my-p2p.sh /
RUN chmod +x /start-my-p2p.sh
ENTRYPOINT /start-my-p2p.sh

将类似的内容放入您的 start-my-p2p.sh 中(tc 命令行可能是您一直在互联网上搜索的内容):

#/bin/sh

# Limit all incoming and outgoing network to 1mbit/s
tc qdisc add dev eth0 handle 1: ingress
tc filter add dev eth0 parent 1: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 1mbit burst 10k drop flowid :1
tc qdisc add dev eth0 root tbf rate 1mbit latency 25ms burst 10k`

# Now start your p2p application
myp2pservice -d

重要提示:启动容器时,您需要使用--cap-add=NET_ADMIN:

docker run --rm -it --cap-add=NET_ADMIN -p6969:p6969 myimage

关于docker - 如何对 docker 容器上的网络流量进行速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497523/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com