当前位置: 首页 > news >正文

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.lryc.cn/news/390915.html

相关文章:

  • A36 STM32_HAL库函数 之PCD通用驱动 -- B -- 所有函数的介绍及使用
  • vue2 + element三级菜单实现模板
  • vue H5页面video 视频流自动播放, 解决ios不能自动播放问题
  • 自闭症儿童:探索症状背后的多彩内心世界
  • 在Centos7上安装PostgreSQL16的详细步骤
  • MySQL 图形化界面
  • 【人工智能】GPT-5的即将到来:从高中生进化到,,,博士生?
  • 【收录率高丨投稿范围广 | 往届均已EI检索】第四届光学与通信技术国际学术会议(ICOCT 2024,8月9-11)
  • 小阿轩yx-LVS负载均衡群集
  • CPP知识点记录总结
  • Spring源码(一) 如何阅读 Spring 源码
  • 【代码随想录训练营】【Day 63】【单调栈-2】| Leetcode 42, 84
  • CTF常用sql注入(一)联合注入和宽字节
  • 薄冰英语语法学习--冠词1
  • 基于Java中的SSM框架实现野生动物公益保护系统项目【项目源码+论文说明】计算机毕业设计
  • c->c++(二):class
  • 11 UDP的可靠传输协议QUIC
  • 14-20 Vision Transformer用AI的画笔描绘新世界
  • LVS FILTER UNUSED OPTION
  • Python后端面试题
  • docker打包 arm32v7/debian 问题总结
  • 【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十)
  • Vuetify3:监听当前手机还是电脑
  • Zabbix 配置钉钉告警
  • TTL转RS232与USB转TTL
  • 【力扣 896】单调数列 C++题解(循环)
  • 代码随想录Day71(图论Part07)
  • [Mdp] lc 494. 目标和(01背包变种+dp+dfs)
  • React vs Vue:谁是构建现代Web应用的王者?
  • Linux CentOS 宝塔中禁用php8.2的eval函数详细图文教程