docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host

docker网络模式

Host

容器与宿主机共享网络namespace,即容器和宿主机使用同一个IP、端口范围(容器与宿主机或其他使用host模式的容器不能用同一个端口)、路由、iptables规则等网络资源

设置此模式
docker run --network=host

Container

和指定已存在的容器共享网络namespace,即这两个容器使用同一个IP、端口范围(容器与指定的容器不能用同一个端口)、路由、iptables规则等网络资源。

设置此模式
docker run --network=container:容器名|容器ID

None

每个容器都有独立的网络namespace,但是容器没有自己的eth0网卡、IP、端口等网络资源,只有lo网卡

设置此模式
docker run --network=none

Bridge

docker默认网络模式,使用此模式下的每个容器都有独立的网络命名空间(namespace),即每个容器都有独立的IP、端口范围(每个容器可以用同一个端口)、路由、iptables规则等网络信息

设置此模式
docker run [--network=bridge](可不指定,默认的)

自定义网络

可以自己定义创建一个网段、网桥、网络模式,从而可自定义容器的IP来创建容器

创建自定义网络:

docker network create --subnet 自定义网段 --opt"com.docker.network.bridge.name"="自定义网桥名"  自定义网络模式名
​
docker run --network 自定义网络模式名 --ip 自定义容器IP

查看docker网络列表

docker network ls    或  docker network list    

资源控制

Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。 cgroup 资源限制(限制容器进程对CPU、内存、磁盘IO等资源的最大使用量)

1、CPU资源控制

cd /sys/fs/cgroup/cpu/docker/容器id
cat cpu.cfs_quota_us  
表示该cgroups限制占用的时间(微秒),默认为-1,表示不限制。 如果设为50000,表示占用50000/100000=50%的CPU。
​
cat cpu.cfs_period_us 
cpu分配的周期(微秒,所以文件名中用 us 表示),默认为100000。

1)设置单个容器进程能够使用的CPU使用率上限

进行CPU压力测试

docker run -itd --name test5 centos:7 /bin/bash
docker ps -a #查看对应的容器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
​
top   #可以看到这个脚本占了很多的cpu资源
 
cd /sys/fs/cgroup/cpu/docker/容器id
echo 50000 > cpu.cfs_quota_us 
​
docker exec -it 容器id /bin/bash
./cpu.sh
​
top   #可以看到cpu占用率接近50%,cgroups对cpu的控制起了效果
针对新建的容器
docker run --cpu-period 单个CPU调度周期时间(1000~1000000) 
           --cpu--quota 容器进程能够使用的最大CPU时间(>=1000)
针对已存在的容器
修改/sys/fs/cgroup/cpu/docker/容器id/目录下的cat cpu.cfs_quota_us
                                            cat cpu.cfs_period_us文件的值

docker run -itd --name test5 centos:7 /bin/bash
docker ps -a
cd/sys/fs/cgroup/cpu/docker/容器id
cpu.cfs_quota_us
cpu.cfs_period_us

2)设置多个容器的CPU占用份额

(只能在多个容器同时运行且CPU资源紧张时生效)

docker run --cpu-shares 容器进程最大占用CPU的份额(值为1024的倍数)

#创建两个容器为 c1 和 c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为1/3和2/3。
docker run -itd --name c1 --cpu-shares 1024 centos:7 /bin/bash
docker run -itd --name c2 --cpu-shares 2048 centos:7 /bin/bash
​
#分别进入容器,进行压力测试
docker exec -it c1 bash
docker exec -it c2 bash 
yum install -y epel-release
yum install -y stress
stress -c 4             #产生四个进程,每个进程都反复不停的计算随机数的平方根
​
#查看容器运行状态(动态更新)
docker stats

可以看到在 CPU 进行时间片分配的时候,容器 c2 比容器 c1 多一倍的机会获得 CPU 的时间片。 但分配的结果取决于当时主机和其他容器的运行状态, 实际上也无法保证容器 c1 一定能获得 CPU 时间片。比如容器 c1 的进程一直是空闲的,那么容器 c2 是可以获取比容器 c1 更多的 CPU 时间片的。极端情况下,例如主机上只运行了一个容器,即使它的 CPU 份额只有 50,它也可以独占整个主机的 CPU 资源。

Cgroups 只在容器分配的资源紧缺时,即在需要对容器使用的资源进行限制时,才会生效。因此,无法单纯根据某个容器的 CPU 份额来确定有多少 CPU 资源分配给它,资源分配结果取决于同时运行的其他容器的 CPU 分配和容器中进程运行情况。

3)设置容器绑定指定的CPU

docker run --cpuset-cpus CPUID1[,CPUID2,....]
​
#先分配虚拟机4个CPU核数
docker run -itd --name test7 --cpuset-cpus 1,3 centos:7 /bin/bash
                                       绑定cpu1和3
​
#进入容器,进行压力测试
yum install -y epel-release
yum install stress -y
stress -c 4
​
#退出容器,执行 top 命令再按 1 查看CPU使用情况。

2、内存限制

设置容器能够使用的内存和swap的值

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

docker run -itd --name wx -m 512m centos:7 bash

docker run -m 内存大小 --memory-swap 内存和swap的总值
限制可用的 swap 大小, --memory-swap
强调一下,--memory-swap 是必须要与 --memory 一起使用的。



内存设置0或者不设置,表示swap为内存的两倍

内存设置-1,表示不限制swap的值,宿主机有多少,容器就可使用多少

内存设置与-m一样的值,表示不适用swap

3、磁盘IO限制

docker run --device-read-bps 磁盘设备文件路径:速率 #限制容器在某个磁盘上读的速度

--device-write-bps 磁盘设备文件路径:速率 #限制容器在某个磁盘上写的速度

--device-read-iops 磁盘设备文件路径:次数 #限制容器在某个磁盘上读的次数

--device-write-iops 磁盘设备文件路径:次数 #限制容器在某个磁盘上写的速度

 清除已停止的容器、没用到的镜像和网络、缓存

docker清空

docker system prune -a

先查看目前所有的镜像和容器

docker ps -a 

docker images

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub靶场DC-6

攻击机192.168.223.128 靶机192.168.223.134 主机发现:nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.134 开启了22 80端口,80是apache 2.4.25 先进入web界面看一下 用ip进不去,应该被重定向到wordy.com vim /etc/hosts 加上 19…

【医学图像隐私保护】联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

联邦学习:密码学 机器学习 分布式 提出背景:数据不出本地,又能合力干大事联邦学习的问题 分布式机器学习:解决大数据量处理的问题横向联邦学习:解决跨多个数据源学习的问题纵向联邦学习:解决数据分散在多…

某马头条——day11+day12

实时计算和定时计算 流式计算 kafkaStream 入门案例 导入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusions><exclusion><artifactId>connect-json</artifactId&…

NOIP2003提高组T1:神经网络

题目链接 [NOIP2003 提高组] 神经网络 题目背景 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&am…

MSB30M-ASEMI小功率开关电源MSB30M

编辑&#xff1a;ll MSB30M-ASEMI小功率开关电源MSB30M 型号&#xff1a;MSB30M 品牌&#xff1a;ASEMI 正向电流&#xff08;Id&#xff09;&#xff1a;3A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;50A 正向电压&#xff08;…

电影《花千骨》成开年第一烂,新派系当家IP滑铁卢

2024电影市场“开年第一烂”落到了《花千骨》头上。 在整个行业都在为春节档蓄势的情况下&#xff0c;电影市场显得有些沉寂&#xff0c;票房表现也不太出彩&#xff0c;其中最大的输家莫过于新派系文化出品的电影版《花千骨》。 从1月20日上映至今&#xff0c;5天累计票房仅…

带头 + 双向 + 循环链表增删查改实现

目录 源码&#xff1a; List.c文件&#xff1a; List.h文件&#xff1a; 简单的测试&#xff1a; 很简单&#xff0c;没什么好说的&#xff0c;直接上源码。 源码&#xff1a; List.c文件&#xff1a; #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

10.Elasticsearch应用(十)

Elasticsearch应用&#xff08;十&#xff09; 1.为什么需要聚合操作 聚合可以让我们极其方便的实现对数据的统计、分析、运算&#xff0c;例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如…

【Linux】Linux任务管理与守护进程

Linux任务管理与守护进程 一、任务管理1、进程组概念2、作业概念3、会话概念4、相关操作&#xff08;1&#xff09;前台进程&后台进程&#xff08;2&#xff09;jobs、fg、bg、kill 5、ps命令查看指定的选项 二、守护进程1、守护进程的概念2、守护进程的查看3、守护进程的创…

支付宝AES如何加密

继之前给大家介绍了 V3 加密解密的方法之后&#xff0c;今天给大家介绍下支付宝的 AES 加密。 注意&#xff1a;以下说明均在使用支付宝 SDK 集成的基础上&#xff0c;未使用支付宝 SDK 的小伙伴要使用的话老老实实从 AES 加密原理开始研究吧。 什么是AES密钥 AES 是一种高级加…

2.依附弹窗(AttachListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7 基于基础的Popup对象实现的依附于某个控件的弹窗&#xff0c;弹窗可呈现数组对象&#xff0c;达到较好的选择交互效果。 1.布局 通过Border实现圆角边框轮廓&#xff0c;然后通过内部的ListView实现列表展示。…

Cesium数据加载

文章目录 0.引言1.影像加载1.1Bing地图1.2天地图1.3ArcGIS在线地图1.4高德地图1.5OSM影像1.6MapBox影像 2.OGC地图服务2.1WMS2.2WMTS2.3TMS 3.GeoJSON数据加载4.KML数据加载5.TIFF数据加载6.点云数据加载7.地形数据加载7.1在线地形数据加载7.2本地地形数据加载 8.倾斜摄影模型数…

xcode 设置 ios苹果图标,为Flutter应用程序配置iOS图标

图标设置 1,根据图片构建各类尺寸的图标2.xcode打开ios文件3.xcode设置图标4.打包提交审核,即可(打包教程可通过我的主页查找) 1,根据图片构建各类尺寸的图标 工具网址:https://icon.wuruihong.com/ 下载之后文件目录如下 拷贝到项目的ios\Runner\Assets.xcassets\AppIcon.ap…

没有外网Nginx如何配置如何开启https

判断是否支持open-ssl 在服务器执行如下命令 openssl version没有则安装open-ssl&#xff0c;由于服务器没有外网&#xff0c;可以离线安装openssl-3.0.1.tar.gz&#xff0c;我是在有网的服务器直接下载的&#xff0c;然后再上传到这台无网的服务器上 wget https://www.open…

HttpClient的使用与封装

HttpClient的使用与封装 配置 首先,我们要引入maven依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>这里可以单独引入,如果我…

linux操作系统网络编程套接字(实现一个udp通讯demo)

文章目录 理解源IP地址和目的IP地址认识端口号理解 "端口号" 和 "进程ID理解源端口号和目的端口号 认识TCP协议认识UDP协议什么是面向字节流和面向数据报流以及有无连接是什么意思 网络字节序socket编程接口socket 常见APIsockaddr结构sockaddr_in 结构in_addr结…

下载大文件时内存溢出情况分析解决

基于SpringBoot和阿里的OSS实现了一个下载文件的功能。 大概原理是这样的&#xff1a; 用户请求下载资源&#xff0c;服务端接收到请求之后从OSS中将用户需要的资源捞出来&#xff0c;然后以流的方式写给客户端。 遇到一个这样的问题&#xff1a; 下载小文件没有问题&#…

【C语言刷题系列】水仙花数的打印及进阶

1.水仙花数问题 水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;Armstrong number&#xff09; 水仙花数是指一个 3 位数&a…

去中心化人工智能迸发应用潜力,或给 Web3 带来无限畅想

​ 原文&#xff1a;https://www.caseycaruso.com/thoughts/decentralized-ai 作者&#xff1a;Casey&#xff5c;Paradigm 投资合伙人 编译&#xff1a;TinTinLand 编者注&#xff1a;本文对于去中心化 Web3 技术和人工智能领域之间的交叉应用进行了梳理&#xff0c;并列举了…

springboot130社团管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…