Pular para o conteúdo

Soluções · Contêineres

De quanto servidor o Docker precisa?

Contêineres são processos que compartilham um kernel, não pequenas máquinas virtuais: o daemon ocupa cerca de 100 MB e tudo o que vem depois são apenas seus próprios processos. Então a resposta é menor do que a pergunta espera: um proxy, um app, um banco de dados e um cache somam cerca de 515 MB juntos, o que cabe com folga no BD-8 por $12.90.

O que um contêiner realmente ocupa

Faixas, não benchmarks

Sua imagem, configuração e tráfego alteram esses valores mais do que qualquer tabela. Execute docker stats na sua própria stack: esse é o único número que se aplica a você.

Memória residente típica de cargas de trabalho comuns em contêineres
ContêinerMemória típicaCabe no BD-8 (8 GB)
Um proxy reversonginx, Caddy, Traefik15–60 MB129 no limite superior
Um pequeno app webNode, Python, Go: um processo60–200 MB38 no limite superior
PostgreSQL ou MySQLdataset pequeno, pool padrão200–500 MB15 no limite superior
Rediscomo cache, limitado por maxmemory20–200 MB38 no limite superior
Um serviço JVMJava, Kotlin, Elasticsearch500–2000 MB3 no limite superior

A aritmética

O que cada plano comporta

A memória, menos 300 MB para o sistema operacional e 100 MB para o daemon, dividida pelo que seus contêineres ocupam. A coluna do meio é uma stack inteira (proxy, app, banco de dados, cache) com cerca de 515 MB.

Capacidade de contêineres e stacks por plano, com disco e preços em tempo real
PlanoRAMStacks inteirasApps pequenosDiscoPreçoImplantar
VPS-11 GB1325 GB$9.90Implantar
BD-88 GB1538100 GB$12.90Implantar
BD-1212 GB2359200 GB$17.90Implantar
BD-2424 GB46120300 GB$31.90Implantar

O disco é a segunda surpresa, e a que aparece mais tarde: imagens, volumes e logs se acumulam silenciosamente. Coloque docker system prune em um cron semanal antes que se torne urgente, não depois.

Contra nós mesmos

Quando você não deve comprar isto

Uma plataforma de contêineres gerenciada custa mais porque faz a operação. Isso é algo real a se comprar.

Um VPS lhe dá root e deixa com você as atualizações, as reinicializações, os certificados e os alertas de plantão. Isso é muito mais barato e dá, de fato, mais trabalho. Se você não quer esse trabalho, uma plataforma gerenciada é a resposta honesta, e preferimos indicá-la a vender uma máquina que acaba abandonada com um daemon sem patches exposto à internet. Dois conselhos menores no mesmo sentido: defina um limite de memória em cada contêiner, para que o que se comportar mal morra no lugar do seu banco de dados, e não recorra ao Kubernetes em uma só máquina: um orquestrador sem nada para agendar é só complexidade.

Perguntas

O que as pessoas perguntam antes de comprar.

Quanta RAM o próprio Docker usa?
Muito pouca, e é isso que surpreende as pessoas. O daemon do Docker ocupa cerca de 100 MB e cada contêiner depois disso é apenas um processo: não há um segundo sistema operacional, nem um segundo kernel, nem um custo fixo por contêiner como há em uma máquina virtual. Então a aritmética é simples: a memória da sua máquina, menos cerca de 300 MB para o sistema operacional e 100 MB para o daemon, dividida entre os processos que você realmente executa.
Quantos contêineres um VPS pequeno consegue rodar?
Mais do que a pergunta sugere, porque "um contêiner" não é uma unidade de tamanho. Dez proxies reversos e um Elasticsearch são máquinas totalmente diferentes. No BD-8 (8 GB por $12.90), um proxy, um app web, um banco de dados e um cache juntos somam cerca de 515 MB, o que deixa a maior parte da máquina livre. A tabela acima faz a divisão; execute `docker stats` na sua própria stack para obter o número que realmente se aplica a você.
Um VPS é mais barato que uma plataforma de contêineres gerenciada?
Quase sempre no preço, e essa não é a comparação inteira. Uma plataforma cobra mais porque faz a operação: atualizações, reinicializações, certificados, o alerta às 3 da manhã. Um VPS lhe dá root e devolve tudo isso a você. Se você quer rodar contêineres e está disposto a assumir esse trabalho, um VPS é muito mais barato. Se prefere não assumir, pague a plataforma: preferimos dizer isso a vender uma máquina que acaba abandonada com um daemon sem patches.
Preciso de Docker Swarm ou Kubernetes?
Em uma só máquina, não. O Compose basta para uma stack que vive em um único servidor, e é a resposta certa para a grande maioria das configurações auto-hospedadas: o trabalho de um orquestrador é agendar entre máquinas e, com uma só máquina, não há nada a agendar. Recorra ao Kubernetes quando você realmente tiver várias máquinas e um motivo para a complexidade, não antes.
O que falha primeiro: memória, CPU ou disco?
A memória, geralmente, e ela falha de forma ruidosa: o OOM killer do kernel escolhe um processo e o encerra, o que parece um contêiner reiniciando misteriosamente. Defina limites de memória por contêiner para que quem se comporta mal seja quem morre, e não o seu banco de dados. O disco é a segunda surpresa: imagens, volumes e logs se acumulam silenciosamente, então `docker system prune` deve estar em um cron semanal bem antes de se tornar urgente.
Qual imagem o host deve rodar?
Qualquer uma das nossas: todos os planos executam todas as imagens e o Docker roda em todas elas. O Ubuntu LTS é o padrão que vale escolher se você não tem preferência, simplesmente porque a maior parte da documentação de contêineres o pressupõe. A distribuição importa muito menos do que parece: os contêineres trazem seu próprio userland, então o host é pouco mais que um kernel e um daemon.