飞天使-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和内存的资源限制应根据实际需求进行调整,以确保容器能够正常工作并且不过度占用系统资源。根据应用程序的要求和系统的可用资源,可以灵活地设置适当的限制。

参考资料马哥

相关推荐
小p11 小时前
docker学习7:docker 容器的通信方式
docker
小p12 小时前
docker学习5:提升Dockerfile水平的5个技巧
docker
小p13 小时前
docker学习3:docker是怎么实现的?
docker
小p2 天前
docker学习: 2. 构建镜像Dockerfile
docker
小p2 天前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪3 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀3 天前
Docker部署Nacos
docker·容器
缓解AI焦虑3 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
1candobetter3 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet