收起左侧

请问如何对单个docker实例进行网速的限制?

2
回复
47
查看
[ 复制链接 ]

6

主题

5

回帖

0

牛值

江湖小虾

悬赏1飞牛币未解决

例如对单个的docker实例进行网速限制,启动时命令中应该如何填写?或者有其他方法?

image.png

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

3040

回帖

390

牛值

共建版主

社区共建团荣誉勋章飞牛百度网盘玩家

可以问ai啊

方法 1:使用 tc (Traffic Control) 直接限制容器网速

适用于所有网络模式(bridgehost、自定义等),但需要宿主机权限。

步骤

  1. 找到容器的虚拟网卡(veth)

    bash
    复制
    # 1. 获取容器的 PID
    docker inspect -f '{{.State.Pid}}' <容器名或ID>
    
    # 2. 进入容器的网络命名空间
    nsenter -t  -n ip a

    找到 eth0 对应的宿主机端 veth 设备(通常名称如 vethXXXXXX)。

  2. 使用 tc 限制带宽

    bash
    复制
    # 限制为 10Mbps(上传/下载均生效)
    tc qdisc add dev  root tbf rate 10mbit burst 256kbit latency 50ms
    
    # 查看限制
    tc qdisc show dev 
    
    # 删除限制
    tc qdisc del dev  root

方法 2:通过 --blkio-weight--device-read/write-bps(仅限磁盘 IO)

⚠️ 注意:Docker 原生参数(如 --blkio-weight)仅限制磁盘 IO,不能直接限制网络带宽。若需网络限速,需结合 tc 或第三方工具。


方法 3:使用 --network 和自定义桥接网络(推荐)

适用于 bridge 模式,通过创建自定义网络并设置 tc 规则。

步骤

  1. 创建自定义桥接网络
    bash
    复制
    docker network create --driver bridge my_limited_network
  2. 启动容器并加入该网络
    bash
    复制
    docker run --network my_limited_network --name my_container -d nginx
  3. 在宿主机上限制该桥接网卡(br-XXXXXX)的带宽
    bash
    复制
    # 找到自定义网络的桥接设备
    brctl show my_limited_network
    
    # 限制带宽(例如 5Mbps)
    tc qdisc add dev br-XXXXXX root tbf rate 5mbit burst 256kbit latency 50ms
我命由我不由天!是魔是仙,只有我自己说了算!

0

主题

3

回帖

0

牛值

江湖小虾

楼上太麻烦了 简单点用macvlan 路由器限速

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则