一、wondershaper介绍

WonderShaper是一款Linux下的网络带宽控制工具,自2002年由Bert Hubert首次发布,后经多代人改进和增强。它利用iproute的tc命令来轻松地限制网络适配器的带宽,帮助用户更有效地管理网络流量。现在它提供了命令行接口,并使用HTB(Hierarchical Token Bucket)队列取代了CBQ,使其在高速网络环境下表现更出色。

二、docker运行wonderShaper

1、镜像构建

Dockerfile

#基础镜像
FROM alpine:latest

#拷贝
COPY wondershaper1.4.1/wondershaper /usr/local/bin/

#安装tc、bash
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone \
    && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update \
    && apk add iproute2 && apk add --no-cache bash \
    && chmod +x /usr/local/bin/wondershaper && dos2unix /usr/local/bin/wondershaper

#保持运行
CMD ["tail", "-f", "/dev/null"]

如果需要java环境,可修改为
FROM openjdk:8-jre-alpine
或者
FROM adoptopenjdk/openjdk8-openj9:alpine-slim

打包脚本 img-build.sh

#!/bin/bash
docker build -t registry.cn-shanghai.aliyuncs.com/00fly/wondershaper:1.4.1 .

执行打包输出
在这里插入图片描述

2、容器编排

docker-compose.yml

services:
  wondershaper:
    image: registry.cn-shanghai.aliyuncs.com/00fly/wondershaper:1.4.1
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    container_name: wondershaper 
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 128M
        reservations:
          cpus: '0.05'
          memory: 64M
    volumes:
      - /lib/modules:/lib/modules
    restart: on-failure
    network_mode: host
    logging:
      driver: json-file
      options:
        max-size: '5m'
        max-file: '1'

使用host网络、并赋予NET_ADMIN、SYS_MODULE角色,并执行/lib/modules文件映射,否则wonderShaper可能执行失败。

3、启动容器

restart.sh

#!/bin/bash
docker-compose down && docker-compose up -d

在这里插入图片描述

4、执行wonderShaper

执行docker exec -it wondershaper sh 命令进入容器内部测试
在这里插入图片描述

三、源码放送

点击下载

Git项目代码打包下载神器实现


有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐