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

Docker数据卷和资源控制

Docker数据卷和资源控制

一、数据卷

1、概念

容器和宿主机之间数据共享-------挂载卷------容器内的目录和宿主机的目录进行挂载,实现数据文件共享

容器生命周期有限,一旦重启所有对容器内部文件数据的修改以及保存的数据都会被初始化,所以为了防止数据丢失

重要的组件一定会做数据卷

2、挂载卷

-v 指定(volume)

docker run -itd --name test1 -v /opt/test1:/opt/test2 centos:7 /bin/bash   
# 前宿主,后容器;以宿主机为准。
# 在宿主机/opt/test1目录下创建文件,容器/opt/test2会同步

第一点:前宿主机目录,后容器目录

第二点:加不加斜杠都是目录。不是文件,如果不存在,宿主机和容器会自动创建

第三点:以宿主机的目的为标的,同步的是宿主机目录的内容到容器内

第四点:挂载之后,容器内的目录的权限默认是读写权限都有

3、容器和宿主机挂载

docker run -itd --name test3 -v /opt/test3:/opt/test1:ro centos7 /bin/bash    # 容器设置只读

4、容器和容器挂载

共享数据,使用数据卷容器,可以提供容器内的一个目录,专门用来供其他容器进行挂载

docker run -itd --name test4 -v /opt/test4 -v /opt/test5 centos:7 /bin/bashdocker exec -it test1 bash
cd /opt
ls   # test4 test5docker run -itd --name test5 --volumes-from test4 centos:7 /bin/bash    # 挂载目录

5、容器互联

docker run -itd --name test6 contos:7 /bin/bash

容器和容器之间建立一条专门的网络用的通道,容器和容器之间通过这个通道互相通信

建立这个通道之后,容器之间可以通过容器名进行通信,容器之间不需要暴露端口,也不依赖宿主机ip

在容器内部可以通过容器名,直接访问另一个容器,简化容器之间的连接配置

新版本:

指定网段,要先创建自定义网络

docker network create --subnet=192.168.10.0/24 --opt "com.docker.network.bridge.name"="docker2" xy102docker run -itd --name n11 --network=xy102 nginx:1.22docker run -itd --name n22 --network=xy102 nginx:1.22docker exec -it n11 bash
curl n22docker exec -it n22 bash
curl n11

二、资源控制

1、概念

docker通过cgroup来控制容器的资源配额,包括cpu、内存、磁盘三大方面。

cgroup:control cgroup 是linux内核提供的可以限制,记录,隔离进程所使用的物理资源(cpu、内存、磁盘IO)的机制

补充:

cat cpu.cfs_quota_us -1:表示系统没有对该进程进行cpu限制

cat cpu.cfs_period_us 10000(微秒~100毫秒):在每个使用cpu的周期内,容器可以用指定的比例使用cpu的时间

2、资源控制

1.1 cpu资源控制

进程占用cpu的时间来进行计算。

docker run -itd --name test10 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bashdocker exec -it test1 bashyum -y install epel-releaseyum -y install stress再开一个终端
top       # 动态查看cpu原
stress -c 4   # 模拟4个cpu,4个共占50%
stress -c 1   # 1个占50%exit
docker rm -f test1    # 资源限制
docker run -itd --name test1 --cpu-quota 50000 -v /etc/yum.repos.d/:/etc/yum.repos.d/ centos:7 /bin/bashdocker exec -it test1 bash
yum -y install epel-release
yum -y install stress
stress -c 4 再开一个终端
top       # 动态查看cpudocker top test1     # 静态查看cpu# pid 表示容器在宿主机上的进程号,ppid表示在容器内部的进程号

1.2 设置cpu的资源占用比

–cpu-shares 默认值是1024,必须是1024的倍数

docker run -itd --name test2 --cpu-shares 512 centos:7 /bin/bashdocker exec -it test2 bashyum -y install stress

设置容器绑定cpu:

--cpuset-cpus 0,1
docker run -itd --name test2 --cpuset-cpus 0,1 centos:7 /bin/bash

cpu的限制(资源占用比)和绑定cpu一般是一起使用

1.3 内存限制

–memory=

-m 数字

-m 512m

-m 1g

也可以限制容器使用交换空间swap

–memory-swap=512m/1g

内存限制是512m。

交换空间限制的大小是1g-512m=512m

–memory-swap=0或者不加

容器使用swap交换分区的大小是限制内存值的两倍

-m 512m --memory-swap=512m

容器不能使用swap交换分区

-m 512m --memory-swap=-1

内存还是首先512m,使用交换分区不再受限制,宿主机有多少swap空间,容器就可以用多少

stress --vm 2 --vm-bytes 512m --vm-hang 0# 模拟两个进程,分别占用内存大小是512

1.4 磁盘限制

磁盘读写速度的限制,磁盘的读次数限制和写次数的限制

docker run -itd --name test6 
容器在磁盘上每秒只能读1M容器在磁盘上每秒只能写1M

1.5 对磁盘空间清理

docker system prune -a
# 清理容器的残留,删除停止运行的容器,删除无用的数据卷和网络

http://www.mrgr.cn/news/2290.html

相关文章:

  • 【Redis】Redis线程与IO模型—(三)
  • 【安全靶场】-DC-7
  • 模型量化方法-GPTQ
  • 杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC
  • 哈希字符串映射
  • python-字符串操作(赛氪OJ)
  • 22 mysql数据库主从搭建
  • 打卡学习Python爬虫第二天|HTTP协议
  • Linux驱动入门实验班——步进电机模块驱动(附百问网视频链接)
  • QT-计算器
  • 数据结构(6_2_3)——十字链表法和多重领接表
  • 32位入门级MCU(ARM Cortex-M3内核)STM32F103系列
  • 计算机基础知识复习8.14
  • 4款AI 生成 PPT的工具,帮你赶上演示文稿的新趋势!
  • HTML静态网页成品作业(HTML+CSS)——花主题介绍网页设计制作(1个页面)
  • Tomcat 部署与优化
  • 探索生成式AI在文档处理中的应用:llm Whisperer
  • 数字媒体产业发展现状剖析,洞悉数字产业园的创新之举
  • HCIP | 三层架构
  • 如何在HTML中创建链接?什么是CSS定位?什么是CSS优化?