限制Docker容器上下行带宽

Lkeme SVIP+

前言

在某些国内云服务器商,如果服务器带宽较小或者有Docker容器会跑满服务器带宽。
持续的高上下行,可能会收到一些服务器警告,或者怀疑被攻击而被封禁。
这个时候需要限制一些流量的进出带宽,以下针对Linux环境操作。

正文

安装WonderShaper

WonderShaper是一个允许用户限制一个或多个网络适配器带宽的脚本,依赖于tc流量控制工具。

以下命令都基于root权限执行,否则请使用sudo前缀执行。

1
2
3
4
5
6
# 拉取仓库
$ git clone https://github.com/magnific0/wondershaper.git
# 测试
$ cd wondershaper && ./wondershaper -h
# 安装到系统
$ make install

注意一些服务器未安装tc流量控制工具,需要进行额外安装。

1
2
3
4
# Centos 8
$ yum install -y iproute-tc
# Ubuntu
$ apt-get install iproute2

使用WonderShaper限流

查看需要的网卡名称

这里以docker的网卡为例,当然有需要限制其他网卡同理。

1
2
$ ip addr
$ ip addr show

设置网卡上下行

docker0为网卡名称,-d为下行、-u为上行,单位为Kbps

1
2
3
4
5
6
# 限制docker0网卡为2M的上下行
$ wondershaper -a docker0 -d 2048 -u 2048
# 只限制下行
$ wondershaper -a docker0 -d 2048
# 只限制上行
$ wondershaper -a docker0 -u 2048

查看网卡状态

1
$ wondershaper -s -a docker0

恢复网卡上下行限制

1
$ wondershaper -c -a docker0

使用iftop查看限流状态

iftop是监控某个应用或网卡流量的工具。
这里只是为了方便终端查看。也有其他同类型的,比如nload、nethogs等等。

安装

这里仅以Centos为例

1
$ yum install -y iftop

使用

显示本机所有进程的进出流量

1
$ iftop

查看指定网卡的进出流量

1
$ iftop -i docker0

显示端口信息

1
$ iftop -i docker0 -P

End

其他工具: vnstat

本环境是因为没有多余的容器,所以直接限制的docker0网卡不会影响到其他服务。

有其他单独需求,限制单个容器的虚拟网卡应该同理。

  • 标题: 限制Docker容器上下行带宽
  • 作者: Lkeme
  • 创建于 : 2024-04-15 14:25:52
  • 更新于 : 2024-05-15 18:51:35
  • 链接: https://mudew.com/2024/04/15/限制Docker容器上下行带宽/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论