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

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函数是一个系统调用&#xff0c;用于等待一个子进程结束并回收其资源。当父进程调用wait函数时&#xff0c;它会暂停执行&#xff0c;直到至少有一个子进程结束。wait函数的原型如下&#xff1a; #include <sys/types.h> #include <sys/wait.h>pid_…...

C语言:字符串函数strcmp

该函数用于比较两个字符串是否一样。 使用方法如下&#xff1a; #include<stdio.h> #include<string.h>int main() {//strcmp函数返回值有三种情况&#xff0c;小于零时返回-1&#xff0c;等于零&#xff0c;大于零时返回1printf("%d\n", strcmp("…...

【数据分析---偏企业】 Excel操作

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 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

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

JVM-运行数据区(堆、栈、元空间)

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

超详细!!! LVS(Linux virual server)负载均衡知识及其NAT模式、DR模式、火墙标记实验

目录 前言系统性能扩展方式集群Cluster分布式集群与分布式 四层转发与七层转发的区别 LVS&#xff08;Linux virual server&#xff09;一、LVS介绍LVS相关概念 二、LVS集群结构体系1. 负载均衡层&#xff08;Load Balancer&#xff09;2. 服务器群组层&#xff08;Server Pool…...

信息学奥赛一本通1259:【例9.3】求最长不下降序列

题目&#xff1a; 1259&#xff1a;【例9.3】求最长不下降序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数:51218 通过数: 20928 Special Judge 【题目描述】 设有由n(1≤n≤200)n(1≤n≤200)个不相同的整数组成的数列&#xff0c;记为:b(1)、b(2)、……、…...

星露谷模组开发教程#3 事件

首发于Enaium的个人博客 SMAPI提供了一些事件&#xff0c;比如游戏的内容、显示、输入等事件。这些事件可以让我们在游戏中添加自己的逻辑。这一节我们就来看看如何使用这些事件。 注册一个事件 在SMAPI中&#xff0c;我们可以通过IModHelper的Events属性来注册事件。比如我们…...

C语言程序设计(初识C语言后部分)

愿天下无Bug&#xff0c;秀发常驻。 3&#xff09;函数的参数 1.实际参数&#xff08;实参&#xff09;&#xff1a; 真实传给函数的参数&#xff0c;叫实参。 实参可以是&#xff1a;常量、变量、表达式、函数等。 无论实参是何类型的量&#xff0c;在进行函数调用时&#…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...