LXC ou VM no Proxmox? Compare consumo, isolamento e suporte a Docker, saiba quando usar cada um e veja como criar um container LXC.
Para que serve
O Proxmox VE oferece dois tipos de "máquina": VMs (KVM/QEMU), que emulam um computador completo com kernel próprio, e containers LXC (CT), que compartilham o kernel do host e isolam apenas processos, rede e sistema de arquivos. Os dois aparecem lado a lado na interface, mas têm usos diferentes. Este artigo ajuda você a decidir entre LXC ou VM no Proxmox e mostra como criar um LXC corretamente.
Diferenças que importam na prática
| Aspecto | Container LXC | VM (KVM) |
|---|---|---|
| Kernel | Usa o kernel do host | Kernel próprio |
| Sistemas suportados | Somente Linux | Linux, Windows, BSD, appliances (pfSense, OPNsense) |
| Consumo | Muito baixo; RAM não usada fica livre para o host | Maior; RAM reservada para a VM (ballooning ajuda) |
| Inicialização | Segundos | Boot completo |
| Isolamento | Menor: uma falha de kernel afeta o host | Forte: hipervisor separa os kernels |
| Migração ao vivo | Não (só migração com reinício) | Sim, entre nós de um cluster |
| Módulos de kernel, NFS/CIFS como cliente, VPN de kernel | Limitado; exige ajustes ou modo privilegiado | Funciona normalmente |
| Docker dentro | Possível, mas não recomendado pelo Proxmox | Recomendado |
LXC ou VM no Proxmox: quando usar cada um
Use LXC para
- Serviços Linux leves e de confiança: DNS (Pi-hole, Unbound), proxy reverso, servidor web simples, Uptime Kuma, Zabbix proxy, servidor de arquivos interno.
- Ambientes de teste e desenvolvimento que você cria e destrói com frequência.
- Quando a densidade importa: dezenas de serviços pequenos no mesmo servidor.
Use VM para
- Windows (RDP, ERP, SQL Server) e qualquer sistema que não seja Linux.
- Firewalls e roteadores virtuais (pfSense, OPNsense).
- Bancos de dados críticos e aplicações de clientes diferentes, em que o isolamento pesa mais que a economia de recursos.
- Hosts Docker/Kubernetes. A documentação do Proxmox recomenda rodar containers de aplicação dentro de uma VM quando você quer isolamento máximo e migração ao vivo.
- Qualquer coisa que dependa de módulos de kernel próprios ou versão específica de kernel.
Pré-requisitos para criar um LXC
- Proxmox VE 8.x ou 9.x acessível pela interface web (porta 8006).
- Um storage com suporte a "Container" (por exemplo
local-lvmou ZFS).
Passo a passo: criar um container LXC
- Baixe um template. Em local → CT Templates → Templates, escolha por exemplo
debian-12-standardoudebian-13-standard. Pelo shell do host:
O nome exato do arquivo muda com as versões; use o que opveam update pveam available --section system | grep debian pveam download local debian-12-standard_12.12-1_amd64.tar.zstpveam availablelistar. - Clique em "Create CT". Deixe marcada a opção Unprivileged container (padrão). Containers não privilegiados mapeiam o root do container para um usuário sem privilégios no host, o que é bem mais seguro.
- Defina senha de root ou chave SSH, disco (ex.: 8–20 GB), CPU, memória e rede (bridge
vmbr0ou a rede interna que você usa, com IP estático ou DHCP). - Em Options → Features, ative
nestingapenas se for rodar systemd mais novo ou Docker dentro do container (em templates recentes ele já vem ativo). - Inicie e acesse com
pct enter IDno host ou pelo console da interface.
Equivalente pela linha de comando:
pct create 120 local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst \
--hostname kuma --cores 2 --memory 1024 --swap 512 \
--rootfs local-lvm:8 --net0 name=eth0,bridge=vmbr0,ip=dhcp \
--unprivileged 1 --features nesting=1 --onboot 1
pct start 120
E o Docker dentro de LXC?
Funciona em muitos casos com nesting=1 (e às vezes keyctl=1), e é bastante usado por quem quer economizar RAM. Mas há riscos reais:
- Atualizações de segurança do runc/containerd já quebraram Docker em LXC não privilegiado (erro
ip_unprivileged_port_start ... permission denied, corrigido no Proxmox VE 9.1). Esse tipo de quebra pode se repetir. - Drivers de armazenamento (overlayfs sobre ZFS, por exemplo) e backups com snapshot podem se comportar de forma diferente.
- Tornar o container privilegiado para "fazer funcionar" elimina o principal benefício de segurança.
Para produção, crie uma VM Debian/Ubuntu e instale o Docker nela (veja também o artigo «Como instalar Docker no Ubuntu e no Debian (com Docker Compose, pelo repositório oficial)»). Para laboratório, LXC é aceitável.
O Proxmox VE 9.1 também passou a aceitar imagens OCI (as mesmas do Docker Hub) como base para containers LXC, inclusive containers de aplicação. O recurso ainda é technology preview: teste antes de depender dele.
Como saber se funcionou
pct list
pct config 120
pct exec 120 -- ip -br a
O container deve aparecer como running, com IP na rede escolhida. Dentro dele, ping 1.1.1.1 e apt update confirmam rede e DNS.
Problemas comuns
- Sem rede no container: confira bridge, gateway e se o IP escolhido não está em uso. Lembre que IPs públicos adicionais do seu bloco precisam estar configurados conforme a rede entregue no servidor.
- "Permission denied" ao montar NFS/CIFS: monte o compartilhamento no host e repasse ao container com bind mount (
pct set 120 -mp0 /mnt/dados,mp=/dados). - Permissões estranhas em bind mounts: em container não privilegiado, o UID 0 do container vira 100000 no host. Ajuste dono dos arquivos no host ou configure mapeamento de IDs.
- Backup lento ou falhando em modo snapshot: verifique se o storage do container suporta snapshot; caso contrário o vzdump usa modo suspend.
Perguntas frequentes
LXC é mais rápido que VM no Proxmox?
O LXC tem menos sobrecarga porque usa o kernel do host e não emula hardware, então inicia em segundos e consome menos RAM. Em CPU e disco a diferença para uma VM com VirtIO costuma ser pequena.
Posso rodar Windows em um container LXC?
Não. O LXC compartilha o kernel Linux do host, então só roda distribuições Linux. Windows, BSD e appliances como pfSense e OPNsense precisam de VM.
É melhor rodar Docker em LXC ou em VM?
Em produção, em VM. Docker em LXC funciona com nesting=1, mas atualizações do runc/containerd já quebraram essa combinação e o isolamento é menor.
Container privilegiado ou não privilegiado?
Prefira sempre o não privilegiado (padrão). Ele mapeia o root do container para um usuário sem privilégios no host, o que limita o estrago em caso de invasão.
Para entender os conceitos de virtualização, veja também o artigo «O que é virtualização e hypervisor: Proxmox VE, VMware ESXi e Hyper-V comparados». Se a dúvida é sobre orquestração, veja «Kubernetes ou Docker Compose: quando vale a pena migrar no seu servidor dedicado».
Leitura complementar
Precisa de ajuda? Abra um ticket ou fale com o suporte pelo WhatsApp.
