Como instalar, criar e gerenciar LXC no Ubuntu/Debian
Ao longo da última década, a comunidade de código aberto assistiu a uma mudança constante para a contentorização como a forma preferida de implementação de aplicações, graças aos inúmeros benefícios que oferece, como portabilidade, flexibilidade, maior segurança e gestão mais fácil de aplicações. Tecnologias populares de conteinerização incluem Docker, Podman e LXD.
Escrito na linguagem Go, LXD (pronuncia-se Lekseed) é descrito como o contêiner de sistema de próxima geração e gerenciador de máquina virtual que permite gerenciar seus contêineres e máquinas virtuais a partir da linha de comando ou aproveitando um Lekseed.API REST ou outras ferramentas de terceiros. LXD é um projeto de código aberto e é uma extensão do LXC (Linux Containers), que é uma tecnologia de virtualização em nível de sistema operacional.
O LXC entrou em cena por volta de 2008, e o LXD foi lançado 7 anos depois, em 2015, com os mesmos blocos de construção do LXC. O LXD veio para tornar os containers mais amigáveis e fáceis de gerenciar.
Sendo uma extensão do LXC, o LXD fornece recursos avançados, como snapshots e migração ao vivo. Ele também fornece um daemon que permite gerenciar facilmente contêineres e máquinas virtuais. Não se destina a substituir o LXC, mas sim a melhorar a usabilidade e o manuseio de contêineres baseados em LXC
Neste guia, demonstraremos como você pode criar e gerenciar contêineres LXC usando LXD no Debian/Ubuntu.
Passo 1: Instale o LXD no Ubuntu
O primeiro passo é instalar o LXD. Existem duas maneiras de fazer isso: você pode instalar a partir do repositório do Ubuntu usando o gerenciador de pacotes APT ou pode usar o snap.
Usando o APT, primeiro atualize o sistema:
sudo apt update
Em seguida, instale o hipervisor de contêiner do sistema LXD da seguinte maneira.
sudo apt install lxd
Usando o snap, você pode instalar a versão mais recente do LXD.
sudo snap install lxd
Além disso, você pode instalar a versão LTS mais recente, LXD 4.0, da seguinte forma:
sudo snap install lxd --channel=4.0/stable
Você pode verificar a versão do LXD instalada conforme mostrado:
lxd --version
Se você costumava snap, você pode verificar se o pacote snap LXD foi instalado conforme mostrado:
snap list
Etapa 2: inicializando o serviço LXD
Para inicializar ou iniciar o hipervisor de contêiner LXD, execute o comando:
sudo lxd init
O comando apresenta um conjunto de perguntas sobre como configurar o LXD. Os padrões funcionam bem, no entanto, você tem a liberdade de especificar suas próprias configurações de acordo com seus requisitos.
Neste exemplo, criamos um pool de armazenamento chamado tecmint_pool com o sistema de arquivos ZFS e o gerenciador de volume. Para o restante das questões, optamos por usar as opções padrão. Uma maneira fácil de aceitar a seleção padrão é pressionar o botão ENTER no teclado.
Confirme as informações fornecidas executando o comando:
sudo lxc profile show default
Você pode restringi-lo ainda mais ao pool de armazenamento criado. Os comandos abaixo exibem detalhes dos pools de armazenamento atuais.
sudo lxc storage list
sudo lxc storage show tecmint_pool
Você também pode exibir informações sobre a interface de rede em uso pelo LXD, neste caso, lxdbr0, que é a seleção padrão.
sudo lxc network show lxdbr0
Etapa 3: Criando contêineres LXD no Ubuntu
Agora, vamos mudar de assunto e criar contêineres Linux. Você pode listar todos os contêineres pré-construídos que estão disponíveis para download usando o comando:
sudo lxc image list images:
Isso preenche uma lista enorme de todos os contêineres em vários sistemas operacionais, como Ubuntu, CentOS, Debian e AlmaLinux, para mencionar alguns.
Você pode restringi-lo a uma distribuição específica da seguinte maneira:
sudo lxc image list images: | grep -i centos
sudo lxc image list images: | grep -i debian
Neste exemplo, listamos os contêineres disponíveis.
sudo lxc image list images: | grep -i ubuntu
Agora vamos criar nosso primeiro contêiner. A sintaxe para criar um contêiner é a seguinte:
sudo lxc launch images:{distro}/{version}/{arch} {container-name}
Agora vamos criar dois contêineres do Ubuntu 20 e do Debian 10 respectivamente:
sudo lxc launch images:ubuntu/focal tecmint-con1
sudo lxc launch images:debian/10 tecmint-con2
Nos exemplos acima, criamos dois contêineres: tecmint-con1 e tecmint-con2.
Para listar os containers criados, execute o comando:
sudo lxc list
Na saída, podemos ver nossos dois contêineres listados.
Para obter acesso shell a um contêiner LXC, execute o comando:
sudo lxc exec tecmint-con1 bash
Depois de obter acesso ao shell, observe que o prompt muda para indicar que você está executando como usuário root.
Para sair do contêiner, execute o comando:
exit
Etapa 4: Gerenciando contêineres LXD no Ubuntu
Agora, vamos verificar alguns dos comandos que você pode usar para gerenciar contêineres LXD.
Para listar todos os contêineres em execução, execute o comando:
sudo lxc list
Para exibir informações detalhadas sobre um contêiner LXC, use a sintaxe:
sudo lxc info container-name
Isso fornecerá informações como nome do contêiner, arquitetura, data de criação, status das interfaces de rede, largura de banda, CPU, memória e uso de disco, para mencionar algumas métricas.
Para parar um contêiner LXC, use a sintaxe:
sudo lxc stop container-name
Por exemplo, para parar o contêiner tecmint-con1, execute o comando:
sudo lxc stop tecmint-con1
Novamente, liste os contêineres para confirmar se o contêiner foi interrompido.
sudo lxc list
Como alternativa, você pode listar contêineres em execução ou interrompidos da seguinte forma:
sudo lxc list | grep -i STOPPED
sudo lxc list | grep -i RUNNING
Para iniciar um contêiner LXC, use a sintaxe:
sudo lxc start container-name
Por exemplo, para iniciar o contêiner tecmint-con1 execute o comando:
sudo lxc start tecmint-con1
Você pode iniciar ou parar contêineres ignorando-os em um comando separado por um espaço usando a seguinte sintaxe:
sudo lxc stop container1 container2
sudo lxc start container1 container2
Por exemplo, para parar todos os contêineres, execute:
sudo lxc stop tecmint-con1 tecmint-con2
Para reiniciar um contêiner LXC, use a sintaxe:
sudo lxc restart container-name
Por exemplo, para reiniciar o contêiner tecmint-con1 execute o comando:
sudo lxc restart tecmint-con1
Alternativamente, você pode passar vários contêineres em um único comando:
sudo lxc start container1 container2
Por exemplo, para reiniciar todos os contêineres, execute:
sudo lxc restart tecmint-con1 tecmint-con2
Para excluir um contêiner LXC, primeiro pare-o e depois exclua-o. Por exemplo, para excluir o contêiner tecmint-con2, execute o comando:
sudo lxc stop tecmint-con2
sudo lxc delete tecmint-con2
Este guia forneceu uma base sólida sobre contêineres LXD e como você pode iniciar, criar e gerenciar contêineres. Esperamos que agora você possa iniciar e gerenciar seus contêineres confortavelmente e sem muita dificuldade.