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

Docker 资源限制与容器管理

Docker 资源限制与容器管理

一、容器底层技术

Docker 容器依赖于三大核心底层技术:

  • Namespace:资源隔离
  • Cgroups:资源限制
  • Union File System:镜像分层存储与管理
Namespace 详解

Namespace 将全局系统资源封装成独立的视图,实现进程间的资源隔离

Namespace 类型作用
UTS隔离主机名与域名
IPC隔离进程间通信(信号量、消息队列、共享内存)
PID隔离进程ID
Mount隔离文件系统挂载点
User隔离用户和用户组ID
Network隔离网络设备、IP、端口等

二、Cgroups 资源控制

Cgroups 是 Linux 内核提供的机制,用于限制、记录和隔离进程组对物理资源的使用

[root@docker ~]# docker run --name mycentos1 -itd -m 200M centos:7# 查看 cgroup 目录结构
[root@docker ~]# ls /sys/fs/cgroup/# 查看容器内存限制
[root@docker ~]# cat /sys/fs/cgroup/memory/docker/87b8ed6122a0010ea9528cd63eccd7cefb06872d0cf52b837d1493856a32b68b/memory.limit_in_bytes 

在这里插入图片描述

三、内存限制

常用参数
参数说明
-m, --memory限制物理内存使用量
--memory-swap物理内存 + Swap 总限制
--memory-reservation软性内存限制
--kernel-memory内核内存限制
--oom-kill-disable禁用 OOM Killer
--memory-swappiness控制 Swap 使用倾向(0-100)
--oom-score-adjOOM 优先级(-1000~1000)
示例
[root@docker ~]# vim Dockerfile
[root@docker ~]# docker build -t stress .
FROM ubuntu:trusty
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress", "--verbose"]
# 限制内存为50M
[root@docker ~]# docker run -it --name a1 --rm -m 50M stress --vm 1 --vm-bytes 30M# 限制内存 + Swap 总和使用
[root@docker ~]# docker run -it --name a1 --rm -m 50M --memory-swap=100M stress --vm 1 --vm-bytes 70M# 设置内存软限制
[root@docker ~]# docker run -it -m 100M --memory-reservation 50M centos:7# 禁用 OOM Killer
[root@docker ~]# docker run -it -m 100M --oom-kill-disable centos:7

四、CPU 限制

常用参数
参数说明
-c, --cpu-sharesCPU 份额(相对权重)
--cpu-periodCFS 调度周期(微秒)
--cpu-quotaCFS 周期内最多使用时间
--cpuset-cpus绑定使用的 CPU 核心
--cpuset-mems绑定使用的内存节点(NUMA)
示例

分别开三个终端输入代码

创建两个容器a1和a2,a1的cpu权重为512,a2的cpu权重为1024,,同时将Docker host上的cpu全部占满

# 设置 CPU 权重
[root@docker ~]# docker run -it --name a1 --rm -c 512 stress --cpu 4
[root@docker ~]# docker run -it --name a2 --rm -c 1024 stress --cpu 4

在这里插入图片描述

分别开两个终端输入代码

参数-cpuset-cpus用于设置容器可以使用的CPU核数,示例如下,将容器中的工作进程运行在cpu1和cpu3上面

[root@docker ~]# docker run -it --name a1 --rm --cpuset-cpus="1,3" stress --vm 2 --vm-bytes 100M

在这里插入图片描述

五、Block IO 限制

常用参数
参数说明
--blkio-weight块设备 IO 权重(10-1000)
--blkio-weight-device指定设备的 IO 权重
--device-read-bps限制设备读取速率
--device-write-bps限制设备写入速率
--device-read-iops限制设备读取 IOPS
--device-write-iops限制设备写入 IOPS
示例

默认情况下,所有的容器都是平级的读写磁盘,可以通过–blkio-weight参数设置容器读写磁盘的优先级

两个结果对比并不明显,因为Docker host不是那么的繁忙

# 设置 IO 权重
[root@docker ~]# docker run --name test1 -it --rm --blkio-weight 100 centos:7
[root@64dd6f1517e8 /]# time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct

在这里插入图片描述

# 设置 IO 权重
[root@docker ~]# docker run --name test2 -it --rm --blkio-weight 1000 centos:7
[root@258187a4420f /]# time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct

在这里插入图片描述

默认情况下,Docker对容器的写速度是没有限制的,我们可以使用–device-write-bps参数限制容器对硬盘些速度的限制

# 限制写入速率
[root@docker ~]# docker run --name test3 -it --rm --device-write-bps /dev/sda:1mb centos:7
[root@3d2be40427f0 /]# time dd if=/dev/zero of=test.out bs=1M count=20 oflag=direct

在这里插入图片描述

六、总结

  1. Namespace 实现资源隔离,包括 UTS、IPC、PID、Mount、User、Network 六种
  2. Cgroups 实现资源限制,相关配置位于 /sys/fs/cgroup/
  3. Docker 容器资源限制仅影响实际资源使用,容器内仍“看到”完整主机资源视图
  4. 资源限制类型包括:内存、CPU、Block IO,可通过 docker run 参数灵活配置
http://www.dtcms.com/a/479178.html

相关文章:

  • 2025直播美颜sdk洞察报告:人脸美型算法、AI修复与实时渲染创新
  • 鸿蒙:实现列表单项左滑删除
  • 【TIDE DIARY 4】Agentic Retrieval-Augmented Generation: A Survey on Agentic RAG
  • 免费 网站点击wordpress移动端禁止放大
  • s3fs 取消挂载
  • 新增模块介绍:教师代课统计系统(由社区 @记得微笑 贡献)
  • 15. shell编程之#!与/bin/bas 之间需要空格吗
  • 套模板网站网络seo优化推广
  • 聪明的上海网站帮别人做网站推广犯法吗
  • HTML 总结
  • HTML应用指南:利用POST请求获取全国塔斯汀门店位置信息
  • 鞍山 网站建设网站规划网站建设报价表
  • 云服务器怎么设置虚拟IP,云服务器能起虚拟ip吗
  • Fast DDS 默认传输机制详解:共享内存与 UDP 的智能选择
  • thinkphp开发企业网站如何做优酷网站点击赚钱
  • 供应链金融对生命科学仪器企业市场竞争力的影响研究
  • 高性能高可用设计
  • 【系统分析师】写作框架:需求分析方法及应用
  • dedecms 做网站青岛企业网站建设公司
  • wordpress网仿站建设项目前期收费查询网站
  • tcp和udp协议报文段的报文格式
  • C#异步编程:async修饰方法的返回类型说明
  • MC33PT2000控制主要功能函数代码详解三
  • C语言--数据类型
  • 需求冻结后仍频繁突破怎么办
  • 做外贸电商网站士兵突击网站怎么做
  • Windows7MasterSetup_1.0.0.25.exe 怎么安装?完整操作步骤
  • dify-on-wechat部署(gewechat在2025-5-08已停用)本文只做记录
  • 网站建设答辩ppt下载教育wordpress模板下载
  • asp网站管理系统源码自动升级wordpress失败