Limite de Hardware | Docker
- Limite de Hardware | Docker
Dockerfile
docker run -d --name meu-container-nginx \
--memory="512m" \ # Limite de memória de 512 MB
--cpus="1.5" \ # Limite de 1.5 núcleos de CPU
-p 8080:80 \
meu-servidor-nginx
Docker-compose
version: '3.8' # Versão do Docker Compose
services:
web:
build: .
container_name: meu-container-nginx
ports:
- "8080:80" # Mapeia a porta 8080 do host para a porta 80 do contêiner
deploy:
resources:
limits:
cpus: '1.5' # Limita o contêiner a utilizar 1.5 núcleos da CPU
memory: 512M # Limite de memória de 512 MB
Aqui está uma documentação abrangente sobre como limitar o uso de CPU e memória de contêineres com Docker. Esses recursos de controle são importantes para garantir que contêineres não consumam mais do que o necessário, especialmente em ambientes de produção, onde o uso eficiente de recursos é crucial.
1. Limitação de CPU
Docker permite limitar o uso de CPU de um contêiner com várias opções de configuração. Essas opções ajudam a definir tanto o máximo de CPU que um contêiner pode consumir quanto a prioridade de CPU em ambientes onde múltiplos contêineres competem pelo uso de CPU.
1.1 Opção --cpus
-
Descrição: Define o número máximo de CPUs que o contêiner pode utilizar.
-
Sintaxe:
--cpus=<número> -
Exemplo: Para limitar um contêiner a 1.5 CPUs:
docker run --cpus="1.5" my-container
1.2 Opção --cpu-shares
-
Descrição: Define a prioridade do contêiner para o uso de CPU em um ambiente de compartilhamento. A unidade é em "shares" (compartilhamentos). O valor padrão é 1024.
-
Nota: Não limita o uso de CPU, mas ajusta a prioridade entre contêineres que competem pelo mesmo recurso.
-
Sintaxe:
--cpu-shares=<valor> -
Exemplo: Para dar prioridade menor (metade) a um contêiner:
docker run --cpu-shares=512 my-container
1.3 Opções --cpu-quota e --cpu-period
Essas opções são usadas juntas para definir uma quota de CPU em microssegundos.
-
--cpu-period: Define o período de tempo em microssegundos. O padrão é 100.000 µs (0,1 segundo). -
--cpu-quota: Define o tempo máximo de CPU em microssegundos que o contêiner pode usar no período definido. -
Sintaxe:
--cpu-period=<microssegundos>e--cpu-quota=<microssegundos> -
Exemplo: Para limitar um contêiner a 50% de um núcleo de CPU:
docker run --cpu-period=100000 --cpu-quota=50000 my-container
2. Limitação de Memória
Docker permite definir limites de uso de memória para impedir que um contêiner consuma toda a memória disponível no sistema. Esses limites ajudam a evitar problemas de desempenho e sobrecarga de memória.
2.1 Opção --memory
-
Descrição: Define o limite máximo de memória que o contêiner pode usar.
-
Sintaxe:
--memory=<valor> -
Exemplo: Para limitar o contêiner a 512 MB de RAM:
docker run --memory="512m" my-container
2.2 Opção --memory-swap
-
Descrição: Define o limite combinado de memória e swap que o contêiner pode usar. Se o valor for igual ao de
--memory, o swap estará desativado. -
Sintaxe:
--memory-swap=<valor> -
Exemplo: Para definir 1 GB de memória total (512 MB de RAM + 512 MB de swap):
docker run --memory="512m" --memory-swap="1g" my-container
2.3 Opção --memory-reservation
-
Descrição: Define o uso "reservado" de memória para o contêiner, ou seja, a quantidade mínima de memória que será reservada para ele.
-
Sintaxe:
--memory-reservation=<valor> -
Exemplo: Para reservar 256 MB de memória:
docker run --memory-reservation="256m" my-container
3. Limitação de Memória e CPU combinadas
É possível combinar várias dessas opções para criar contêineres com limites de uso de CPU e memória.
Exemplo Completo
Limitar um contêiner a 1 CPU, 256 MB de memória, 512 MB de memória + swap e 128 MB de memória reservada:
docker run --cpus="1" --memory="256m" --memory-swap="512m" --memory-reservation="128m" my-container
4. Resumo das Opções
| Opção | Descrição | Exemplo |
|---|---|---|
--cpus | Limita o uso de CPUs (frações de núcleo) | --cpus="1.5" |
--cpu-shares | Define prioridade de CPU | --cpu-shares=512 |
--cpu-quota | Limita o tempo de CPU em cada período | --cpu-quota=50000 |
--cpu-period | Define a duração do período para cpu-quota | --cpu-period=100000 |
--memory | Define o limite de memória | --memory="256m" |
--memory-swap | Define limite combinado de memória + swap | --memory-swap="512m" |
--memory-reservation | Define a memória mínima reservada | --memory-reservation="128m" |