暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker环境下资源管控实践

IT那活儿 2025-03-18
97

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


概 述

随着容器技术的兴起,Docker已经成为容器化应用的首选平台。它提供了一个轻量级、可移植的容器环境,使得应用的部署、扩展和管理变得更加简单和高效。

然而,随着应用规模的增长和复杂性的提高,如何有效地管理Docker容器的资源配置成为了一个重要的议题。

资源配置管理不仅关系到容器的性能和稳定性,还直接影响到整个系统的效率和成本。在传统的虚拟化技术中,资源分配通常是静态的,一旦分配给虚拟机,就难以动态调整。而Docker容器的轻量级特性允许我们更灵活地进行资源配置管理。通过合理配置资源,可以确保容器在有限的资源下高效运行,同时避免资源浪费和系统过载。

本案主要是研究CPU和内存如何资源管理。


环境准备

2.1 Docker版本

2.2 Pod压测工具stress

yum install -y epel-release

yum install stress -y

2.3 基础镜像


资源管控实践

3.1 Docker运行容器控制CPU使用

docker run --help | grep cpu-shares

参数: -c, --cpu-shares int

说明: 设置容器的 CPU 份额值 (相对权重)。

  • --cpu-shares参数

    用于在创建容器时指定容器所使用的 CPU 份额值。在同一个 CPU 核心上同时运行多个容器时,CPU 加权值的效果才会显现出来。

  • --cpuset-cpus

    指定容器可以使用的具体CPU是哪个 。

  • --cpuset-mems

    指定容器可以使用的内存节点。是 Docker 命令的一个参数,它允许你指定容器可以使用的内存节点。这个参数特别适用于非一致存储访问(NUMA)架构的服务器,在这样的服务器中,内存分布在多个节点上,每个节点都有自己的CPU核心

3.2 CPU资源配额实验

1)创建两个容器实例

docker1 和docker2。 让docker1和docker2只运行在cpu0和cpu1上,最终测试一下docker1和docker2使用cpu的百分比。

2docker run -itd --name docker1 --cpuset-cpus 0,1 --cpu-shares 512 rockylinux:8.9 bin/bash

docker run -itd --name docker2 --cpuset-cpus 0,1 --cpu-shares 1024 rockylinux:8.9 bin/bash

2)测试过程

案例1:在docker1上运行stress -c 2 -v   -t  10m

宿主机观察只有cpu0,cpu1占有CPU100%,cpu2,cpu3未占有cpu。

案例2:在docker1上运行stress -c 2 -i 2 --verbose --timeout 20s

宿主机观察只有cpu0,cpu1占有CPU,由于份额不一样,docker2所占cpu是docker1的2倍。

3.3 Docker运行容器控制Mem内存使用

Docker提供参数-m, --memory=""限制容器的内存使用量:

docker run -it  -m 128m rockylinux:8.9

3.4 Docker对运行容器控制内存及CPU

docker run -it --cpuset-cpus 0,1 -m 128m rockylinux:8.9


END


本文作者:唐田寿(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论