飞天使-docker知识点8-docker的资源限制

文章目录

容器资源限制
复制代码
Docker提供了多种资源限制的方式,可以根据应用程序的需求和系统资源的可用性进行选择。以下是一些常见的Docker资源限制及其使用情况:

CPU限制:通过设置CPU的配额(quota)和周期(period),可以限制容器使用的CPU时间片。这种资源限制在大多数情况下被广泛使用,以确保容器之间公平地共享CPU资源。

内存限制:通过设置容器的最大内存限制,可以限制容器使用的物理内存量。这对于避免容器过度消耗系统内存并导致系统崩溃非常有用。

网络带宽限制:可以使用Docker网络驱动程序设置容器的网络带宽限制。这对于保证网络资源的公平分配以及限制容器对网络的占用非常有用。

磁盘IO限制:可以使用I/O调度程序或限制磁盘带宽来限制容器的磁盘IO。这对于避免容器对磁盘资源的过度占用以及确保系统磁盘性能的稳定性非常重要。

GPU限制:对于需要使用GPU资源的容器,可以使用专门的GPU管理工具(如NVIDIA Docker)来限制容器对GPU的访问。

在实际应用中,CPU和内存限制是最常见的资源限制方式,因为它们可以直接影响容器的性能和稳定性。但具体使用哪种资源限制最多还是要根据应用场景和需求来决定。不同的应用可能对不同的资源有不同的需求,因此在使用Docker时需要根据具体情况进行调整和优化。


当容器内存资源不足时,Linux内核会使用Out of Memory(OOM)机制选择一个或多个进程进行杀死,以释放内存。如果你希望在容器内存不足时禁用OOM,可以通过以下方式进行设置:

在运行容器时设置--oom-kill-disable参数:

docker run --oom-kill-disable my-container
这将禁用容器的OOM机制,使其在内存不足时不会被自动终止。

在容器中设置oom_score_adj值:
在容器内部,你可以使用echo命令将oom_score_adj设置为一个较高的值,表示容器对OOM机制的"免疫力"更强。

echo -1000 > /proc/self/oom_score_adj
这将使得容器内的进程在OOM发生时更不可能被选中终止。

请注意,禁用OOM机制可能会导致内存问题进一步扩大,可能导致系统性能下降或容器崩溃。因此,在实际应用中,建议根据实际情况和需求来权衡是否禁用OOM机制,并确保适当的内存资源可供容器使用。


主要是限制 cpu 和 内存,磁盘io 限制没有用
cpu是可压缩性资源
内存不是可压缩性资源

oom_adj 调整可以避免oom 的出现

--oom-kill-disable  


示例
复制代码
当使用Docker时,最常用的资源限制是CPU和内存限制。以下是它们的简要说明:

CPU资源限制:

--cpus:通过设置该参数,可以限制容器可以使用的CPU核心数。例如,使用--cpus=2表示容器最多可以使用2个CPU核心。
--cpu-shares:通过设置该参数,可以为容器分配CPU时间片的相对权重。较高的权重值表示容器将获得更多的CPU时间。默认情况下,所有容器的权重值相等。
内存资源限制:

--memory:通过设置该参数,可以限制容器可以使用的物理内存量。例如,使用--memory=4g表示容器最多可以使用4GB的内存。
--memory-swap:通过设置该参数,可以限制容器可以使用的交换空间(swap)。例如,使用--memory-swap=8g表示容器最多可以使用8GB的交换空间,这包括实际内存和交换空间的总和。
这些参数可以在运行容器时通过docker run命令进行设置,例如:

docker run --cpus=2 --memory=4g my-container
这样就会限制容器只能使用2个CPU核心和最多4GB的内存。

需要注意的是,CPU和内存的资源限制应根据实际需求进行调整,以确保容器能够正常工作并且不过度占用系统资源。根据应用程序的要求和系统的可用资源,可以灵活地设置适当的限制。

参考资料马哥

相关推荐
睡不醒男孩03082328 分钟前
生产环境故障销账:PostgreSQL 突发连接数暴涨与死锁,如何利用 CLup 秒级定位与解锁?
运维·数据库
至乐活着1 小时前
Docker Compose多服务编排实战:从零搭建Node.js+MySQL+Redis全栈应用
docker·微服务·devops·容器编排·compose
木雷坞1 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
志栋智能1 小时前
从固定周期到动态触发:超自动化巡检的智能调度
运维·网络·自动化
中云DDoS CC防护蔡蔡1 小时前
游戏杀手- ACCN
运维·服务器·经验分享·网络安全·ddos
睡不醒男孩0308231 小时前
PostgreSQL 数据库运维转型:从传统模式到 CLup 平台的 25 个核心 FAQ
运维·数据库·postgresql
whyfail1 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器
无限进步_1 小时前
【Linux】系统级文件I/O与文件描述符深度剖析
linux·运维·服务器
虾壳云官方1 小时前
openclaw 一键安装教程(2026年6月15最新)
运维·人工智能·windows·自动化·openclaw
biter down2 小时前
2:Ubuntu 22.04 LTS 的完整下载教程
linux·运维·ubuntu