Skip to main content

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çãoDescriçãoExemplo
--cpusLimita o uso de CPUs (frações de núcleo)--cpus="1.5"
--cpu-sharesDefine prioridade de CPU--cpu-shares=512
--cpu-quotaLimita o tempo de CPU em cada período--cpu-quota=50000
--cpu-periodDefine a duração do período para cpu-quota--cpu-period=100000
--memoryDefine o limite de memória--memory="256m"
--memory-swapDefine limite combinado de memória + swap--memory-swap="512m"
--memory-reservationDefine a memória mínima reservada--memory-reservation="128m"