Microtutorial de Containers LXC/LXD
Para começar será necessário uma máquina (real ou virtual) com Linux (se não tiver uma veja o destaque na lista de links mais abaixo!). Se for uma distribuição desktop você poderá usar o navegador da própria máquina para acessar um servidor (ou serviços) web rodando no container sem ter que configurar uma bridge ou redirecionar portas. A maior parte das distribuições já possui os containers LXC instalados, mas se não for seu caso, instale o pacote snap. Opa, snap é um tipo de container para distribuição de aplicações! Utilize o comando abaixo. A maior parte dos comandos requer permissões de superusuário, portanto será necessário utilizar o comando sudo antes deles.
sudo snap install lxd
Você até pode pular essa parte, mas para realizar a configuração inicial dos containers digite:
sudo lxd init
Em geral pode-se aceitar as configurações padrão. Umas das opções possíveis fora do padrão é a possibilidade de disponibilizar os containers para outras máquinas através da rede local.
O LXD é a API desenvolvida pela Ubuntu para interagir com os containers LXC e é utilizada em todas as distribuições.
Para criar um primeiro container digite o comando abaixo. Esse primeiro container poderá demorar um pouco, pois será necessário baixar a imagem primeiro para poder criá-lo:
sudo lxc launch ubuntu: nomedocontainer
Para visualizar o(s) container(s) criado(s), o status e o endereço IP:
sudo lxc list
Para executar um comando dentro do container digite:
sudo lxc exec nomedocontainer -- comando
Você verá a saída no próprio terminal. Para acessar o terminal (bash) do container digite:
sudo lxc exec nomedocontainer -- bash
Use exit para sair.
É possível parar, iniciar, e deletar containers usando lxc start, lxc stop e lxc delete.
Para exibir as informações do container use sudo sudo lxc info nomedocontainer. Digite lxc help para mais opções de comandos.
Caso queira criar um container de outra distro, veja as disponíveis no servidor oficial de imagens (https://images.linuxcontainers.org) com o comando abaixo. É possível usar imagens personalizadas de outros servidores também:
lxc image list images:
Se quiser acrescente um filtro, por exemplo: lxc image list images: | grep centos
Para criar um container a partir de uma dessas imagens digite, por exemplo:
sudo lxc launch images:centos/7 nomedooutrocontainer
Apenas o comando lxc image list lista as imagens locais. Também é possível gerenciá-las. Os containers criados a partir das imagens locais são disparados quase que instantaneamente, então pode-se deletar os containers criados sem nenhum problema se quiser. Ou pará-los, o que é sempre uma boa ideia se não estiverem em uso. Afinal os containers que estiverem "rodando" voltarão a ser executados automaticamente ao se reiniciar o sistema. Já os containers que estiverem parados assim permanecerão.
Agora que você já sabe os primeiros passos, aproveite os seguintes links (todos em inglês):
Tutorial do site do Linux Containers que serviu de base para este microtutorial:
https://linuxcontainers.org/lxd/getting-started-cli/Teste containers online (basta um navegador) e execute um tutorial um pouco mais abrangente, inclusive mostrando containers aninhados (container dentro de container):
https://linuxcontainers.org/lxd/try-it/Como criar container LXD com aplicações com interface gráfica (GUI):
https://blog.simos.info/how-to-run-graphics-accelerated-gui-apps-in-lxd-containers-on-your-ubuntu-desktop/E com Wine (para executar aplicações Windows):
https://blog.simos.info/how-to-run-wine-graphics-accelerated-in-an-lxd-container-on-ubuntu/Ou conferir essas dicas para instalar um ambiente Desktop completo:
https://www.reddit.com/r/LXC/comments/425l3p/tip_if_you_are_using_lxdlxc_to_create_desktop/
Como utilizar periféricos USB em containers:
https://stgraber.org/2017/03/27/usb-hotplug-with-lxd-containers/Configurações de rede em containers LXD:
http://manpages.ubuntu.com/manpages/precise/man5/lxc.conf.5.html
http://containerops.org/2013/11/19/lxc-networking/Para tornar o tráfego dos containers acessíveis via LAN pode ser preciso configurar uma bridge. Este link ensina como fazer:
https://insights.ubuntu.com/2015/11/10/converting-eth0-to-br0-and-getting-all-your-lxc-or-lxd-onto-your-lan
Excelentes tutoriais e documentação feita por Stéphane Graber, líder dos projetos LXC e LXD:
https://stgraber.org/2016/03/11/lxd-2-0-blog-post-series-012/Anúncio do LXD 4, a mais atual versão LTS, com suporte até 2025.
https://discuss.linuxcontainers.org/t/lxd-4-0-lts-has-been-released/7231Anúncio do LXD 3, versão LTS com suporte até 2023.
https://discuss.linuxcontainers.org/t/lxd-3-0-0-has-been-released/1491
Documentação oficial:
https://lxd.readthedocs.io/
Voltar para Máquinas Virtuais e Containers, ou Especial Nanocurso de Linux.