找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 21|回复: 0

[互助问答] 请问如何对单个docker实例进行网速的限制?

[复制链接]

1

主题

10

回帖

146

积分

管理员

积分
146
发表于 2025-10-15 00:49:01 | 显示全部楼层 |阅读模式

可以问ai啊

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

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

步骤

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

    bash
    复制
    # 1. 获取容器的 PIDdocker 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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站由纳斯五零(NAS50.CN),版权所有,保留部分权利。豫ICP备2023035803号-1

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-10-24 07:07 , Processed in 0.097978 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表