docker数据卷和资源控制
目录
数据卷
实现数据卷
宿主机和容器之间进行数据共享
容器与容器之间进行数据共享
容器互联
docker容器的资源控制
cpu
1.设置cpu资源控制(比重)
2. 设置cpu的资源占用比(权重)
3.设置容器绑定cpu
内存
1.内存限制
磁盘
1.磁盘读写速度的限制
2.磁盘的读写次数限制
清理docker的磁盘空间的命令
练习
数据卷
数据卷的目的:
1. 实现容器和宿主机之间数据共享:数据卷又叫挂载卷,就是把容器内的目录和宿主机的目录进行挂载,实现数据文件共享
2. 为了保证数据的持久化:容器的生命周期有限,一旦重启,所有对容器内部文件数据的修改以及保存的数据都会被初始化,所以为了防止数据修饰,重要的组件一定会做数据卷。
实现数据卷
宿主机和容器之间进行数据共享
创建宿主机与容器之间的数据卷
docker run -itd --name test1 -v /opt/test1:/opt/test2 centos:7 /bin/bash
-v 指定
注意点:
1. 左边的test1是宿主机目录 ,右边的test2是容器内的目录
2. 加不加 / ,都是目录,而不是文件。如果不存在,宿主机和容器都会自动创建目录
3. 以宿主机的目录为标准,同步的是宿主机目录的内容到容器内
4. 挂载之后,容器内的目录的权限默认是读写权限都有
设置容器内的数据卷目录只读权限
docker run -itd --name test1 -v /opt/test1:/opt/test2:ro centos:7 /bin/bash
容器与容器之间进行数据共享
容器之间会需要共享数据,最简单的方法就是使用数据卷容器。可以提供容器内的一个目录,专门用来供其他容器进行挂载。
docker run -itd --name test1 -v /opt/test1 -v /opt/test2 centos:7 /bin/bash 在容器内部创建两个目录
docker run -itd --name test2 --volumes-from test1 centos:7 /bin/bash 容器与容器数据共享
容器互联
容器与容器之间建立一条专门的网络通道,容器与容器之间通过这个通道互相通信。
建立通道之后,容器之间可以通过容器名进行通信,容器之间不需要暴露端口,也不依赖宿主机的ip。在容器内部可以通过容器名直接访问另一个容器,可以简化容器之间的连接配置。
指定网络,我们要先创建自定义网络。
docker network create --subent=192.168.10.0/24 --opt "com.docker.network.bridge.name"="docker2" xy102 自定义网络
docker run -itd --name n1 --network=xy102 nginx:1.22
docker run -itd --name n2 --network=xy102 nginx:1.22
docker exec -it n1 bash 进入容器
然后两个容器可以互相访问容器名
docker容器的资源控制
docker通过cgroup来控制容器的资源配额,包括cpu、内存、磁盘三大方面。
cgroup全称control group,它是Linux内核提供的可以限制、记录、隔离进程所使用的物理资源(cpu、内存、磁盘IO)的机制
cpu
1.设置cpu资源控制(比重)
是按进程占用cpu的时间来进行计算
查看cpu限制步骤:
首先docker ps 查看容器的container id并复制
然后cd /sys/fs/cgroup/cpu/docker/
然后cd 把上面的container id复制过来并用tab键补齐
cd 246fb9e648f7893e5db24b5ced6a4136044bc6c8b3a7d3a6fa429e2861cd3dc1/

cat cpu.cfs_quota_us 显示-1
表示系统没有对该进程进行cpu的限制
cat cpu.cfs_period_us 显示100000微妙=100毫秒=0.1秒
在每个使用cpu的周期内,容器可以用指定的比例使用cpu时间
设置cpu资源控制步骤
设置cpu限制命令(比重,默认100000就是100%)
docker run -itd --name test1 --cpu-quota 50000 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
然后docker exec -it test1 bash 进入容器
安装epel源 yum -y install epel-release (如果宿主机有epel需要先删掉)
注:如果要删,可以先 rm -rf *删除,然后执行docker cp /etc/yum.repos.d/Centos-7.repo test1:/etc/yum.repos.d/ 远程复制 然后再下载epel源
安装模拟软件 yum -y install stress
模拟cpu的压力 stress -c 4
注:这里每次模拟都需要重新都安装一遍
然后top查看 或者 docker top test1

pid:容器内的进程在宿主机上的进程号,ppid:在容器内部的进程号
2. 设置cpu的资源占用比(权重)
--cpu-shares 默认值是1024,如果要设置,必须是1024的倍数或者1024的除数
实验步骤:
docker run -itd --name test2 --cpu-shares 512 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
然后docker exec -it test1 bash 进入容器
安装epel源 yum -y install epel-release (如果宿主机有epel需要先删掉)
注:如果要删,可以先 rm -rf *删除,然后执行docker cp /etc/yum.repos.d/Centos-7.repo test1:/etc/yum.repos.d/ 远程复制 然后再下载epel源
安装模拟软件 yum -y install stress
模拟cpu的压力 stress -c 4
注:这里每次模拟都需要重新都安装一遍
然后top查看 或者 docker top test1
3.设置容器绑定cpu
--cpuset-cpus
docker run -itd --name test4 --cpuset-cpus 0,2 centos:7 /bin/bash
cpu的限制和绑定cpu一般是一起使用的。
内存
1.内存限制
--memory= 简写-m 512m 或者 -m 1g
单位是小写,也可以限制容器使用交换空间swap
--memory-swap=512M/1g
命令:docker run -itd --name test5 -m 512m --memory-swap=1g centos:7 /bin/bash
-m 512m --memory-swap=1g
内存限制是512M,交换空间限制的大小是1g-512m=512m
--memory-swap=0 或者不写
容器使用swap交换分区的大小是限制的内存值的两倍,就是1g
-m 512m --memory-swap=512m
如果两个值一样表示容器不能使用swap交换分区
-m 512m --memory-swap=1
内存还是受限制512m,但使用交换分区不再受限制,宿主机有多少swqp空间,容器就可以用多少
模拟命令:stress --vm 2 --vm-bytes 512M --vm-hang 0 模拟两个进程,分别占用内存512m一共1运行
磁盘
1.磁盘读写速度的限制
docker run -itd --name test5 --device-read-bps /dev/sda:1M centos:7 /bin/bash
容器在磁盘上每秒只能读1M
这里可以用大写K、M、G 或者小写kb、mb、gb
docker run -itd --name test5 --device-write-bps /dev/sda:1M centos:7 /bin/bash
容器在磁盘上每秒只能写1M
2.磁盘的读写次数限制
docker run -itd --name test5 --device-read-iops /dev/sda:100 centos:7 /bin/bash
docker run -itd --name test5 --device-write-iops /dev/sda:100 centos:7 /bin/bash
清理docker的磁盘空间的命令
docker system prune -a
清理容器的残留,删除停止运行的容器,删除无用的数据卷和网络。
练习
1.设置3个权重 256 768 2048,并且3个容器设置绑定到cpu 0
docker run -itd --name test1 --cpu-shares 512 --cpuset-cpus 0 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
docker run -itd --name test2 --cpu-shares 768 --cpuset-cpus 0 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
docker run -itd --name test3 --cpu-shares 2048 --cpuset-cpus 0 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
实验结果
top查看

docker stats 查看
2.绑定到指定的cpu 1 设置占用的cpu的比重是25%,同时限制内存使用率512m
docker run -itd --name test4 --cpu-quota 25000 --cpuset-cpus 1 -m 512m --memory-swap=512m -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash
实验结果
top查看

docker stats 查看
free -h查看

相关文章:
docker数据卷和资源控制
目录 数据卷 实现数据卷 宿主机和容器之间进行数据共享 容器与容器之间进行数据共享 容器互联 docker容器的资源控制 cpu 1.设置cpu资源控制(比重) 2. 设置cpu的资源占用比(权重) 3.设置容器绑定cpu 内存 1.内存限制 …...
Kafka系统及其角色
Apache Kafka系统介绍 Apache Kafka 是由 LinkedIn 公司最初开发的一个高性能、分布式的消息传递系统。它被设计为一个可扩展、持久、分布式的流式处理平台,以满足 LinkedIn 在实时数据处理方面的需求 。Kafka 的诞生源于 LinkedIn 需要处理海量数据时现有消息队列系…...
从零开始构建霸王餐返利APP的技术路线与挑战
从零开始构建霸王餐返利APP的技术路线与挑战 大家好,我是阿可,微赚淘客系统及省赚客APP创始人,是个冬天不穿秋裤,天冷也要风度的程序猿! 在电商领域,霸王餐返利APP作为一种新兴的商业模式,为用…...
安装Jmeter,配置jdk
注意点: java的jdk和jmeter的版本相匹配 ! ! ! 目前我使用的是1.8的的,jmeter使用的是5.6.3 JDK下载地址:https://www.oracle.com/cn/java/technologies/downloads 别管,直接傻瓜式安装点点就完了... 1.电脑-属性-高级系统设置-环境变量 2.系统变量-新建-变量…...
Aria2@RPC下载@Alist批量下载
文章目录 abstractAria2 RPC 概述RPC 的主要功能在线文档aria2的配置文件与启动选项使用配置文件设置aria2 rpc功能Aria2关于rpc的离线文档 Aria2 RPC 重要和常用选项1. enable-rpc2. rpc-listen-port3. rpc-secret4. rpc-listen-all5. rpc-allow-origin-all6. rpc-max-request…...
神经串联式语音转换:对基于串联的单次语音转换方法的再思考 论文笔记
NEURAL CONCATENATIVE SINGING VOICE CONVERSION: RETHINKING CONCATENATION-BASED APPROACH FOR ONE-SHOT SINGING VOICE CONVERSION 笔记 发现问题: 在any-to-any的转换中,由于内容和说话人音色的解耦不足,导致源说话人的音色部分仍保留在转换后的音频中&#x…...
机器学习(1)--数据可视化
文章目录 数据可视化作用可视化方法实现可视化 总结 数据可视化 数据可视化是将数据以图形、图像、动画等视觉形式表示出来,以便人们能够更直观地理解、分析和交流数据中的信息。 作用 一个整理的好好的数据,我们为什么要将其可视化呢?将它…...
docker部署Prometheus、Grafana
docker部署Prometheus 1、 拉取prometheus镜像 docler pull prom/prometheus 遇到问题:注意下科学上网。 2、将prometheus配置文件放在外面管理 prometheus.yml global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:-…...
5.mysql多表查询
MYSQL多表查询 MYSQL多表查询1.多表关系笛卡尔积 2. 多表查询概述2.1 内连接2.2 外连接2.3自连接联合查询union ,union all 2.4子查询2.4.1标量子查询2.4.2列子查询2.4.3行子查询2.4.4表子查询 MYSQL多表查询 create table student(id int auto_increment primary …...
【前端面试】挖掘做过的nextJS项目(上)
为什么使用nextJS 需求: 快速搭建宣传官网 1.适应pc、移动端 2.基本的路由跳转 3.页面渲染优化 4.宣传的图片、视频资源的加载优化 5.seo优化 全栈react web应用、 tailwind css原子工具的支持,方便书写响应式ui app router(React 服务器组件)支持服务器渲…...
【Unity-UGUI】UGUI知识汇总
目录 前言1 UGUI系统原理2 事件系统2.1 EventSystem2.2 InputModules2.3 Raycasters2.4 协作 3 UGUI系统的组件3.1 Image和RawImage3.2 Mask和RectMask2D 扩展UI穿透问题 前言 记录一些最近学到的有关UGUI的知识。 参考 知乎:6千字带你入门UGUI源码 书籍ÿ…...
JavaScript性能测试:策略、工具与实践
在Web开发中,性能测试是确保应用程序达到预期响应速度和处理能力的关键步骤。JavaScript作为构建交互式Web应用的核心语言,其性能直接影响用户体验。本文将详细介绍如何使用JavaScript进行性能测试,包括性能测试的基本概念、测试类型、工具、…...
嵌入式软件开发学习一:软件安装(保姆级教程)
资源下载: 江协科技提供: 资料下载 一、安装Keil5 MDK 1、双击.EXE文件,开始安装 2、 3、 4、此处尽量不要安装在C盘,安装路径选择纯英文,防止后续开发报错 5、 6、 7、弹出来的窗口全部关闭,进入下一步&a…...
SpringMVC学习中遇到的不懂注解记录
文章目录 Autowrite 和 ResourceQualifier 和 PrimaryPathVariableController、Service、Repository 和 Component Autowrite 和 Resource 我们先讲讲 Autowrite 注解 吧。 public class StudentService3 implements IStudentService {//Autowiredprivate IStudentDao studentD…...
Java面试题--分布式锁
分布式锁 你说一下什么是分布式锁 分布式锁是在分布式/集群环境中解决多线程并发造成的一系列数据安全问题.所用到的锁就是分布式锁,这种锁需要被多个应用共享才可以,通常使用Redis和zookeeper来实现。 分布式锁有哪些解决方案 常用的三种方案 基于…...
一文讲清数据平台与数据中台的关系与区别
前言 如果您是IT领域或者数据领域的从业者,一定对IT行业“创造”概念的能力深有体会,也一定经常被看起来名称相似,但又不同的各种概念绕的云里雾里,摸不着头脑。今天我们要讨论的是数据平台和数据中台两个概念,您是不…...
Android的Service和Thread的区别
Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。 Android Service是组件,既不能说它是单独的进程也不能说它是单独的线程。 如果非要从通俗的语言层面来理解的话,姑且将其理解为对象。这个Service对象本身作为应用程序的一部分与它的…...
经纬恒润亮相第四届焉知汽车年会,功能安全赋能域控
8月初,第四届焉知汽车年会在上海举行。此次年会围绕当下智能电动汽车的热点和焦点,聚焦于智能汽车场景应用、车载通信、激光雷达、智能座舱、功能安全、电驱动系统等多个领域,汇聚了来自OEM、科技公司、零部件供应商、测试认证机构、政府院校…...
掌握JavaScript单元测试:最佳实践与技术指南
单元测试是软件开发过程中的关键环节,它帮助开发者确保代码的每个独立部分按预期工作。在JavaScript开发中,进行单元测试不仅可以提高代码质量,还可以加快开发速度,因为它们为代码更改提供了安全网。本文将详细介绍如何使用JavaSc…...
spring boot 古茶树管理系统---附源码19810
目 录 摘要 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2古茶树管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 …...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
