docker容器间网络仿真工具-pumba

docker-tc&pumba

docker-tc:docker-tc项目仓库
pumba:pumba项目仓库
这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预,包括延迟,丢包,带宽限制等。
但是我在实际使用时,发现docker-tc这个工具在进行网络进行模拟时,会使我的程序卡住,一直不执行(程序在不进行任何限速的时候,可以正常工作),因此舍弃这种方式。
pumba相对于docker-tc的缺点是在不使用其他全局监控插件时不能做到完全自动化,docker-tc可以通过在docker compose中使用label标签进行全自动的部署。pumba需要在容器启动后再进行网络相关的设置,因此需要单独开一个终端进行pumba指令的执行,执行期间是独占的,因此也无法将其整理成bash脚本的一个部分。

pumba

安装

方式1:

wget https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64
sudo mv pumba_linux_amd64 /usr/local/bin/pumba
chmod +x /usr/local/bin/pumba && pumba --help

方式2:

sudo curl -L https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64 --output /usr/local/bin/pumba
chmod +x /usr/local/bin/pumba && pumba --help

如果出现了pumba的帮助手册就说明安装成功,就可以使用pumba进行docker容器间网络的设置!
如果你需要下载最新版本的pumba,可以需要自己查看版本并更新链接:https://github.com/alexei-led/pumba/releases

实验环境

我的实验环境是三个容器位于同一个自定义的子网,然后它们需要通过网络连接完成协同推理,pumba的作用是限制它们之间的网络环境。
docker-compose.yml定义如下:

# Settings and configurations that are common for all containers
x-paoding-common: &paoding-commonimage: pao-ding:1.0volumes:- /home/yons/.cache/torch/hub/checkpoints:/root/.cache/torch/hub/checkpoints/- /home/yons/whisperliang/Pao-Ding:/Pao-Dingservices:# # you can make the workfolw automatic by this script# paoding-master:#   <<: *paoding-common#   command: "bash -c 'sleep 10 && python3 main.py master'"#   networks:#     paoding-network:#       ipv4_address: 174.28.0.250#   depends_on:#     paoding-trainer:#       condition: service_healthy#     paoding-worker0:#       condition: service_healthy#     paoding-worker1:#       condition: service_healthy# paoding-trainer:#   <<: *paoding-common#   command: python3 main.py trainer#   networks:#     paoding-network:#       ipv4_address: 174.28.0.2#   healthcheck:#     test: ["CMD", "curl", "-f", "http://localhost:8000"]#     interval: 10s#     timeout: 5s#     retries: 20# execute python3 main.py master in docker paoding-master-trainer# make sure that pumba script workspaoding-master-trainer:<<: *paoding-commoncommand: python3 main.py trainernetworks:paoding-network:ipv4_address: 174.28.0.2healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8000"]interval: 10stimeout: 5sretries: 20paoding-worker0:<<: *paoding-commoncommand: python3 main.py worker -i 0networks:paoding-network:ipv4_address: 174.28.0.3healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8000"]interval: 10stimeout: 5sretries: 20paoding-worker1:<<: *paoding-commoncommand: python3 main.py worker -i 1networks:paoding-network:ipv4_address: 174.28.0.4healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8000"]interval: 10stimeout: 5sretries: 20# volumes:
#   data1-1:networks:paoding-network:driver: bridgeipam:config:- subnet: 174.28.0.0/24

实验场景

首先我需要进行的是在特定带宽下进行容器间协同推理的实验。

pumba netem --duration 2m --tc-image gaiadocker/iproute2 rate --rate 32mbit re2:^pao-ding

我使用docker-compose up -d 启动各容器之后,使用pumba指令进行带宽限制。通过正则匹配,pumba可以自动将符合条件的容器带宽进行限制。
然后我们新开一个终端,输入指令docker exec -it pao-ding_paoding-master-trainer_1 /bin/bash进入docker paoding-master-trainer,并执行python3 main.py master进行协同推理
运行结果如下:
带宽限制结果

从图上可以看出带宽被限制到3.6MB/s(预期的是4MB/s,有误差是正常的,而且这比docker-tc似乎更准确一些)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/367969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用python网络爬虫批量获取公共资源数据教程?

原文链接&#xff1a;如何使用python网络爬虫批量获取公共资源数据教程&#xff1f;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…

84 柱状图中最大的矩形

题目 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a;最大的矩…

从全连接到卷积

一、全连接到卷积 1、卷积具有两个原则&#xff1a; 平移不变性&#xff1a;无论作用在哪个部分&#xff0c;它都要有相同的作用&#xff0c;而不会随着位置的改变而改变 局部性&#xff1a;卷积核作用处&#xff0c;作用域应该是核作用点的周围一小部分而不作用于更大的部分 …

【无需公网IP】在树莓派上搭建Web站点

目录 1.概述 2.使用 Raspberry Pi Imager 安装 Raspberry Pi OS 3.设置 Apache Web 服务器 3.1测试 web 站点 3.2安装静态样例站点 3.3将web站点发布到公网 3.4安装 Cpolar 3.5cpolar进行token认证 3.6生成cpolar随机域名网址 3.7生成cpolar二级子域名 3.8将参数保存…

linux 下,Java由Java8升级到Java11,Java不更新版本号

在ES对接过程&#xff0c;springboot3进行对接&#xff0c;需要将Java升级到11版本。首先下载安装选好的11版本Java&#xff0c;在linux下解压后&#xff0c;配置/etc/profile export JAVA_HOME/root/SJL/jdk-11.0.22 然后保存&#xff0c;执行文件source /etc/profile&#…

Linux多进程和多线程(一)-进程的概念和创建

进程 进程的概念进程的特点如下进程和程序的区别LINUX进程管理 getpid()getppid() 进程的地址空间虚拟地址和物理地址进程状态管理进程相关命令 ps toppstreekill 进程的创建 并发和并行fork() 父子进程执行不同的任务创建多个进程 进程的退出 exit()和_exit() exit()函数让当…

【机器学习】机器学习与电商推荐系统的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在电商推荐系统中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 协同过滤1.2.2 矩阵分解1.2.3 基于内容的推荐1.2.4 混合推荐 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 …

根据后端返回的省市区重新封装树结构(省市区通过children表示)

对比图&#xff08;截取部分&#xff09;&#xff1a; 注&#xff1a;先看分步&#xff0c;最后会附上完整代码&#xff08;如果有用&#xff0c;可以给小编点个赞吗&#xff1f;十分感谢&#xff09; 1.首先将前端返回相同的省份只展示一次 const obj {}; let keyList []r…

最新简约美观的网址网站引导页HTML源码

最新简约美观的网址网站引导页HTML源码 带一言 随机大图 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89487135 更多资源下载&#xff1a;关注我。

分布式数据库HBase:从零开始了解列式存储

在接触过大量的传统关系型数据库后你可能会有一些新的问题: 无法整理成表格的海量数据该如何储存? 在数据非常稀疏的情况下也必须将数据存储成关系型数据库吗? 除了关系型数据库我们是否还有别的选择以应对Web2.0时代的海量数据? 如果你也曾经想到过这些问题, 那么HBase将是…

【教程】lighttpd配置端口反向代理

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、修改配置文件&#xff1a; sudo vim /etc/lighttpd/lighttpd.conf2、先添加mod_proxy&#xff1a; 3、然后添加端口映射&#xff1a; 4、保存&…

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…

SpringBoot 通过Knife4j集成API文档 在线调试

介绍 Knife4j 是一款基于 Swagger 构建的增强型 API 文档生成工具&#xff0c;它提供了更多的定制化功能和界面优化&#xff0c;使得生成的 API 文档更加美观和易用。它可以帮助开发者快速生成和管理 API 文档&#xff0c;支持在线调试和交互。 依赖 <!--knife4j--> &…

不用编码构建本地RAG聊天机器人

前言 还记得开发一个智能聊天机器人需要花费数月编码的时间吗&#xff1f; 像 LangChain 这样的框架确实简化了开发&#xff0c;但是对于非程序员来说&#xff0c;数百行代码仍然是一个障碍。⁤ 就在那时&#xff0c;我发现了“Lang Flow”&#xff0c;这是一个基于 Python 版…

鸿蒙开发设备管理:【@ohos.settings (设置数据项名称)】

设置数据项名称 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块提供设置数据项的访问功能相关接口的说明及示例。 导入模块 import settings from ohos.settings;settings.getUri…

Windows Hello | 看起来您已经在另一个帐户上设置了 Windows Hello。

问题&#xff1a; 换了新电脑之后一直设置不了Window Hello&#xff0c;报错是 "it looks like youve already setup Windows Hello on another account."。 >>重复set up不行。 >>从旧电脑移除了Windows Hello设置也不行。 >>确认过我的Local…

工具:颜色查询 / CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值

一、颜色查询-网址 RGB(90,223,9),#5ADF09 颜色查询,颜色梯度,色彩搭配,色盲模拟 - RGB颜色查询 - 在线工具 - Fontke.com 二、CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值 三、颜色梯度 四、色彩搭配 五、色盲模拟 六、欢迎交流指正

素颜简约的个人导航网站源码

源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 素颜简约的个人导航网站源码

高级IO_多路转接之select

文章目录 [TOC](文章目录) 前言文件描述符的阻塞和非阻塞fcntl 多路转接之selectselect接口select的缺点 前言 关于IO&#xff0c;我们已经用过了不少IO接口&#xff0c;从最简单的printf、scanf->C语言文件接口fprintf、fscanf->系统文件接口read、write->再到我们的…

docker -run hello-world超时

主要原因就是尝试拉取库的时候没有从阿里云镜像里拉&#xff0c;所以设置一下就好了 这里使用的是ubuntu系统&#xff08;命令行下逐行敲就行了&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…