如何設置Docker容器的CPU和內存使用限制


如何設置Docker容器的CPU和內存使用限制
1. 概述
在很多情況下,我們需要限制docker主機上資源的使用。

在本教程中,我們將學習如何設置docker容器的內存和CPU限制

2. 通過docker run來限制Docker容器資源
我們可以使用docker run命令直接設置資源限制。這是一個簡單的辦法。但是,該限制於只適用於映像的一次特定執行任務

2.1 Memory 內存限制
例如,讓我們將容器可以使用的內存限制為512mb

docker run -m 512m nginx
1
我們還可以設置一個軟限制或者叫保留,當docker檢測到主機內存不足時激活:

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

1
2
2.2 CPU 限制
默認情況下,訪問主機的CPU是無限制的,我們可以使用CPUs參數設置cpu限制。例如,讓我們約束容器最多使用兩個cpu:

docker run --cpus=2 nginx

1
2
我們還可以指定CPU分配的優先級。默認值是1024,數字越高優先級越高:

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

1
2
與內存保留,當計算能力不足且需要在競爭進程之間進行分配時,CPU共享起主要作用

3. 使用docker-compose文件來設置容器資源
我們可以使用docker-compose文件來實現類似的結果。請注意,不同版本的docker-compose的格式設置上是不同的

3.1 docker swarm Versions 3 以上的版本
讓我們給Nginx的服務限制是一半的CPU和512m的內存,保留四分之一的CPU和128m的內存。我們需要在我們的服務配置中創建“部署”和“資源”分段:

services:
service:
image: nginx
deploy:
resources:
limits:
cpus: 0.50
memory: 512M
reservations:
cpus: 0.25
memory: 128M

1
2
3
4
5
6
7
8
9
10
11
12
一般情況下容器的cpus使用被限制在一半,內存為512MB ,如果服務器資源緊張的時候,cpus占用變為1/4,內存占用被限制為128MB

如果要使用上述docker-compose.yaml部署應用我們需要使用docker stack命令 , 部署應用到swarm中

docker stack deploy --compose-file docker-compose.yml bael_stack
1
3.2 docker-compose Version 2 配置方式
在舊版本的docker-compose中,我們可以將資源限制放在與服務的主要屬性相同的級別上。它們的名字也略有不同:

service:
image: nginx
mem_limit: 512m
mem_reservation: 128M
cpus: 0.5
ports:
- "80:80"
1
2
3
4
5
6
7
要部署上面的docker-compose.yaml應用,我們需要執行:

docker-compose up

1
2
4. 驗證容器資源使用
一但,我們設置了Docker容器的資源使用,我們可以用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

1
2
3
4
5
5. 結論
本文中,我們討論了如何設置Docker容器資源的設置方法
————————————————
版權聲明:本文為CSDN博主「kerongao」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kerongao/article/details/110385425


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM