Pesquisa de site

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.