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.

Artigos Relacionados