Este guia discute tudo sobre lxd. Veremos como instalar o LXD e criar e gerenciar contêineres.
O que é LXD?
Ao falar sobre contêineres, a maior parte da atenção está em Docker e Kubernetes. No entanto, um modelo de contêiner mais antigo, o Linux Container Project (LXC), ainda é útil, especialmente seu conjunto de ferramentas LXD.
A virtualização pode ser alcançada usando um hipervisor ou um contêiner.
Hipervisores como a Oracle VM oferecem uma camada de abstração, permitindo que a máquina virtual convidada tenha acesso isolado ao hardware e recursos do sistema host. Portanto, os hipervisores exigem mais espaço e drenam os recursos do sistema host para executar uma máquina virtual.
Por outro lado, os contêineres Linux compartilham o kernel do OS do host, o que significa que os contêineres não desperdiçam os recursos e a memória do host. Portanto, você pode ter muitos contêineres em execução em um servidor e a velocidade e o desempenho para contém são incomparáveis. Para criar e gerenciar esses contêineres, você precisa de um modelo de contêiner, como LXD.
O LXD oferece suporte ao contêiner simulando uma versão virtual do sistema operacional host. Dessa forma, o contêiner pode funcionar sem afetar os recursos do host.
Trabalhando com contêineres LXD
Este guia elaborará a criação de um contêiner Linux no Ubuntu usando LXD. Teremos duas seções, instalação e criação do contêiner.
1. Instalação do LXD
Para instalar o LXD, devemos primeiro atualizar o repositório APT.
$ sudo apt update && sudo apt upgrade
Depois que o repositório APT for atualizado, podemos instalar o LXD como um pacote SNAP. Você pode instalar a versão estável mais recente ou especificar a versão LXD que deseja instalar
$ sudo snap install lxd -channel = 4.0/estável
ou
$ snap install lxd --channel = mais recente/estável
Este exemplo instala a versão estável mais recente. O pacote Snap vai baixar o pacote.
Após a conclusão do download, o LXD será instalado e exibirá uma mensagem confirmando que a instalação foi bem -sucedida.
Com o LXD instalado, você pode gerenciar o servidor LXD adicionando o usuário ao grupo LXD. Dessa forma, você não precisará ser raiz para gerenciar contêineres LXD. O comando abaixo adiciona o usuário atual ao grupo LXD.
$ sudo adduser $ usuário lxd
Suponha que o usuário já esteja adicionado, você receberá uma mensagem confirmando que o usuário já é um membro do grupo LXD.
Se você quiser adicionar outro usuário a este grupo, use a sintaxe abaixo.
$ sudo adduser nome de usuário lxd
Observe que a associação ao grupo LXD se aplicará no próximo login. Você pode iniciar uma nova sessão de SH para ser aplicada. Como alternativa, você pode executar o newGrp Comando, que alcança o mesmo que criar uma nova sessão SSH.
Em seguida, precisamos confirmar a associação ao grupo LXD usando o eu ia comando para verificar o membro que adicionamos refletidos no grupo. O exemplo abaixo confirma que o usuário atual para o nosso exemplo foi adicionado com sucesso ao grupo LXD.
Com isso, podemos criar e gerenciar nossos contêineres LXD.
2. Criando e gerenciando recipientes
A primeira coisa é verificar se existem contêineres LXD existentes em seu servidor. Para isso, use a opção de lista. Embora estejamos consultando os contêineres LXD, você observará que estamos usando LXC Porque o LXD é um conjunto de ferramentas para o projeto LXC projetado para lidar com a API LXC.
Lista de $ lxc
Nesse caso, temos uma nova instalação LXD e você observará na saída que não temos contêineres criados. Suponha que tivéssemos um contêiner, ele seria listado na tabela abaixo ao lado de seus detalhes.
O primeiro passo é inicializar o ambiente LXC usando o iniciar opção.
$ sudo lxd init
Dessa forma, o LXC configurará automaticamente o ambiente, levando a você com diferentes perguntas para ajudar no processo de configuração. Se você não tiver certeza de como responder, recomendo pressionar a tecla Enter para usar as opções padrão. Eles vão funcionar bem. Como alternativa, você pode configurar a configuração e escolher as opções para este tutorial, como na imagem abaixo.
Depois que o ambiente LXC estiver configurado, você estará pronto para criar seu primeiro contêiner.
Além disso, você pode verificar várias informações sobre os contêineres LXD. Por exemplo, você pode verificar os perfis disponíveis listando -os.
Lista de perfil $ lxc
O nome do perfil é o especificado ao inicializar o ambiente LXC. Se você for com a nomeação padrão, sua lista de perfil aparecerá como a abaixo.
Para verificar as informações de armazenamento, use o comando abaixo.
Lista de armazenamento $ lxc
Quando você tem vários perfis, você pode especificar o nome do perfil que deseja recuperar suas informações de armazenamento usando o mostrar opção seguida pelo nome do perfil. Para o nosso caso, nosso perfil é nomeado padrão e podemos extrair seus detalhes com o comando abaixo.
$ lxc armazenamento show padrão
Você obterá informações de armazenamento, como o tamanho, o nome do pool criado, etc.
A boa notícia é que o LXD suporta a criação de contêineres para diferentes distribuições Linux. Tudo o que é necessário é baixar a imagem para a distro que você deseja e, em seguida, instalá -la. As imagens disponíveis que você pode baixar estão no repositório do LXC.
O repositório contém versões diferentes de cada distro, para que você possa selecionar qual versão e arquitetura funcionam melhor para o seu caso. Use o comando abaixo para listar todas as imagens disponíveis para todas as distros.
Imagens de lista de imagem de $ lxc:
Suponha que você queira listar as imagens para uma distro específica, use o grep comando para filtrar o nome e a versão da distro, se necessário. Aqui, estamos filtrando as imagens para o Ubuntu.
$ lxc Imagens da lista de imagens: | grep -i ubuntu
Você notará na saída abaixo que estamos recebendo versões e arquiteturas diferentes para as imagens do Ubuntu. Você pode criar um contêiner para qualquer uma das imagens listadas.
Para este tutorial, vamos criar rapidamente um contêiner para Alpino/3.14. Alpine é pequeno e você pode executar o comando abaixo para criar um contêiner para ele. Dependendo do seu objetivo, você é livre para usar qualquer distro para o seu caso.
$ lxc Lançar imagens: alpino/3.14/amd64 linuxhint1
Ao criar o contêiner, você deve especificar o nome do contêiner. Portanto, substitua Linuxhint1 pelo nome a ser usado para o seu contêiner. Você receberá uma mensagem confirmando que o contêiner foi criado e iniciado.
Vamos verificar se nosso recipiente alpino é criado listando os contêineres disponíveis usando o comando da lista.
Nesta saída, podemos ver o contêiner criado e seu estado está em execução atualmente, o que significa que o contêiner está ativo e podemos usá -lo. O contêiner criado também recebe um IPv4 e IPv6. Criar o contêiner depende da velocidade da sua Internet e do tamanho da distro para a qual você está criando um contêiner.
Para usar o contêiner criado, podemos acessá-lo em uma sessão de raiz não logina, utilizando o exec comando. Para alpino, usaremos o sh intérprete. Para o CentOS ou Ubuntu, o /bin /bash funcionaria melhor.
Portanto, acesse o contêiner criado especificando seu nome como mostrado.
$ sudo lxc Exec linuxhint1 sh
Digite a senha do sistema host para autorizar o acesso ao contêiner. Observe que agora estamos no contêiner como usuário root e pode executar qualquer comando como root.
Quando você quiser fechar a sessão, digite saída e pressione Enter. Observe que sair de uma sessão de contêiner não interrompe a sessão. Ainda é executado em segundo plano.
Você pode adicionar uma interface de rede virtual aos contêineres especificando o nome deles. Vamos primeiro listar a interface de rede disponível para o nosso sistema com o comando abaixo.
$ LXC Network LS
Suponha que queríamos adicionar uma nova interface virtual para o ENP0S3 para o nosso contêiner, poderíamos conseguir isso anexando a interface da seguinte maneira.
$ LXC Network Anexe ENP0S3 Linuxhint1
Depois de adicionar a interface de rede, abra uma nova sessão SH e verifique se sua nova interface virtual refletirá.
Com o LXD, você também pode verificar o status e as instâncias do seu contêiner para ver se está funcionando ou parado. Para isso, use o Lista --Fast comando.
$ lxc List - -Fast
Na saída abaixo, podemos ver que nosso contêiner Linuxhint1 está em execução na coluna de estado. Suponha que tivemos vários contêineres. Todas as instâncias teriam seus estados e outros detalhes na tabela abaixo.
Você pode começar, parar ou reiniciar seu contêiner a qualquer hora. Para parar o recipiente, use o parar palavra -chave seguida pelo contêiner que você deseja parar.
$ lxc pare linuxhint1
Suponha que verifiquemos o estado atual de nosso contêiner. Notaremos que está parado. Nesse caso, podemos iniciá -lo com o comando abaixo.
$ lxc start linuxhint1
Se tivermos problemas com o contêiner, podemos reiniciá -lo rapidamente com o comando de reinicialização.
$ lxc reiniciar linuxhint1
Ao trabalhar com contêineres, você pode exibir as informações dos servidores LXD usando o informações comando. Se você não especificar o nome do contêiner, a saída exibirá as informações para todos os contêineres disponíveis. No entanto, podemos especificar o contêiner que queremos extrair suas informações.
$ lxc info linuxhint1
As informações recuperadas contêm todos os detalhes do contêiner, como o nome do contêiner, seu status, o tipo, o PID e os recursos que o contêiner está usando. Esta informação é crucial para gerenciar seu contêiner.
Ainda assim, o LXD suporta o compartilhamento de arquivos de e para um contêiner. Pode ser que você queira pressionar um determinado arquivo que você criou para torná -lo acessível do contêiner ou puxar um arquivo do contêiner para o sistema host. Nesse caso, use o empurrar ou puxar palavras -chave seguidas pelo caminho para o arquivo.
No primeiro exemplo, estamos saindo do contêiner e criando um arquivo nomeado nomes.TXT no sistema host. Em seguida, empurramos o arquivo criado para o contêiner. Ainda assim, estamos fazendo login no contêiner e confirmando que nosso arquivo foi pressionado com sucesso.
Aqui está a sintaxe para empurrar um arquivo de um host para um contêiner.
$ lxc arquivo push /path/ container/destinopath/on-container
Da mesma forma, o exemplo abaixo cria um script no contêiner. Em seguida, puxamos o script criado do contêiner para o sistema host no diretório atual. O último comando lista o conteúdo do diretório atual no host para confirmar que puxamos o arquivo com sucesso.
$ lxc Arquivo Pull Container/Path/To-File Path/Todo-Destinação no Host
A última coisa é saber como excluir o contêiner criado quando não é mais necessário. Primeiro, você deve parar o contêiner em execução.
Uma vez parado, exclua -o usando o comando abaixo.
$ lxc excluir nome de contêiner
Isso se trata de criar e gerenciar contêineres usando LXD. Se você ficar preso trabalhando com o LXD, abra a página de ajuda para ver qual comando você pode usar para um determinado propósito. Além disso, você pode visualizar a página de ajuda para um comando específico.
Conclusão
LXD é um modelo de contêiner que oferece uma API REST para apoiar o gerenciamento de contêineres LXC. Você pode instalar o LXD como um pacote SNAP e inicializar um ambiente LXC, ideal para criar seus contêineres LXD. Este post ofereceu um tutorial prático sobre tudo sobre LXD. Discutimos o que significa LXD, sua instalação, criação e gerenciamento de contêineres e como excluir o contêiner criado.