如何限制docker容器上传的速率?

2023-12-25

我需要防止长时间运行的多 TB 上传耗尽我的所有网络带宽,但我只能在进程级别限制其带宽使用(这意味着减慢整个计算机的网络接口或减慢该用户的网络流量不会工作)。幸运的是,上传是用 Docker 容器化的。我该怎么做才能减慢 docker 容器的出站流量?


谢谢这个问题 https://stackoverflow.com/q/36871588/7106084我意识到你可以跑tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 10000在容器内将其上传速度设置为 1 MB/s。

下面是一个示例 Dockerfile,它通过生成随机文件并将其上传到来演示这一点/dev/null-as-a-service https://devnull-as-a-service.com/上传速度大约为 25KB/s:

FROM ubuntu

# install dependencies
RUN apt-get update
RUN apt-get install -y iproute curl

# create a large random file to upload
RUN head -c 2M </dev/urandom > /upload.data

# rate-limit the network interface and
# upload the data when docker image is run
RUN echo "#!/bin/bash" >> /upload.sh
RUN echo "tc qdisc add dev eth0 root tbf rate 25kbps latency 50ms burst 2500" >> /upload.sh
RUN echo "curl -d @/upload.data http://devnull-as-a-service.com/dev/null" >> /upload.sh
RUN chmod a+x /upload.sh

ENTRYPOINT exec /upload.sh

假设您的 Dockerfile 位于名为的目录中ratelimit它位于您当前的工作目录中,您可以使用以下命令运行它:

docker build ratelimit -t ratelimit && docker run --cap-add=NET_ADMIN ratelimit

选项--cap-add=NET_ADMIN授予容器修改其网络接口的权限。你可以找到文档here https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities.

Dockerfile 首先安装它需要的依赖项。iproute提供了tc工具,以及curl允许我们提出速率限制的请求。安装依赖项后,我们生成一个 2MB 的随机文件来上传。下一部分构建一个脚本文件,用于配置速率限制并开始上传。最后,我们将该脚本指定为容器运行时要执行的操作。

该容器向网络接口添加令牌桶过滤器,将连接速度减慢至 25KB/s。可以找到提供给令牌存储过滤器的选项的文档here http://lartc.org/manpages/tc-tbf.txt.

可以修改此 Dockerfile 以执行任何其他网络任务,方法是删除对 cURL 的调用并在其位置执行上传(当然,在安装上传所需的任何工具之后)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制docker容器上传的速率? 的相关文章

  • Daphne Django 文件上传大小限制

    我使用 Daphne 进行套接字和 http 连接 我正在运行 4 个工作容器 并且现在在 docker 容器中本地运行所有内容 如果我尝试上传 400MB 的文件 我的 daphne 服务器会失败 它适用于最大 15MB 的小文件 我的
  • HTML5 文件 API 和 AJAX 上传分块问题

    我编写了一个带有单独进度的拖放多个文件上传等 除了一件事之外 它工作得非常好 上传较大文件时 有时浏览器会锁定 直到上传完成 我认为这是因为该文件存储在浏览器的内存中并占用了浏览器可用的所有资源 我想知道 是否可以逐段读取文件并在读取时通过
  • Docker - 如何通过 API 将输入发送到程序

    我一直在使用 Docker 的远程 API 创建一个容器 在其中运行一个 Python 程序 附加到该容器并将写入 stdout 的输出流式传输到网络 现在 我希望我的 Python 程序接受来自 stdin 的用户输入 例如 import
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 为 Ruby On Rails 环境创建 Docker 映像时出错(从 Dockerfile)

    估计是环境问题 当我手动执行此操作 没有 Dockerfile 时 它可以工作 这是我的 Dockerfile FROM ubuntu 14 04 RUN apt get update RUN apt get upgrade assume
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • Spring Cloud Gateway 无法在 Docker 上运行

    我已经配置了一个 Spring Cloud 网关来重定向到使用以下路由创建的服务器 Bean public RouteLocator myRoutes RouteLocatorBuilder builder return builder r
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • docker中的GitLab CI docker无法创建卷

    我在 docker 中使用 docker 来托管我的容器 因为它们通过管道工作 我根据代码创建的容器设置为具有一个卷 用于将 gcloud 密钥传递到容器 这在我的本地计算机上完美运行 但在 gitlab runner 上它无法正确链接 从
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 您可以将标志传递给 docker 运行的命令吗?

    的文档run命令遵循以下语法 docker run OPTIONS IMAGE TAG DIGEST COMMAND ARG 然而我有时发现我想传递一个标志 COMMAND 例如 我一直在与这个图片 https github com mak
  • Kibana 5.5.1 位于 nginx 1.13 代理之后(dockerized)

    Goal 我想在 docker 容器中运行 elk 堆栈 能够通过 nginx 代理访问 ELK Stack 以绕过服务的各个端口 Kibana 服务 默认端口 5601 http
  • 无法通过 SQL Server Management Studio 连接到 SQL Server Linux Docker 容器

    我对 Linux 操作系统很陌生 所以希望这不是一个愚蠢的问题 软件 Windows 10 专业版适用于 Windows 的 Docker 1 13 0 beta38 9805 SQL Server Management Studio v1
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • docker 中带有参数的 jar 文件

    Helo 我有一个 java jar 文件 当我从终端运行它时 它会接受一堆参数作为输入 我想制作一个 docker 映像并运行它 其中包含 jar 文件 我仍然可以在其中传递 jar 文件的参数 将 jar 文件设置为您的入口点 http
  • 来自发布数据的 CodeIgniter 未通过

    我试图在 CodeIgniter 中上传文件 但是当我添加 enctype multipart form data 时 不会有任何发布数据通过 甚至其他领域也根本没有 但是 当我不添加它时 我可以获得其他帖子数据 但当然没有文件上传 这里出
  • 如何在 Visual Studio 上关闭调试后访问在 docker 上运行的网站

    我在 net core 上构建了一个非常简单的 Web 应用程序和 Web api 并配置了 docker compose 以使它们能够通过同一网络正确通信 在 Visual Studio 上 当我在 Docker Compose 项目上运
  • Spring Boot 3 网关显示 503 service_unavailable

    我得到了一个NotFoundException 503 SERVICE UNAVAILABLE网关服务器日志中出现异常 我在 Docker 容器中运行微服务 我有一个auth service处理身份验证和 Jwt 的微服务 我可以使用 Po
  • 如何在docker compose中为每个容器创建单独的卷

    我创建了一个docker我想为其运行多个容器的图像 这个 docker 镜像依赖于一些东西 这些东西对于所有容器来说都是相同的 但唯一的区别是容器的配置 version 2 4 services s1 image testdockerimg

随机推荐

  • Python:获取 2010 年 7 月最后一个星期一

    如何获取给定月份的最后一个星期一 或其他日期 看一下dateutil http labix org python dateutil from datetime import datetime from dateutil import rel
  • 在 AngularJS 应用程序中运行 Karma 单元测试时出现“意外请求”错误

    我正在尝试为控制器编写一个单元测试 该控制器使用 http 服务获取文章详细信息 控制器 controller ArticleDetailCtrl function scope Article routeParams API URL ART
  • Python:如果在 try 或 if 中定义变量仍然可以访问? [复制]

    这个问题在这里已经有答案了 我是 Python 初学者 有 C C 背景 我正在使用Python 2 7 我读了这篇文章 Python 命名空间 范围解析和 LEGB 规则的初学者指南 http spartanideas msu edu 2
  • 继续断言

    Assert后有办法继续测试吗 我需要查看断言引起的所有情况 foreach var ex in data Assert AreEqual ex1 ex msg 不 你不能 Assert如果失败就会抛出异常 并且你不能在异常之后继续执行 你
  • 无法绑定地址 [0]:php 错误

    无法绑定地址 0 通常只允许每个套接字地址 协议 网络地址 端口 使用一次 错误是由我的 php 服务器页面给出的 我尝试了不同的端口号 如从 cmd 中查看和编写 netstat an 我也在谷歌上搜索但没有解决方案 我正在使用 wamp
  • 如何在 Swift 中捕获异常

    我知道并理解 swift 中的错误处理 没有例外 但在 Cocoa 和 Cocoa Touch 中 有些情况除了捕获异常之外没有其他方法可以处理错误 例如 如果您在可用空间不足时写入文件句柄 这不是我们希望应用程序崩溃的情况 如何处理这种情
  • 二阶颂歌系统的庞加莱截面

    这是我第一次尝试用 Python 编写庞加莱节代码 我从这里借用了一段代码 https github com williamgilpin rk4 blob master rk4 demo py https github com willia
  • Facebook API SDK 撤销访问权限

    如何允许用户使用其 API 服务 SDK 撤销对我的应用程序的访问权限 http developers facebook com docs sdks http developers facebook com docs sdks 查看文档 我
  • 如何在 C++ 中发送或保存函数以及接收或恢复函数并执行它?

    有什么方法可以将函数发送或保存为文件吗 我想在 Windows 平台上用 C 执行此操作 我假设读者和发件人或保存者之间存在某种约定 如果我像下面这样发送可以吗 服务器端 label1 int func1 int somevar int a
  • AngularJS:从列表动态添加组件

    因此 我正在开发一个允许用户修改模板的项目 基本模板将由组件组成 用户将能够添加或删除组件 我在网上找到了一些东西 例如grapeJS 但对于这个简单的应用程序来说 它的强度还远远不够 寻找一些有关解决此问题的方法的建议 或任何有帮助的资源
  • 为什么 django 网站上的日志功能不起作用?

    这就是我尝试过的 在我的 view py 文件中 import logging logger logging getLogger mylog logging basicConfig format name s levelname s mes
  • Dart - Base64 字符串不等于 python

    当我使用Python生成一个base64将在中使用的字符串raw key raw value GMAIL API 发送电子邮件完美发生 但是当我使用 Dart 生成相同的base64string 该字符串与 python 不同 因此我无法发
  • 如何使 Orientdb 的优势变得独特

    如何使 Edge 在 Orientdb 中独一无二 我想出的解决方案 删除边缘 再次创建它 但这并不好 Edge 没有任何属性 Example create edge is friend from 12 0 to 12 3 如果我再次调用它
  • PyTorch RuntimeError:DataLoader 工作线程(pid(s) 15332)意外退出

    我是 PyTorch 的初学者 我只是尝试一些示例在这个网页上 https github com pytorch examples 但由于此错误 我似乎无法运行 super resolution 程序 RuntimeError DataLo
  • 球与球的碰撞 - 检测和处理

    在 Stack Overflow 社区的帮助下 我编写了一个非常基本但有趣的物理模拟器 您单击并拖动鼠标来发射球 它会弹来弹去 最终停在 地板 上 我想添加的下一个重要功能是球与球的碰撞 球的运动被分解为 x 和 y 速度矢量 我有重力 每
  • lambda 演算、正规阶、正规形式、

    在 lambda 演算中 如果一项具有范式 则范阶缩减策略将始终产生它 我只是想知道如何严格证明上述命题 您提到的结果是所谓标准化定理的推论 该定理指出 对于任何归约序列 M gt N 相同项 M 和 N 之间存在另一个 标准 序列 其中您
  • 编译需要参数的表达式

    好吧 我确信这很简单 但我正在经历一个高级时刻 我有一个简单的 BinaryExpression 大于 左侧是 ParameterExpression 右侧是 ConstantExpression 我想将此表达式编译为一个函数 我可以调用该
  • 如何在 python-socketio 中将消息从 python 服务器发送到 javascript 客户端?

    socketio客户端成功连接到服务器并发送消息emit到服务器 但到客户端的另一个方向服务器失败 我找不到错误的根源 这是 这是服务器 pythonapp py基于中的示例python socketio https python sock
  • 类型错误:“_VirtualList”对象不可调用

    当我运行此代码时 我的 GUI 显示此错误 VirtualList 对象不可调用 我哪里错了 import PyPDF2 pdf open the alchemist paulo coelho pdf rb reader PyPDF2 Pd
  • 如何限制docker容器上传的速率?

    我需要防止长时间运行的多 TB 上传耗尽我的所有网络带宽 但我只能在进程级别限制其带宽使用 这意味着减慢整个计算机的网络接口或减慢该用户的网络流量不会工作 幸运的是 上传是用 Docker 容器化的 我该怎么做才能减慢 docker 容器的