在Docker中設置內存和CPU限制
瀏覽人數:3,747最近更新:
- Docker
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 run
和docker-compose
命令的用法。最後,我們使用docker stats
控制資源消耗。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議