Incus: Contentores System-Level para Virtualização Leve na PME
O Incus é uma plataforma de virtualização leve que combina contentores system-level e máquinas virtuais num único sistema. Para uma PME que precisa de correr serviços isolados sem o peso de hypervisors tradicionais, o Incus oferece uma alternativa eficiente com gestão simplificada via CLI ou interface web.
ℹ O Incus é o sucessor comunitário do LXD — após a Canonical ter fechado o LXD, a comunidade criou o Incus com a mesma base.
Neste artigo:
- Introdução ao Incus
- Contentores System-Level vs Contentores de Aplicação
- Instalação e Configuração
- Criar e Gerir Containers
- VMs com Incus
- Casos de Uso PME
- Erros Comuns e Lista de Verificação
1. Introdução ao Incus
O Incus é um gestor de contentores e máquinas virtuais desenvolvido pela comunidade Linux Containers. Resulta de um fork do LXD após a Canonical ter restringido o projecto, mantendo total compatibilidade com a base de código original. O projecto é gerido pela Linux Containers e o código-fonte está disponível no GitHub.
Diferente do Docker, que isola aplicações individuais, o Incus corre sistemas operativos completos — contentores system-level — com overhead mínimo. Cada contentor tem o seu próprio init, serviços e utilizadores, comportando-se como uma máquina virtual leve mas sem a penalidade de performance de um hypervisor completo.
Principais características do Incus:
- Contentores system-level e VMs numa única ferramenta
- Gestão via CLI (
incus) ou interface web - Suporte para dezenas de distribuições Linux via imagens oficiais
- Rede ponte, VLAN e clustering nativo
- Instantâneos, migração a quente e replicação entre nós
- Integração com infraestruturas de armazenamento (ZFS, Btrfs, LVM, Ceph)
O Incus foi incluído no projecto Linux Containers em Dezembro de 2023 e tem recebido actualizações regulares, sendo actualmente a opção recomendada para quem usava LXD. A migração do LXD para Incus é suportada nativamente através do comando incus admin migrate.
2. Contentores System-Level vs Contentores de Aplicação
⚠ Contentores system-level não substituem Docker — Incus corre sistemas completos, Docker corre aplicações isoladas.
A distinção entre contentores system-level e contentores de aplicação é fundamental para perceber onde o Incus se encaixa. Ambos usam namespaces e cgroups do kernel Linux, mas com filosofias diferentes.
| Característica | Incus (System-Level) | Docker (Application) |
|---|---|---|
| Unidade isolada | Sistema operativo completo | Aplicação individual |
| Init system | systemd/sysvinit completo | Processo único da app |
| Ciclo de vida | Persistente (sempre activo) | Efémero (criado/destruído) |
| Casos de uso | Servidores, BDs, serviços longos | Microserviços, CI/CD, lote |
| Imagens | Distribuições Linux completas | Camadas de aplicação |
| VMs | Suporta (--vm) |
Não suporta |
Em termos práticos: o Docker é ideal para deploy de aplicações web em pipelines de CI/CD (ver Curso Linux Dia 21: Docker), enquanto o Incus é melhor para correr múltiplos serviços isolados que precisam de persistir — como um servidor de base de dados, um servidor de correio ou um ambiente de desenvolvimento completo. O Podman ocupa um espaço intermédio, oferecendo contentores sem privilégios compatíveis com Docker.
3. Instalação e Configuração
O Incus está disponível via snap em distribuições baseadas em Debian, Ubuntu, Fedora e outras. A instalação é directa:
# Instalar Incus via snap
sudo snap install incus --classic
Após a instalação, é necessário inicializar o Incus com o comando interactivo de configuração. Este passo cria a rede bridge, define o storage pool e configura o ambiente base:
# Inicializar Incus
sudo incus admin init
O incus admin init apresenta um assistente interactivo com opções para:
- Storage pool: ZFS (recomendado), Btrfs, LVM ou directório
- Rede ponte: cria
incusbr0com DHCP automático - IPv6: opcional, habilitar se a rede suportar
- Clustering: activar apenas em implementações multi-nó
Para que um utilizador não-root possa gerir contentores, adicioná-lo ao grupo incus-admin:
# Adicionar utilizador ao grupo incus-admin
sudo usermod -aG incus-admin $USER
# Aplicar sem reiniciar
newgrp incus-admin
4. Criar e Gerir Containers
A criação de contentores é simples. O Incus suporta múltiplas distribuições através do repositório de imagens oficial (images:):
# Criar contentor Debian 12
incus launch images:debian/12 debian-vm
# Listar contentores
incus list
O comando launch cria e inicia o contentor num único passo. Para aceder ao interior do contentor e executar comandos:
# Aceder ao contentor
incus exec debian-vm -- bash
A configuração de rede é um aspecto essencial. Por defeito, o Incus cria uma bridge incusbr0 que fornece conectividade NAT aos contentores. Para expor serviços, pode-se configurar reencaminhamento de porto ou adicionar dispositivos de rede:
# Configurar rede
incus profile device add default eth0 nic nictype=bridged parent=incusbr0
Operações essenciais de gestão diária:
| Operação | Comando |
|---|---|
| Parar contentor | incus stop debian-vm |
| Iniciar contentor | incus start debian-vm |
| Eliminar contentor | incus delete debian-vm |
| Snapshot | incus snapshot create debian-vm snap1 |
| Ver configuração | incus config show debian-vm |
| Migrar do LXD | incus admin migrate |
Os profiles permitem definir configurações reutilizáveis. O profile default é aplicado a todos os contentores e pode ser personalizado para incluir dispositivos de rede, limits de CPU/memória e variáveis de ambiente.
5. VMs com Incus
Uma das funcionalidades mais distintivas do Incus é a capacidade de criar máquinas virtuais completas com o mesmo CLI usado para contentores. As VMs usam QEMU como backend, oferecendo isolamento total via virtualização por hardware:
# Criar VM (não container)
incus launch images:debian/12 debian-vm --vm
A flag --vm indica ao Incus para criar uma máquina virtual em vez de um contentor. As VMs oferecem:
- Isolamento total do kernel — cada VM tem o seu próprio kernel
- Segurança reforçada para workloads não confiáveis
- Suporte para sistemas operativos que não sejam Linux (via imagens personalizadas)
- Overhead ligeiramente superior aos containers, mas muito inferior a hypervisors tradicionais
| Aspecto | Container | VM Incus |
|---|---|---|
| Kernel | Partilhado com o hospedeiro | Dedicado |
| Arranque | ~1 segundo | 10-30 segundos |
| Sobrecarga | Mínima | Reduzida (QEMU) |
| Isolamento | Processos/namespaces | Hardware completo |
A escolha entre contentor e VM depende do nível de isolamento necessário. Para serviços da PME confiáveis (servidor web, base de dados interna), contentores são suficientes. Para ambientes multi-inquilino ou código não confiável, VMs oferecem uma fronteira de segurança mais forte. Comparando com o Proxmox, o Incus oferece uma experiência mais leve e CLI-first, enquanto o Proxmox é um hypervisor completo com gestão via interface web robusta.
6. Casos de Uso PME
Para uma PME, o Incus resolve problemas concretos de infra-estrutura sem investir em hardware dedicado ou licenças comerciais. Os casos de uso mais comuns são:
- Ambiente de desenvolvimento: contentores com diferentes versões de PHP, Python ou Node.js, isolados num único servidor
- Servidor de testes: réplicas de produção para validar actualizações antes da implementação
- Isolamento de serviços: servidor de email, servidor de ficheiros e servidor web em contentores separados, cada um com a sua configuração
- Migração de serviços legados: mover aplicações antigas para contentores sem reescrever código
- Multi-inquilino leve: ambientes separados por cliente num único servidor físico
A gestão via interface web (incus-ui) é particularmente útil para PMEs sem equipa dedicada de sysadmin. A interface permite criar, parar e configurar contentores sem conhecimento de CLI, embora a linha de comandos ofereça mais controlo granular.
Em comparação com o Proxmox VE, o Incus é mais adequado quando:
| Critério | Incus | Proxmox VE |
|---|---|---|
| Foco principal | Contentores system-level | VMs KVM completas |
| Interface web | Simples (incus-ui) | Completa e robusta |
| Clustering | Nativo, simples | Nativo, mais maduro |
| Custo | Gratuito (código aberto) | Gratuito + suporte pago |
7. Erros Comuns e Lista de Verificação
Durante a implementação do Incus, alguns problemas surgem com frequência. Conhecê-los previne tempo de indisponibilidade e configurações incorrectas.
| Problema | Causa | Solução |
|---|---|---|
| Container sem rede | Ponte não configurada | Reexecutar incus admin init |
| Permissão negada | Utilizador fora do grupo | usermod -aG incus-admin |
| VM não arranca | KVM não habilitado na BIOS | Activar virtualização na BIOS |
| Snap falha | Snapd não instalado | apt install snapd |
| Migração LXD falha | LXD ainda activo | Parar LXD antes de migrar |
Lista de verificação para implementação:
- ✓ Verificar se a virtualização está activa na BIOS (para VMs)
- ✓ Instalar
snapdantes de instalar o Incus - ✓ Executar
incus admin initcom ZFS se possível - ✓ Adicionar utilizadores ao grupo
incus-admin - ✓ Configurar firewall para restringir acesso à bridge
incusbr0 - ✓ Criar instantâneos antes de actualizações de contentores
- ✓ Testar migração do LXD em ambiente de testes primeiro
- ✓ Configurar backups do storage pool regularmente
- ✓ Monitorizar recursos com
incus listeincus info
Artigos Relacionados: