拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在Docker中设置内存和CPU限制

在Docker中设置内存和CPU限制

白鹭 - 2022-11-26 726 0 0

1.概述

在很多情况下,我们需要限制docker主机上资源的使用。

在本教程中,我们将学习如何为Docker容器设置内存和CPU限制。

docker run设置资源限制

docker run命令直接设置资源限制。这是一个简单的解决方案。但是,该限制仅适用于图像的一种特定执行。

2.1 内存限制

例如,让我们将容器可以使用的内存限制为512 MB。要限制内存,我们需要使用m参数:

$ docker run -m 512m nginx

我们还可以设置称为保留的软限制。当docker检测到主机上的内存不足时将激活它:

$ docker run -m 512m --memory-reservation=256m nginx

2.2 CPU限制

默认情况下,对主机的计算能力的访问不受限制。我们可以使用cpus参数设置CPU限制。例如,让我们限制容器最多使用两个CPU:

$ docker run --cpus=2 nginx

我们还可以指定CPU分配的优先级。默认值为1024,数字越大优先级越高:

$ docker run --cpus=2 --cpu-shares=2000 nginx

与内存保留类似,当计算能力不足且需要在竞争进程之间分配时,CPU份额扮演着主要角色。

3.使用docker-compose文件设置内存限制

docker-compose文件获得类似的结果。 docker-compose的格式和可能性会有所不同。

3.1。 docker swarm版本3和更高版本

让我们给Nginx服务限制一半的CPU和512 MB的内存,以及保留四分之一的CPU和128 MB的内存。我们需要在我们的服务配置中deploy ”然后是“ resources ”段:

services:

 service:

 image: nginx

 deploy:

 resources:

 limits:

 cpus: 0.50

 memory: 512M

 reservations:

 cpus: 0.25

 memory: 128M

要利用deploy段,我们需要使用docker stack命令。要将堆栈部署到集群,我们运行deploy命令:

$ docker stack deploy --compose-file docker-compose.yml bael_stack

3.2。版本2与docker-compose

在较早版本的docker-compose,我们可以将资源限制与服务的主要属性置于同一级别。它们的命名也略有不同:

service:

 image: nginx

 mem_limit: 512m

 mem_reservation: 128M

 cpus: 0.5

 ports:

 - "80:80"

要创建已配置的容器,我们需要运行docker-compose命令:

$ docker-compose up

4.验证资源使用情况

设置限制后,我们可以使用docker stats命令验证它们:

$ docker stats

 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

 8ad2f2c17078 bael_stack_service.1.jz2ks49finy61kiq1r12da73k 0.00% 2.578MiB / 512MiB 0.50% 936B / 0B 0B / 0B 2

5.总结

在本教程中,我们探索了限制docker访问主机资源的方法。我们研究了docker rundocker-compose命令的用法。最后,我们使用docker stats控制资源消耗。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *