docker运行wonderShaper实现网卡限速
·
一、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 命令进入容器内部测试

三、源码放送
有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!
-over-
更多推荐



所有评论(0)