docker数据卷:
docker数据卷:
容器和宿主机之间数据共享
容器和宿主机之间数据共享——————挂载卷————容器内的目录和宿主机的目录进行挂载,实现数据文件共享
容器的生命周期有限,一旦重启所有对容器内部文件数据的修改以及保存的数据都会被初始化,所以为了防止数据丢失,重要的组件一定会做数据卷。
-v volume:指定
[root@docker1 ~]# docker run -itd --name test1 -v /opt/test1:/opt/test2 centos:7 /bin/bash #前面的是宿主机,后面的是容器 [root@docker1 opt]# docker run -itd --name test2 -v /etc/yum.repos.d/:/etc/yum.repos.d centos:7 /bin/bash e5ba904a4b2643f68f4cea79b2df6129b2eeba5c415110d36f24508355d77b33 #将宿主机目录下的文件和目录同步到容器的目录下 [root@docker1 opt]# docker exec -it test2 bash [root@e5ba904a4b26 /]# cd /etc/yum.repos.d/ [root@e5ba904a4b26 yum.repos.d]# ls CentOS-Base.repo
docker run -itd --name test2 -v /etc/yum.repos.d/:/etc/yum.repos.d centos:7 /bin/bash
-v /etc/yum.repos.d/:/etc/yum.repos.d
第一点:前面是宿主机目录,后面是容器内的目录
第二点:加不加斜杠,都是目录,不是文件,如果不存在,宿主机和容器自动创建
第三点:已宿主机的目录为标的,同步的是宿主机目录的内容到容器内
第四点:挂载之后,容器内的目录的权限默认是读写权限都有。
容器与容器之间进行数据共享:
容器之间会需要共享数据,最简单的方法就是使用数据卷容器。可以提供容器内的一个目录,专门用来供其他容器进行挂载。
#在容器内部创建两个目录 [root@docker1 opt]# docker run -itd --name test1 -v /opt/test1 -v /opt/test2 centos:7 /bin/bash #新创一个容器与上一个容器的目录进行挂载 [root@docker1 opt]# docker run -itd --name test2 --volumes-from test1 centos:7 /bin/bash #两边在挂载的目录中都有读写的权限
容器互联:
容器与容器之间建立一条专门的网络通道,容器与容器之间通过这个通道互相通信。
建立通道之后,容器之间可以通过容器名进行通信,容器之间不需要暴露端口,也不依赖宿主机的ip。
在容器内部可以通过容器名直接访问另一个容器,简化容器之间的连接配置
新版本:
#指定网络,我们要先创建自定义网络。 [root@docker1 opt]# docker network create --subnet=192.168.10.0/24 --opt "com.docker.network.bridge.name"="docker2" xy102 [root@docker1 opt]# docker run -itd --name n11 --network=xy102 nginx:1.22 [root@docker1 opt]# docker run -itd --name n22 --network=xy102 nginx:1.22 #分别进入两个容器,并curl 对方的容器名,显示可以通 [root@docker1 opt]# docker exec -it n11 bash root@3f59b04c77f7:/# curl n22
docker容器的资源控制:
docker通过cgroup来控制容器的资源配额。包括cpu、内存、磁盘三大方面进行控制。
cgroup
control gropus
linux内核提供的可以限制、记录、隔离进程所使用的物理资源(cpu、内存、磁盘IO)的机制。
cpu限制
1、cpu资源控制:
进程占用cpu的时间来进行计算。
cat cpu.cfs_quota_us
如果结果是-1,则表示系统没有对该进程进行cpu的限制。
cat cpu.cfs_period_us
100000微秒 100毫秒
在每个使用cpu的周期内,容器可以用指定的比例使用cpu时间
50000微秒 50毫秒
#设置cpu控制 [root@docker1 cpu]# docker run -itd --name test1 --cpu-quota 50000 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bash [root@d0ba0a96cbaa /]# yum -y install epel-release [root@d0ba0a96cbaa /]# yum -y install stress [root@d0ba0a96cbaa /]# stress -c 1
[root@docker1 /]# docker top test1 UID PID PPID C STIME TTY TIME CMD root 37226 37205 0 11:29 pts/0 00:00:00 /bin/bash root 37278 37205 0 11:29 pts/1 00:00:00 bash root 38120 37278 0 11:45 pts/1 00:00:00 stress -c 1 root 38121 38120 53 11:45 pts/1 00:00:03 stress -c 1
pid 容器在宿主机上的进程号
ppid 在容器内部的进程号
2、设置cpu的资源占用比:
--cpu-shares 默认值是1024,必须是1024的倍数
[root@docker1 opt]# docker run -itd --name test1 --cpu-shares 512 centos:7 /bin/bash [root@docker1 opt]# docker cp /etc/yum.repos.d/ test1:/etc/yum.repos.d [root@2a5b1a119f7a yum.repos.d]# yum -y install epel-release [root@2a5b1a119f7a yum.repos.d]# yum -y install stress [root@2a5b1a119f7a yum.repos.d]# stress -c 4 [root@docker1 opt]# docker run -itd --name test2 --cpu-shares 1024 centos:7 /bin/bash [root@docker1 opt]# docker cp /etc/yum.repos.d/ test2:/etc/yum.repos.d [root@3c1a9946d942 yum.repos.d]# yum -y install epel-release [root@3c1a9946d942 yum.repos.d]# yum -y install stress [root@3c1a9946d942 yum.repos.d]# stress -c 4 #再开一个终端查看cpu的占比 [root@docker1 yum.repos.d]# docker stats
设置容器绑定cpu:
--cpuset-cpus 0,1
[root@docker1 opt]# docker run -itd --name test5 --cpuset-cpus 0,2 centos:7 /bin/bash
内存限制
--memory=
-m 512m
-m 1g
单位是小写
也可以限制容器使用交换空间swap
--memory-swap=512m/1g
[root@docker1 opt]# docker run -itd --name test5 -m 512m --memory-swap=1g centos:7 /bin/bash
--name test5 -m 512m
--memory-swap=1g
内存限制是512M
交换空间限制的大小是1g-512m=512m
--memory-swap=0或者不加
容器使用swap交换分区的大小是限制的内存值的两倍
-m 512m --memory-swap=512m
容器不能使用swap交换分区
-m 512m --memory-swap=-1
内存还是受限,内存只能用512m,使用交换分区不再受限制,宿主机有多少swap空间,容器就可以使用多少
磁盘限制(不重要)
磁盘读写速度的限制,磁盘的读次数限制和写次数限制
1、对磁盘的读进行限制:
[root@docker1 cpu]# docker run -itd --name test6 --device-read-bps /dev/sda:1M centos:7 /bin/bash #容器在磁盘上每秒只能读1M
单位:
kb k
mb m
gb g
2、对磁盘的写进行限制:
[root@docker1 cpu]# docker run -itd --name test6 --device-write-bps /dev/sda:1M centos:7 /bin/bash #容器在磁盘上每秒只能写1M
3、对磁盘的读次数进行限制
[root@docker1 cpu]# docker run -itd --name test6 --device-read-iops /dev/sda:100 centos:7 /bin/bash
4、对磁盘的写次数进行限制
[root@docker1 cpu]# docker run -itd --name test6 --device-write-iops /dev/sda:100 centos:7 /bin/bash
清理容器的残留(要谨慎使用):
[root@docker1 cpu]# docker system prune -a #清理容器的残留,删除停止运行的容器,删除无用的数据卷和网络
课后练习:
实验一
设置3个权重 256 768 2048
3个容器设置绑定到cpu 0
操作:
[root@docker1 opt]# docker run -itd --name test1 --cpu-shares 256 --cpuset-cpus 0 centos:7 /bin/bash [root@docker1 opt]# docker cp /etc/yum.repos.d/ test1:/etc/yum.repos.d [root@docker1 opt]# docker run -itd --name test2 --cpu-shares 768 --cpuset-cpus 0 centos:7 /bin/bash [root@docker1 opt]# docker cp /etc/yum.repos.d/ test2:/etc/yum.repos.d [root@docker1 opt]# docker run -itd --name test3 --cpu-shares 2048 --cpuset-cpus 0 centos:7 /bin/bash [root@docker1 opt]# docker cp /etc/yum.repos.d/ test3:/etc/yum.repos.d
实验结果:
cpu的限制和绑定cpu一般是一起使用的
实验二:
绑定到指定的cpu1 设置占用cpu的比重是25%
同时限制内存使用率512m
[root@docker1 opt]# docker run -itd --name test4 --cpu-quota 25000 --cpuset-cpus 1 -m 512m --memory-swap=1g centos:7 /bin/bash
相关文章:

docker数据卷:
docker数据卷: 容器和宿主机之间数据共享 容器和宿主机之间数据共享——————挂载卷————容器内的目录和宿主机的目录进行挂载,实现数据文件共享 容器的生命周期有限,一旦重启所有对容器内部文件数据的修改以及保存的数据都会被初始…...

【linux】linux中如何通过systemctl来创建和管理服务
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

WPF-实现多语言的静态(需重启)与动态切换(不用重启)
目录 一、多语言切换(需重启) 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换(无需重启)…...

UE5学习笔记12-为角色添加蹲下的动作
一、一点说明 1.蹲下使用了ACharacter类中Crouch();函数,函数功能是先检查是否存在运动组件,将bool类型的变量变为true,该变量代表是想要蹲下。 2.通过源码可知存在是否蹲下的bool变量bIsCrouched如图,如果对:1有疑问请搜索C位域 …...
【笔记】Android 多用户模式和用户类型
简介 用户界面:System 》Multiple Users 》 开关多用户模式。 一般是不同用户模式下,有修改Settings应用配置的权限差异,因此需要通过用户类型对功能进行判断限制。 代码 通过UserManager可以获取当前用户的信息。 frameworks/base/core/…...

SQL基础——MySQL的索引
简介:个人学习分享,如有错误,欢迎批评指正。 一、概述 介绍 索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表&…...
【开发语言】面向对象和面向过程开发思路的区别
引入: 我总结了 面向过程的开发语言思路:1.我要干啥?2.怎么才能实现 面向对象的开发语言思路:1.我要研究谁?2.他能干啥 详解: 面向过程的开发语言思路 我要干啥? 在面向过程的开发中&a…...

谷歌账号登录的时候提示被停用,原因是什么,账号还有救吗?该如何处理?
今日早上,有个久违的朋友找到我说,要恢复账号。 他的情况是这样的:7月21日的时候,他发现自己的谷歌账号登录的时候提示活动异常先,需要输入手机号码验证才能恢复账号。但是输入了自己和亲友们的多个手机号码都无法验证…...
数据库复习笔记
写在最前, 写文章的初衷只是为了复习与记录自己的成长,笔者目前水平还有待提高,文章中难免会出现许多问题与错误,文章内容仅供参考,有不足的地方还请大家多多包涵并指正,谢谢~ 第八章 T-SQL程序结构 8.…...

学习STM32(6)-- STM32单片机ADCDAC的应用
1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换(ADC)和数字模拟转换(DAC)应用方面的功能和操作。学习如何配置STM32F103的ADC模块,实现模拟信号到数字信号的精确转换;同时,探索DAC模块…...
学习记录第二十五天
wait函数 wait函数是一个系统调用,用于等待一个子进程结束并回收其资源。当父进程调用wait函数时,它会暂停执行,直到至少有一个子进程结束。wait函数的原型如下: #include <sys/types.h> #include <sys/wait.h>pid_…...
C语言:字符串函数strcmp
该函数用于比较两个字符串是否一样。 使用方法如下: #include<stdio.h> #include<string.h>int main() {//strcmp函数返回值有三种情况,小于零时返回-1,等于零,大于零时返回1printf("%d\n", strcmp("…...

【数据分析---偏企业】 Excel操作
各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Excel操作前 必看 Python 初阶 Python—语言基础与…...

Ajax-01.原生方式
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Ajax-原生方式</title> </head> <!-…...

OpenAI GPT-2 model use with TensorFlow JS
题意:使用 TensorFlow JS 应用 OpenAI GPT-2 模型 问题背景: Is that possible to generate texts from OpenAI GPT-2 using TensorFlowJS? 是否可以使用 TensorFlowJS 生成 OpenAI GPT-2 的文本? If not what is the limitation, like mo…...

JVM-运行数据区(堆、栈、元空间)
文章声明:文章图片均来自互联网,因为本人画的图不够生动。 运行数据区是JVM最重要的一个区域。 运行数据区由栈、堆、元空间构成。 栈:程序计数器、JVM虚拟机栈,本地方法栈 本地方法栈:加载native修饰的方法&#…...

超详细!!! LVS(Linux virual server)负载均衡知识及其NAT模式、DR模式、火墙标记实验
目录 前言系统性能扩展方式集群Cluster分布式集群与分布式 四层转发与七层转发的区别 LVS(Linux virual server)一、LVS介绍LVS相关概念 二、LVS集群结构体系1. 负载均衡层(Load Balancer)2. 服务器群组层(Server Pool…...
信息学奥赛一本通1259:【例9.3】求最长不下降序列
题目: 1259:【例9.3】求最长不下降序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数:51218 通过数: 20928 Special Judge 【题目描述】 设有由n(1≤n≤200)n(1≤n≤200)个不相同的整数组成的数列,记为:b(1)、b(2)、……、…...
星露谷模组开发教程#3 事件
首发于Enaium的个人博客 SMAPI提供了一些事件,比如游戏的内容、显示、输入等事件。这些事件可以让我们在游戏中添加自己的逻辑。这一节我们就来看看如何使用这些事件。 注册一个事件 在SMAPI中,我们可以通过IModHelper的Events属性来注册事件。比如我们…...

C语言程序设计(初识C语言后部分)
愿天下无Bug,秀发常驻。 3)函数的参数 1.实际参数(实参): 真实传给函数的参数,叫实参。 实参可以是:常量、变量、表达式、函数等。 无论实参是何类型的量,在进行函数调用时&#…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...