docker容器:docker资源管理

news2024/11/16 21:29:43

目录

一、docker资源控制

1、资源控制工具

2、设置CPU使用率上限

3、CPU压力测试

4、Cgroups限制cpu使用率 

5、查看容器运行状态

6、 配置容器指定CPU

7、限制容器内存使用 

8、对磁盘IO配额控制(blkio)的限制

二、docker数据管理

1、数据管理类型

2、数据卷

3、数据卷容器

4、端口映射

5、容器的互联


一、docker资源控制

1、资源控制工具

cgroups;是一个非常强大的linux内核工具,不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重,计算使用量,操控进程启停等,所以cgroups 实现了对资源的配额和度量

cgroups四大功能:

资源限制:可以对任务使用的资源总额进行限制

优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级

资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等

任务控制:cgroup可以对任务执行挂起、恢复等操作

2、设置CPU使用率上限

Linux通过CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对CPU的使用。CFS默认的调度周期是100ms。

CPU周期:指的是CFS调度CPU遍历处理一次容器所有的进程时长,默认是0.1s。设置范围为1ms~1s

Cgroups限制时间:使用cpu.cfs_quota_us 即可设置在每个周期内容器能使用的CPU的时长,默认是-1即不限制。

CPU利用率:Cgroups限制时间/CPU周期,默认Cgroups是-1而CPU周期为0.1s表示用满CPU

查看CPU默认配置:

3、CPU压力测试

docker run -itd --name test5 centos:7 /bin/bash
#创建名为test5的centos7容器
docker ps -a 
#查看docker容器id
docker exec -it 容器唯一id/容器名   /bin/bash
#进入容器中
vi  /cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done
#编辑脚本
chmod +x /cpu.sh
#添加执行权限
./cpu.sh
#执行脚本
新开一个shell脚本
top查看cpu占用率,按1查看使用的那个cpu

4、Cgroups限制cpu使用率 

5、查看容器运行状态

docker  stats 

6、 配置容器指定CPU

7、限制容器内存使用 

选项: -m(--memory=) 选项用于限制容器可以使用的最大内存

docker run -itd --name test8 -m 512m centos:7 /bin/bash
#创建并启动容器centos7命名为test8,限制最大内存为512mb
docker stats
#查看容器运行状态
选项: -m(--memory=) 选项用于限制容器可以使用的最大内存
docker run -itd --name test8 -m 512m centos:7 /bin/bash
#创建并启动容器centos7命名为test8,限制最大内存为512mb
docker stats
#查看容器运行状态

8、对磁盘IO配额控制(blkio)的限制

--device-read-bps:限制某个设备上的读速度bps(数据量),单位可以是kb、mb(M)或者gb。
#例:docker run -itd --name test9 --device-read-bps /dev/sda:1M  centos:7 /bin/bash
--device-write-bps : 限制某个设备上的写速度bps(数据量),单位可以是kb、mb(M)或者gb。
#例:docker run -itd --name test10 --device-write-bps /dev/sda:1mb centos:7 /bin/bash
--device-read-iops :限制读某个设备的iops(次数) 
--device-write-iops :限制写入某个设备的iops(次数)

二、docker数据管理

1、数据管理类型

管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)

2、数据卷

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作,可以互相同步内容

mkdir /var/www
#宿主机创建目录
docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
#创建容器centos7并命名为web1.将宿主机的/var/www目录挂载到容器中的/data1卷中
# -v 选项表示容器中创建数据卷
echo "this is web1" > /data1/a.txt
exit
#数据卷中创建内容a.txt并退出
cd /var/www/
#进入宿主机的挂载目录
cat a.txt
#验证容器中数据卷内容
echo 123>abc.txt
#宿主机的挂载目录创建一个文件夹
docker start web1
docker exec -it web1   /bin/bash 
#开启web1容器并进入
ls /data1
#显示data1数据卷验证其中是否有abc.txt

3、数据卷容器

 --volumes-from 要挂载那个容器名称/id号 #用于容器之间的挂载
如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

docker run --name web3 -v /data1 -v /data2 -it centos:7 /bin/bash
#创建数据卷容器web3 并创建2个data目录
echo "this is web3" > /data1/abc.txt
echo "This is web3" > /data2/ABC.txt
#web3容器2个data下创建文件
docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash
#使用 --volumes-from 来挂载 web2 容器中的数据卷到新的容器

4、端口映射

在启动容器的时候,如果不指定对应的端口,在容器外是无法通过网络来访问容器内的服务。端口映射机制将容器内的服务提供给外部网络访问,实质上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务。
docker run -d --name test1 -P nginx                    #随机映射端口(从32768开始)

docker run -d --name test2 -p 43000:80 nginx        #指定映射端口

docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                   NAMES
9d3c04f57a68   nginx     "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    0.0.0.0:43000->80/tcp   test2
b04895f870e5   nginx     "/docker-entrypoint.…"   17 seconds ago   Up 15 seconds   0.0.0.0:49170->80/tcp   test1

浏览器访问:http://192.168.30.11:43000  、http://192.168.30.11:49170

5、容器的互联

容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。

docker run -itd -P --name web01 centos:7 /bin/bash

#创建并运行源容器取名web1

docker run -itd -P --name web02 --link web01:web01 centos:7 /bin/bash

##创建并运行接收容器取名web2,使用--link选项指定连接容器以实现容器互联

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

文章目录 前言一、三次多项式的例题二、Python实现1.引入库 总结 前言 本文还是大部分截图来自于:《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以…

购物车--购物车模块完善

很明显,之前的购物车模块功能的实现不够完善,缺少一个删除购物车中产品的操作,针对此我们加一个删除功能。 1、写负责删除的servelt类 2、然后我们给购物车页面的jsp添加超链接传递目标id 搞定。

王道计组(23版)1_计算机系统概述

1.计算机发展历程 硬件的发展: 电子管、晶体管、中小规模集成电路、超大规模集成电路 摩尔定律: 价格不变时,每18个月,集成电路可容纳的晶体管数量和性能增加一倍 微型计算机的发展以微处理器技术为标志 计算机体系结构&#xf…

u盘里的文件被自动删除了怎么办?五种数据恢复方案

u盘是我们日常生活中常常用到的一种便携式存储设备,可以帮助我们存储和携带大量的文件信息。但是,使用过程中难免会遇到一些问题,例如u盘会自己删除文件的情况,如果你遇到了这种情况,该怎样找回u盘自己删除的文件呢&am…

程序猿眼中的协议:TCP / IP 五层网络模型

哈喽,大家好~我是你们的老朋友: 保护小周ღ,本期为大家带来的是 网络基础原理中的 TCP / IP 五层网络模型,主要从协议的概念,网络模型,数据分层传输的流程,几个方面讲解,看完之后可以…

jdk-FuteureForkJoin框架源码学习

背景 日常的计算任务大部分都是串行来执行,但是如果一个复杂的任务需要进行拆分为多个小任务,那么以往是自行写一个递归或者循环计算等算法来实现,随着这类需求的提升,java7中引入了ForkJoin框架来支持这类计算,可以比…

计算机组成原理——第六章总线

误逐世间乐,颇穷理乱情 文章目录 前言6.1.1 总线概述6.1.2 总线的性能指标6.2 总线仲裁(408不考)6.3 总线操作和定时 前言 本章在概述部分我们会首先介绍一下总线的基本概念,介绍一下总线的分类以及经典结构,介绍一些性能指标来评价总线的性…

部分面试题记录

Spring相关: 1. spring框架中的单例bean是线程安全的嘛? 1.1 bean单例多例配置: bean可以手动设置单例或者多例: Service Scope("singleton") public class UserServicelmpl implements UserService { }singleton:b…

QT学习笔记4

一.UI的使用 ui代码输入: ui->setupUi(this);ui->statusbar->showMessage("作者",3000); 在ui类中调用 二.对话框QDialong 模态对话框:就是会阻塞同一应用程序中其它窗口的输入 非模态对话框:不会堵塞同一应用程序中其…

Python反序列化漏洞及魔术方法详细全解(链构造、自动审计工具bandit)

目录 一、Python序列化反序列化相关函数 二、Python魔术方法 三、魔术方法实例详解 <__reduce__> <__setstate__> <__getstate__> 四、反序列化安全漏洞的产生 五、真题实例 六、CTF-CISCN华北-JWT&反序列化 七、代码审计自动化工具——bandit …

理解unsafe-assume-no-moving-gc包

1. 背景 在之前的《Go与神经网络&#xff1a;张量计算》[1]一文中&#xff0c;不知道大家是否发现了&#xff0c;所有例子代码执行时&#xff0c;前面都加了一个环境变量ASSUME_NO_MOVING_GC_UNSAFE_RISK_IT_WITH&#xff0c;就像下面这样&#xff1a; $ASSUME_NO_MOVING_GC_UN…

单片机--第六章中断系统例子学习

单片机--第六章中断系统例子学习 例6-2 P0口连上8个LED&#xff0c; 13引脚&#xff08;INT0&#xff09;上接了一个按钮&#xff0c;要求每次按钮均能改变LED的亮灭 代码&#xff1a; #include<reg51.h> #define LED P0sbit KEYP3^3; bit flag0;//延时函数 void dela…

Linux学习笔记——网络基础

文章目录 计算机网络发展过程独立模式网络互联局域网LAN广域网WAN 计算机网络协议的概念网络协议协议分层OSI七层模型TCP/IP五层(或四层)模型网络传输基本流程数据包封装和分用各层间通信IP地址MAC地址端口 计算机网络发展过程 独立模式 计算机之间相互独立; 网络互联 多台计…

Docker笔记3 | 在Ubuntu下安装Docker

3 | 在Ubuntu下安装Docker 1 支持环境2 卸载旧的docker3 安装Docker3.1 添加HTTPS 传输的软件包以及 CA 证书3.2 添加软件源的 GPG 密钥3.3 添加 Docker 软件源3.4 安装Docker3.5 自动安装 4 Docker启动和验证是否安装ok4.1 启动Docker4.2 docker 用户组建立4.3 验证docker 1 支…

Shell在日常工作中的应用实践

作者&#xff1a;京东物流 李光新 1 Shell可以帮我们做什么 作为一名测试开发工程师&#xff0c;在与linux服务器交互过程中&#xff0c;大都遇到过以下这些问题&#xff1a; •一次申请多台服务器&#xff0c;多台服务器需要安装相同软件&#xff0c;配置相同的环境&#x…

Redis复制详解

Redis复制&#xff08;replica&#xff09; 前言 redis复制是什么&#xff1f; 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据发生变化时&#xff0c;自动将新的数据异步同步到其他slave数据库。 redis复制能做什么&#xff1f…

算法篇——字符串大集合(js版)

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 链接&#xff1a;https://leetcode.cn/problems/r…

SWCF QA集锦待查收 (车联网与V2X、自动驾驶、5G毫米波、射频测试、频谱监测与规划等)

感谢大家的观看与支持&#xff01;我们为大家整理了本次发布会中的演讲资料&#xff0c;汇总了直播过程中的热点问题并请讲师进行了详细解答&#xff0c;在此整理分享给大家&#xff01; 演讲Q&A Q&#xff1a;目前5G天线支持最大的MIMO是多少&#xff1f; A&#xff1a;…

为什么会是植物神经紊乱 如何辨别

很多人都认为&#xff0c;疾病一定能通过仪器检查出来&#xff0c;很多时候去医院检查的时候&#xff0c;大多都需要进行各种的仪器检查&#xff0c;但是当仪器都检查不出来的时候&#xff0c;大家就认为没有生病。其实&#xff0c;当出现浑身不适的时候&#xff0c;检查检查不…

LeNet网络简介

1. 背景 主要介绍LeNet网络预测在CIFAR-10图像数据集上的训练及预测。 2. CIFAR-10图像数据集简介 CIFAR-10是一个包含了6W张32*32像素的三通道彩色图像数据集&#xff0c;图像划分为10大类&#xff0c;每个类别包含了6K张图像。其中训练集5W张&#xff0c;测试集1W张。 数…