docker---资源控制

docker的资源控制

对容器使用宿主机的资源进行限制。

三种控制方向:CPU        内存        磁盘I/O

docker使用linux自带的功能cgroup;control groups是linux内核系统提供的一种可以限制记录,隔离进程所使用的物理资源机制。
docker借助此机制,来实现资源的控制。
cgroup本身是提供进程进行分组化管理的功能和接口的基础架构。分配控制的机制来实现资源控制。
host:容器与主机共用一个网络命名空间。
container:容器和容器之间共用一个网络空间,其他资源依然是隔离的。

限制容器对cpu的使用

限制方向

容器占用cou的时间。
容器占用cpou的权重比 (多个容器时,才有效)。
容器占用cou的内核数,绑定指定cpu内核给容器使用。

设置cpu使用周期

linux通过CFS(Completely Fair Scheduler完全公平调度器),来调度各个进程的CPU的使用。
调度周期:100ms 也可以手动设置这个周期,已经在这个周期时间之内各个容器能够使用cpu的调度时间。、
--cpu-period 设置容器调度cpu的周期
--cpu-quota 设置在每个周期内,容器可以使用cpu的时间。
可以配合使用,CFS周期的有效范围:1ms-1s  --cpu-period 1000~1000000
容器使用cpu的配额时间必须大于1ms,--cpu-quota的值,必须是>=1000=1ms

容器存储位置 cd /sys/fs/cgroup/cpu/容器的id

cpu.rt_period_us ------100000
CFS调度周期的长度,单位:微妙 ,在每个周期内,容器可以使用指定比例的cpu时间,默认情况都是100毫秒

cpu.cfs_quota_us -------(-1)
如果配置是-1,那么容器在使用宿主机cpu的时间不做任何限制。

CFS调度器,100毫秒就是定义了一个周期,在这个周期内,调度任务(容器)的基本时间单位。

大白话:

100ms一次调度请求cpu的资源,然后内核把cpu资源分配给容器。cpu.rt_period_us
调度请求后,根据配额,内核分配给容器使用的cpu时间。cpu.cfs_quota_us

docker run  -itd --name 容器名 --cpu-quota 周期时间 镜像名:标签 /binbash例
docker run  -itd --name test2 --cpu-quota 40000 tentos:7 /binbash

设置容器cpu权重

--cpu-shares
设置容器占用cpu的权重比: 需要多个容器才能生效。
指定容器占用cpu的份额。 模式权重1024,设置的值只能是1024的倍数。
给每个容器使用cpu设置了相对的权重,权重高的,可以使用cpu的资源更多,但如果只运行一个容器,即便设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限。

docker run -itd --name 容器名 --cpu-shares 权重 镜像名:标签 /bin/bash例
docker run -itd --name centos1 --cpu-shares 256 centos:7 /bin/bash

指定cpu

docker run -itd --name 镜像名 --cpuset-cpus 数 镜像名:标签 /bin/bash例
docker run -itd --name test5 --cpuset-cpus 1,3 centos:7 /bin/bash

限制容器对内存的使用

docker run -itd --name 镜像名 -m 内存大小 镜像名:标签 /bin/bash例
docker run -itd --name test6 -m 512m centos:7 /bin/bash

限制容器对swap的使用

想要限制容器使用swap。必须和限制内存一块使用

docker run -itd --name 容器名 -m 内存大小 --memory-swap=swap大小 镜像名:标签 /bin/bash例
docker run -itd --name test7 -m 512m --memory-swap=1g centos:7 /bin/bash
如果限制了内存是512,swap是1G,那么容器实际上能够使用swap空间,1g-512m
swap使用的是1g-512G


如果不设置:-m 512m 但是使用swap的空间是-m的两倍

如果设置:-m 512m--memory-swap=1g,那么容器实际上能够使用swap空间:1g-512m
如果设置:-m 512m 和 --memory-swap的值一样,容器就不能使用swap
如果设置:-m 512m 和 --memory-swap=-1,容器就无限制使用swap

限制容器对磁盘I/O的使用

限制容器再磁盘上的读限制
docker run -itd --name 容器名 --device-read-bps 磁盘:读大小 镜像名:标签 /bin/bash例
docker run -itd --name test8 --device-read-bps /dev/sda:1M centos:7 /bin/bash

限制容器再磁盘上的写限制
docker run -itd --name 容器名 --device-write-bps 磁盘:写大小 镜像名:标签 /bin/bash例
docker run -itd --name test9 --device-write-bps /dev/sda:1MB centos:7 /bin/bash测试写入速度:dd if=/dev/zero of=123.txt bs=1M count=10 oflag=direct
在使用dd 获取空字符集是从文件系统的缓存当中输入,速度是比较快的
oflag=direct
禁用文件系统缓存,直接把数据写入磁盘,可以更真实的测试

测试读取此时:
docker run -itd --name testl --device-read-iops /dev/sda:100 centos:7 /bin/bash
测试写入此时:
docker run -itd --name testl --device-write-iops /dev/sda:100 centos:7 /bin/bash

清理docker占用的磁盘空间

docker system prune -a
会清理掉(四点):

1、删除已经停止的容器

2、删除未被使用的网络

3、删除未被使用的镜像

4、删除创建时的缓存

压力测试

模拟系统负载的工具
yum -y install stressstress -c 4

查看docker的cpu占用

可以容器的运行占用宿主机资源的情况
docker stats 容器名/id

查看容器内PID和宿主机pid的映射关系

查看容器内PID和宿主机pid的映射关系
docker top 容器名/id

总结

怎么对容器使用cpu进行限制:
容器占用cpu的时间
容器占用cpu的权重
容器绑定cpu

容器的宿主机的内存使用限制:
-m

swap:必须和限制内存一块使用
-m 512m --memory-wap=1g
-m 512m --memory-wap=512m
-m 512m 
-m 512m--memory-wap=-1

磁盘I/O(了解即可)


清理docker占用的磁盘空间:会删除已经停止的容器,删除所有未被使用的网桥设备、删除所有未被使用的镜像,删除创建容器时的缓存以及无用的数据卷

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义TypeHandler 将mysql返回的逗号分隔的String转换到List

sql执行如下&#xff1a; 这里我定义的接受类&#xff1a; 但是这里报了错JSON parse error: Cannot deserialize value of type java.util.ArrayList<java.lang.String>from Object value (token JsonToken.START_OBJECT); nested exception is com.fasterxml.jackson…

通过静态HTTP实现负载均衡

在当今的互联网环境中&#xff0c;随着用户数量的不断增加和业务需求的不断扩大&#xff0c;单台服务器往往无法承受所有的访问压力。为了确保网站的可用性和性能&#xff0c;负载均衡成为了一种常见的解决方案。本文将探讨如何通过静态HTTP实现负载均衡&#xff0c;以提升网站…

AUTOSAR CP Port Driver简介

Port Driver 1 背景2 基于 EB 及 TC39X 配置3 Port API 使用1 背景 Port driver 在 AUTOSAR 中是一个比较冷门的模块,基本上在 MCAL 层级,关注的人也少,他由不像其他模块那样通用型比较强,Port 在每种内核的 MCU 的配置都有区别,甚至有些芯片直接没有 Port 模块,使用其他方…

磁盘的移臂调度方法

refer: 理解&#xff1a; 访问磁盘需要先找到数据&#xff0c;在机械硬盘里并不是直接电子读取&#xff0c;需要移动磁头到相应的数据块上才可以读取&#xff08;磁头移动到目标柱面&#xff0c;即磁道&#xff0c;然后磁片旋转磁头才能访问到相应扇区&#xff0c;进而读取数…

MAT(MemoryAnalyzer)分析内存泄露实战

线上有一个应用&#xff0c;每过一段时间内存就跑满&#xff0c;因为是非主要应用且周期较长&#xff0c;一直是采取的重启策略。近期有时间&#xff0c;就进行了一番分析。 使用MAT对dump文件进行分析 第一步就已经很清晰了 第二步&#xff0c;点击此处 基本上就可以定位是此…

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能&#xff0c;帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进&#xff0c;让你的JavaScript开…

【LeetCode】2703. 返回传递的参数的长度

返回传递的参数的长度 题目题解 题目 请你编写一个函数 argumentsLength&#xff0c;返回传递给该函数的参数数量。 示例 1&#xff1a; 输入&#xff1a;args [5] 输出&#xff1a;1 解释&#xff1a; argumentsLength(5); // 1只传递了一个值给函数&#xff0c;因此它应返…

免费的网页数据抓取工具有哪些?【2024附下载链接】

在网络上&#xff0c;有许多网页数据抓取工具可供选择。本文将探讨其如何全网采集数据并支持指定网站抓取。我们将比较不同的数据采集工具&#xff0c;帮助您找到最适合您需求的工具。 网页数据抓取工具种类 在选择网页数据抓取工具之前&#xff0c;让我们先了解一下这些工具…

Android 11.0 MTK Camera2 设置默认拍照尺寸功能实现

1.前言 在11.0的系统rom定制化开发中,在mtk平台的camera2关于拍照的一些功能修改中,在一些平台默认需要设置最大的分辨率 来作为拍照的分辨率,所以就需要了解拍照尺寸设置流程,然后来实现相关的功能 如图: 2.MTK Camera2 设置默认拍照尺寸功能实现的核心类 \vendor\me…

echarts绘制一个环形图2

其他echarts&#xff1a; echarts绘制一个环形图 echarts绘制一个柱状图&#xff0c;柱状折线图 echarts绘制一个饼图 效果&#xff1a; 组件代码&#xff1a; <template><div class"wrapper"><div ref"doughnutChart2" id"dough…

FCFS+SJF+HRRF

概述 Simply achieved three scheduling algorithms like FCFS、SJF and HRRF in OS 详细 一、运行效果 二、实现过程 ①FCFS void FCFS(PCB pro[], int num) {int time,doneTime;int count0,proNum1; //count为计数器&#xff0c;proNum记录当前的进程数量float sumTTime…

鸿蒙原生应用开发——分布式数据对象

01、什么是分布式数据对象 在可信组网环境下&#xff0c;多个相互组网认证的设备将各自创建的对象加入同一个 sessionId&#xff0c;使得加入的多个数据对象之间可以同步数据&#xff0c;也就是说&#xff0c;当某一数据对象属性发生变更时&#xff0c;其他数据对象会检测到这…