下面我将详细讲解(容器网络命名空间限速)的持久化配置步骤,确保在飞牛OS重启后自动生效。请严格按照顺序执行以下操作:

️ 完整持久化配置教程(带详细解释)

步骤1:确认容器魔方名称

# 查看运行的容器列表
docker ps # 从输出中找到容器魔方的名称(通常在NAMES列)
# 示例输出:
# CONTAINER ID IMAGE ... NAMES
# a1b2c3d4e5f6 wxedge-image ... wxedge

确认容器名称(如上例的 ​​wxedge​​),后续步骤将用到这个名称。容器魔方的名字默认wxedge

步骤2:创建限速脚本

# 创建脚本目录
sudo mkdir -p /opt/scripts # 创建脚本文件
sudo nano /opt/scripts/limit_container_traffic.sh

在编辑器中粘贴以下内容(​​记得替换 YOUR_CONTAINER_NAME 为你的实际容器名称​​):容器魔方的名字为wxedge

eth0是网卡名称,可以在飞牛OS中的网络设置中查看自己的网卡名称,替换自己的使用网卡即可

#!/bin/bash
# 容器名称(必须修改)
CONTAINER_NAME="wxedge" # 等待容器完全启动(重要!)
echo "等待容器启动..."
while ! docker inspect --format='{{.State.Running}}' $CONTAINER_NAME | grep -q "true"; do
sleep 3
done # 额外等待5秒确保网络初始化
sleep 5 # 获取容器PID
PID=$(docker inspect -f '{{.State.Pid}}' "$CONTAINER_NAME") if [ -z "$PID" ]; then
echo "错误:无法获取容器 $CONTAINER_NAME 的PID"
exit 1
fi # 应用上行带宽限制(20Mbps) 注意,如下是在飞牛OS中网络设置中看到的网卡名称,此处为eth0
echo "为容器 $CONTAINER_NAME (PID:$PID) 设置上行带宽限制..."
nsenter -t $PID -n tc qdisc replace dev eth0 root tbf \
rate 20mbit \
burst 320kbit \
latency 400ms # 检查结果
if [ $? -eq 0 ]; then
echo "成功设置上行带宽限制:20Mbps"
else
echo "限速设置失败!"
exit 2
fi

按 Ctrl+O 保存文件,然后 Ctrl+X 退出编辑器。

给脚本添加可执行权限:

sudo chmod +x /opt/scripts/limit_container_traffic.sh

步骤3:创建Systemd服务单元

# 创建服务配置文件
sudo nano /etc/systemd/system/container-bandwidth.service

粘贴以下内容:

[Unit]
Description=Container Bandwidth Limiter for Magic Container
After=docker.service
Requires=docker.service [Service]
Type=simple
ExecStart=/opt/scripts/limit_container_traffic.sh
Restart=on-failure
RestartSec=30
StartLimitInterval=0 [Install]
WantedBy=multi-user.target

保存并退出(Ctrl+O → Enter → Ctrl+X)

步骤4:启用并启动服务

# 重载systemd配置
sudo systemctl daemon-reload # 启用服务(开机自启)
sudo systemctl enable container-bandwidth.service # 立即启动服务
sudo systemctl start container-bandwidth.service

步骤5:验证服务状态

# 检查服务状态
sudo systemctl status container-bandwidth.service # 预期看到 "active (running)" 状态
# 检查日志(查看限速是否成功)
journalctl -u container-bandwidth.service -n 50 --no-pager

日志中应看到类似:

等待容器启动...
为容器 container_magic (PID:12345) 设置上行带宽限制...
成功设置上行带宽限制:20Mbps

步骤6:测试限速效果,理论上如果容器魔方正在上传,不需要测试,直接看效果,立竿见影。

飞牛OS系统中的UI界面有网速,看那个即可。比如之前是7Mb/s,限制完上传后变为了2.4Mb/s,速度根据自己需求调整

  1. ​​在容器内安装测试工具​​:
# 进入容器魔方Shell
docker exec -it YOUR_CONTAINER_NAME /bin/bash # 在容器内安装speedtest-cli
apt-get update && apt-get install -y speedtest-cli # 对于Debian系
# 或(如果使用Alpine):
# apk add curl
  1. 运行上行速度测试​​:
# 方法1: 使用speedtest-cli
speedtest --simple # 方法2: 使用curl测试上传
curl -T /dev/zero http://speedtest.ftp.otenet.gr/files/test10Mb.db
# 观察输出速度(应稳定在~2.5MB/s左右,因为20Mbps = 2.5MB/s)

步骤7:重启验证持久化

# 重启飞牛OS
sudo reboot # 重启后检查
sudo systemctl status container-bandwidth.service
docker exec YOUR_CONTAINER_NAME tc qdisc show dev eth0

应看到类似:

qdisc tbf 800d: root refcnt 2 rate 20Mbit burst 32Kb lat 400.0ms

排错指南

问题现象 解决方案
"无法获取容器PID" 检查容器名称是否正确、容器是否正常运行
"No such file or directory" 确认已创建 /opt/scripts/limit_container_traffic.sh 并有执行权限
"RTNETLINK answers: File exists" 添加 replace 关键字:tc qdisc replace...
网卡名称不是eth0 修改脚本中的 dev eth0 → 使用 docker exec 容器名 ip addr 查看正确网卡名
限速不精确 调整 burst 值:burst = rate/8 * 1.5
服务启动过早 增加脚本中的 sleep 时间

更新限速配置

如需修改带宽限制(例如改为30Mbps):

编辑脚本文件:

sudo nano /opt/scripts/limit_container_traffic.sh

修改 rate 20mbit → rate 30mbit

修改 burst 320kbit → burst 480kbit (30÷8×1.5=5.625,约480kbit)

重启服务:

sudo systemctl restart container-bandwidth.service

此方案通过Systemd在宿主机层面自动管理,避免修改容器内部,确保每次重启飞牛OS后自动生效且不影响容器魔方的正常功能。

飞牛OS给容器魔方上行宽带限速的更多相关文章

  1. 在http编程的门口----飞牛网自动下单,查单

    刚进这个公司,以前没接触过http编程,所以这两天做了个小例子来熟悉http编程,有点晕..... 不过还是做出来了,虽然有点粗糙,总结一下这个小软件: 主要使用QNetworkAccessManag ...

  2. 【容器魔方解读】AWS Re:Invent 2018大会

    每年云计算领域技术与商业风向标之一的AWS Re:Invent大会上周在美国拉斯维加斯召开,如往届一样,AWS密集发布了上百项的新产品或新技术.随着国内近两年云计算尤其是公有云的普及度越来越高,国内各 ...

  3. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地

    . 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...

  4. Openstack 虚拟机宽带限速

    修改Neutron配置文件,使其支持Qos 修改Neutron.conf service_plugins = neutron.services.qos.qos_plugin.QoSPlugin 修改p ...

  5. 深入解析DC/OS 1.8 – 高可靠的微服务及大数据管理平台

    深入解析DC/OS 1.8 – 高可靠的微服务及大数据管理平台 大家好,欢迎大家参加这次DC/OS的技术分享. 先做个自我介绍,刘超,Linker Networks首席架构师,Open DC/OS社区 ...

  6. paper 61:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接

    转载出处:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究小组的主页,CV ...

  7. docker容器安全

    title: docker容器安全 tags: Docker,容器,安全策略 grammar_cjkRuby: true --- Docker容器的安全性 1.安全策略-Cgroup 1.限制Cpu ...

  8. Docker Kubernetes 容器重启策略

    Docker Kubernetes 容器重启策略 当容器被创建时,容器会根据重启策略来进行容器重启. 支持三种策略: Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容 ...

  9. Docker学习笔记——制作容器与容器概念

    Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...

  10. 关于国内外CV领域牛人的博客链接 .

    此文为转载文章,尊重知识产权http://blog.csdn.net/carson2005/article/details/6601109此为原文链接,感谢作者! 以下链接是关于计算机视觉(Compu ...

随机推荐

  1. Web前端入门第1问:英语是否很重要?有哪些前置条件?

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 在入门之前,是否有这样的疑问: 程序员的英语是否很牛?毕竟程序员的代码像天书一样,比如这样: 答案是否定的. 英 ...

  2. vscode运行js文件

    一. 首先你需要下载安装 nodejs 下载地址 二. 在 VS Code中有一个插件 code runner,安装后可以直接运行在 node 环境中,然后就可以在 vscode 中输出文件的结果. ...

  3. Linux中查看进程状态信息

    一.常用命令总结  ps -l   列出与本次登录有关的进程信息:    ps -aux   查询内存中进程信息:    ps -aux | grep ***   查询***进程的详细信息:    t ...

  4. 视觉SLAM第四讲李群与李代数习题

    视觉SLAM第四讲李群与李代数习题 一.验证\(SO(3).SE(3).SIM(3)\)关于乘法成群 首先引入一下群的定义. 群 (Group) 是一种集合加上一种运算的代数结构.我们把集合记作 \( ...

  5. this和super--java进阶day01

    1.this和super的代表 super是父类的标识符,如堆内存中的标志 2.this和super的访问 重点说访问构造方法,super()访问父类构造方法我们已经清楚,但是this()访问本类构造 ...

  6. Win10隐藏托盘图标-注册表

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer NoTrayItemsDisplay(类型: ...

  7. 主存的扩展及其与CPU的连接——字扩展

    一块芯片的容量为\(2^{18}B\),而该CPU需要的容量为:\(2^{地址总线位宽}\)=\(2^{21}B\),所以需要8片该芯片来扩展. 由于CPU由21个地址引脚,芯片只有18个地址引脚,C ...

  8. Model接口

    /** * Model接口 * 作用:将值存放到request对象 * * * @return */ @RequestMapping(value = "/testModle") p ...

  9. 🎀Idea序列图插件-SequenceDiagram Core

    简介 SequenceDiagram Core 是一个 IntelliJ IDEA 插件,它允许开发者直接在 IDE中创建和编辑序列图(Sequence Diagrams).序列图是 UML(统一建模 ...

  10. zk源码—7.ZAB协议和数据存储

    大纲 1.两阶段提交Two-Phase Commit(2PC) 2.三阶段提交Three-Phase Commit(3PC) 3.ZAB协议算法 4.ZAB协议与Paxos算法 5.zk的数据存储原理 ...