Docker资源配额

news2024/11/15 13:34:46

        Docker资源配额指的是对Docker容器或服务在系统资源使用方面的限制。 通过资源配额,可以控制和限制Docker容器可以使用的CPU、内存、磁盘空间和网络带宽等资源。

        根据应用程序的需求和系统环境来设置适当的资源配额:过于严格的配额可能导致应用程序性能下降,而过于宽松的配额可能会导致资源浪费和冲突,资源配额提供了更好的资源控制和管理机制,以确保容器化环境的稳定性和性能。

CPU资源配额

#查看帮助
docker run --help | grep cpu
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU shares (relative weight)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)

#CPU份额-c, --cpu-shares
CPU shares在创建容器时指定容器所使用的CPU份额值
是一个相对的加权值,不能保证获取绝对的core数量,默认docker容器cpu份额为1024
份额为1000的A容器和2000的B容器,B获取CPU占用时间的是A的两倍
如果CPU是充足,那么A和B都能获得充足的CPU
docker run -itd --name cpu1 --cpu-shares 1000 centos /bin/bash
docker exec -it cpu1 /bin/bash
cat /sys/fs/cgroup/cpu/cpu.shares
#1000

#CPU核数--cpuset-cpus、--cpuset-mems
可以控制容器运行限定使用哪些cpu内核和内存节点
更适用于具有NUMA拓扑(具有多CPU、多内存节点)的服务器
#nproc查看有多少个可用cpu
8
#使其绑定两个CPU
docker run -itd --name cpu1 --cpuset-cpus 0,1 centos /bin/bash

#puset-cpus和cpu-shares混合使用
docker run -itd --name cpu1 --cpuset-cpus 0,1 --cpu-shares 1000 centos /bin/bash
docker exec -it cpu1 /bin/bash
rm -rf /etc/yum.repos.d/* && exit

docker cp Centos-vault-8.5.2111.repo cpu1:/etc/yum.repos.d/
docker run -itd --name cpu2 --cpuset-cpus 0,1 --cpu-shares 2000 centos /bin/bash
docker exec -it cpu2 /bin/bash
rm -rf /etc/yum.repos.d/* && exit
docker cp Centos-vault-8.5.2111.repo cpu2:/etc/yum.repos.d/
#在容器内下载与使用stress压测软件,然后我忘了要在里面放centos8的源文件了
docker exec -it cpu1 yum install -y epel-release
docker exec -it cpu1 yum install -y stress
docker exec -it cpu2 yum install -y epel-release
docker exec -it cpu2 yum install -y stress
stress --help #查看stress帮助,直接看example就行
#Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

#开始测试,开三个terminal,一个cpu1,一个cpu2,一个看top
docker exec -it cpu1 /bin/bash 
stress -c 2 --timeout 5m
docker exec -it cpu2 /bin/bash
stress -c 2 --timeout 5m
#再开一个terminal看top

内存资源配额

根据容器所运行的业务,配置相应最大内存,防止用太多影响其他的业务
docker run --help | grep -i memory
      --kernel-memory bytes            Kernel memory limit
  -m, --memory bytes                   Memory limit
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)

docker run -itd --name mem1 -m 1g centos
docker exec -it mem1 cat /sys/fs/cgroup/memory/memory.limit_in_bytes
1073741824

IO资源配额

控制IO资源
docker run --help | grep write
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
docker run --help | grep read
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])

#创建容器io,设置存储映射关系,设备sda限制io速度1mb每秒
docker run -it  -v /test/:/test/ --device /dev/sda:/dev/sda \\
--device-write-bps /dev/sda:1mb --name io centos  /bin/bash
#使用dd命令,从sda写到/test/内,块大小1M,传送60个块,绕过内核缓存,直接读取和写入设备
time dd if=/dev/sda of=/test/transblock bs=1M count=60 oflag=direct,nonblock

#读数据同理

结束运行资源释放

设置容器结束运行后自动释放资源,适用于一次性的容器如测试容器
如果容器是异常退出了也会被删除
docker run --help | grep rm
      --rm                             Automatically remove the container when it exits
#只设置一个5秒钟的任务
docker run -it --rm --name rmtest alpine sleep 5
docker ps -a | grep rm
#无,已经被自动删除了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于ssm的智慧社区电子商务系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

嵌入式科普(9)vscode无法跳转和恢复默认配置

一、目的/概述 二、解决办法 2.1 使能Intelli Sense Engine 2.2 vscode恢复默认配置 2.3 c/c与clangd冲突 嵌入式科普(9)vscode无法跳转和恢复默认配置 一、目的/概述 1、2024年的第一天突然vscode无法跳转,莫名其妙 2、尝试了各种设置和插件都无效,卸…

如何将支持标准可观测性协议的中间件快速接入观测

前言 作为一名云原生工程师,如何将支持标准可观测性协议的中间件快速接入观测云呢?答案是只需要三步。 首先,需要确定您要观测的中间件类型。支持标准可观测性协议中间件可通过观测云的 DataKit 采集到中间件的关键指标。有些中间件自带可观…

c++-智能指针

1、概念 堆内存的对象需要手动使用delete销毁,如果忘记使用delete销毁就会造成内存泄漏。 所以C在ISO 98标注中引入了智能指针的概念,并在C11 中趋于完善。 使用智能指针可以让堆内存对象具有栈内存对象的特性。原理时给需要自动回收的堆内存对象套上一层…

【本科生通信原理】【实验报告】【北京航空航天大学】实验一:通信原理初步

一、实验目的: 熟悉 MATLAB开发环境、掌握 MATLAB基本运算操作;熟悉和了解 MATLAB图形绘制基本指令;熟悉使用 MATLAB分析信号频谱的过程;掌握加性白高斯噪声信道模型 二、实验内容: 三、实验程序: 1、 f…

经历和经验的联系

2023年国内互联网大厂疯狂裁员,还出来了“防御性编程”,“开猿节流,降本增笑”等等词汇。阿里裁员后阿里云宕机多次,腾讯裁员和降级了领导层,这些领导回到大头兵岗位,不能融入一线干活,任务完成…

React基础应用及常用代码

目录 基础知识 babel.config.js js,html,css,Vue,react,angular,nodejs,webpack,less,ES6,commonjs等的关系 ECMAScript 6(ES6) let、const、var 的区别 Webpack、npm、node关系 props和state区别 通用框架类 ES 6 export React React.Fragm…

生信技能33 - gnomAD数据库hg19/hg38 VCF文件批量下载脚本

gnomAD数据库下载地址 gnomAD downloads gnomAD v2.1.1数据集包含来自125,748个外显子组和15,708个全基因组的数据,所有这些数据都映射到GRCh 37/hg 19和GRCh 38/hg 38 两个版本的参考序列。 gnomAD数据库hg19与hg39 VCF文件批量下载脚本 download.sh # 获取当前目录路径…

Spring IOC的四种手动注入方法

手动注入 1.Set方法注入-五种类型的注入1.1 业务对象JavaBean第一步:创建dao包下的UserDao类第二步:属性字段提供set⽅法第三步:配置⽂件的bean标签设置property标签第四步:测试 1.2 常用对象String(日期类型&#xff…

【CMake】1. VSCode 开发环境安装与运行

CMake 示例工程代码 https://github.com/LABELNET/cmake-simple 插件 使用 VSCode 开发C项目,安装 CMake 插件 CMakeCMake ToolsCMake Language Support (建议,语法提示) 1. 配置 CMake Language Support , Windows 配置 donet 环境 这…

用通俗易懂的方式讲解:OpenAI 新版 API 使用介绍,帮助大家快速解锁这些新功能

OpenAI 最近举办了首次开发者大会,大会上不仅发布了 GPTs 这样王炸级别的新功能,还发布了一些新模型,比如gpt-4-turbo等,模型的知识截止时间也提高到了 2023 年 4 月。 同时配合这些新模型,OpenAI 还开放了大家期盼已…

Anaconda + Pytorch 超详细安装教程

Anaconda Pytorch 超详细安装教程 安装 Anaconda 略,自行百度即可 安装 Pytorch 虚拟环境 第一步 选择 env第二步 创建第三步 填写环境名称和选择 python 版本号 第四步 打开 https://pytorch.org/ 选择 pytorch 版本,我这里选择的是 GPU 版本 即 CUDA 11.8,也…

Mysqld的关键优化参数

skip-name-resolve 现象 mysql连接很慢,登陆到服务器上查看服务器日志都是正常的,无可疑记录,登陆到mysql服务器上,查看下进程,发现有很多这样的连接: 218 | unauthenticated user | 192.168.10.6:44500 |…

vue简单实现滚动条

背景:产品提了一个需求在一个详情页,一个form表单元素太多了,需要滚动到最下面才能点击提交按钮,很不方便。他的方案是,加一个滚动条,这样可以直接拉到最下面。 优化:1、支持滚动条,…

宏基因组序列分析工具EukRep

文章:Genome-reconstruction for eukaryotes from complex natural microbial communities | bioRxiv 仓库:patrickwest/EukRep: Classification of Eukaryotic and Prokaryotic sequences from metagenomic datasets (github.com) 推荐使用conda进行安…

机械配件移动商城课程概述

项目介绍 开发准备 任务 开源库介绍 框架搭建 工具类

C++-异常处理

1、概念 异常时程序在执行期间产生的问题。C异常是指在程序运行时发生的特殊情况。比如string::at函数下标越界等。 异常提供了一种转移程序控制权的方式。 一旦程序出现异常没有经过处理,就会造成程序运行崩溃。 处理异常的方式有:抛出异常(…

算法每日一题:队列中可以看到的人数 | 单调栈

大家好,我是星恒 今天是一道困难题,他的题解比较好理解,但是不好想出来,接下来就让我带大家来捋一捋这道题的思路,以及他有什么特征 题目:leetcode 1944有 n 个人排成一个队列,从左到右 编号为 …

【面试高频算法解析】算法练习6 广度优先搜索

前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯(Backtracking&…

使用Python给图片加水印(通过OpenCV和Pillow实现,内含完整代码链接)

from PIL import Image, ImageFont, ImageDraw, ImageEnhance, ImageChops import cv2 import math import numpy as npdef crop_image(im):"""裁剪图片边缘空白"""bg Image.new(mode"RGBA", sizeim.size)bbox ImageChops.differenc…