Conteineres LXC no Linux: Primeiros Passos
Conteineres de sistema LXC oferecem uma alternativa leve a maquinas virtuais tradicionais, fornecendo isolamento no nivel do sistema operacional com desempenho quase nativo. Diferente de conteineres de aplicacao como Docker, os conteineres LXC executam um sistema operacional completo com init system, servicos e multiplos processos, funcionando como servidores virtuais. Com o LXD como camada de gerenciamento, criar e administrar conteineres torna-se tao simples quanto gerenciar VMs, mas com inicializacao instantanea e uso minimo de recursos.
Instalacao e Inicializacao do LXD
Instale o LXD via snap e execute a configuracao inicial:
sudo snap install lxd
sudo usermod -aG lxd $USER
newgrp lxd
# Configuracao interativa
sudo lxd init
Durante a inicializacao, configure as opcoes recomendadas para producao:
Would you like to use LXD clustering? no
Do you want to configure a new storage pool? yes
Name of the storage pool: default
Name of the storage backend: zfs
Would you like to connect to a MAAS server? no
Would you like to create a new local network bridge? yes
What should the new bridge be called? lxdbr0
What IPv4 address should be used? auto
What IPv6 address should be used? auto
Verifique a instalacao listando as imagens disponiveis:
lxc image list images: | grep ubuntu
lxc storage list
lxc network list
Criacao e Gerenciamento de Conteineres
Crie conteineres a partir de imagens oficiais:
# Criar e iniciar um conteiner Ubuntu
lxc launch ubuntu:22.04 web-server
# Criar conteiner sem iniciar
lxc init ubuntu:22.04 db-server
# Listar conteineres
lxc list
# Iniciar, parar e reiniciar
lxc start db-server
lxc stop web-server
lxc restart web-server
# Acessar o shell do conteiner
lxc exec web-server -- bash
# Executar comando diretamente
lxc exec web-server -- apt update
Transfira arquivos entre host e conteiner:
# Enviar arquivo para o conteiner
lxc file push /home/usuario/config.conf web-server/etc/config.conf
# Baixar arquivo do conteiner
lxc file pull web-server/var/log/syslog ./syslog-backup.log
Perfis, Limites de Recursos e Rede
Crie perfis personalizados para definir limites de recursos:
lxc profile create producao
lxc profile edit producao
config:
limits.cpu: "2"
limits.memory: 2GB
limits.memory.swap: "false"
description: Perfil para conteineres de producao
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
size: 20GB
type: disk
Aplique o perfil ao criar um conteiner:
lxc launch ubuntu:22.04 app-server --profile producao
# Verificar recursos do conteiner
lxc config show app-server
lxc info app-server
Para conectar conteineres a uma rede externa com IP proprio, crie um perfil com interface macvlan:
lxc profile device add externo eth0 nic nictype=macvlan parent=eth0
Snapshots e Backup
Proteja seus conteineres com snapshots e backups:
# Criar snapshot
lxc snapshot web-server backup-pre-atualizacao
# Listar snapshots
lxc info web-server
# Restaurar snapshot
lxc restore web-server backup-pre-atualizacao
# Exportar conteiner completo
lxc export web-server /backups/web-server-backup.tar.gz
# Importar conteiner
lxc import /backups/web-server-backup.tar.gz web-server-restore
# Snapshots automaticos
lxc config set web-server snapshots.schedule "0 2 * * *"
lxc config set web-server snapshots.expiry 7d
Com snapshots.schedule, o LXD cria snapshots automaticamente no horario definido (formato cron) e remove snapshots antigos conforme a politica de expiracao configurada.
Resumo
Conteineres LXC/LXD oferecem uma solucao eficiente para virtualizar cargas de trabalho no Linux com desempenho proximo ao bare metal. Com perfis de recursos, snapshots automaticos, rede flexivel e suporte a nesting, o LXD e ideal para ambientes de desenvolvimento, testes e producao onde voce precisa de isolamento de sistema completo sem a sobrecarga de maquinas virtuais tradicionais.