Isolar ambientes de desenvolvimento com contêineres LXD

Vou falar sobre a abordagem para organizar ambientes de desenvolvimento isolados locais na minha estação de trabalho. A abordagem foi desenvolvida sob a influência dos seguintes fatores:


  • idiomas diferentes precisam de IDEs e cadeias de ferramentas diferentes;
  • Projetos diferentes podem usar versões diferentes de cadeias de ferramentas e bibliotecas.

A abordagem é desenvolver contêineres no LXD em execução localmente em um laptop ou estação de trabalho, redirecionando a saída de gráficos para o host.


Configuração no exemplo do Ubuntu 20.04 .


Reflexões sobre opções e razões são apresentadas no final do artigo.


1. Instale o LXD


No Ubuntu 20.04, o LXD não está mais disponível para instalação como um pacote deb, apenas através do snap:


$ snap install lxd

Após a instalação, você precisa executar a inicialização:


$ lxd init

O único parâmetro que eu mudo é que storage bakendeu uso dircomo o mais simples. Como não uso instantâneos e cópias, os avisos na documentação não me assustam:


Da mesma forma, o back-end do diretório deve ser considerado como uma opção de último recurso.
Ele suporta todos os principais recursos do LXD, mas é terrivelmente lento e ineficiente, pois não pode executar
cópias instantâneas ou instantâneos e, portanto, precisa copiar toda a totalidade do armazenamento da instância.

2. Configuração do perfil LXD


LXD — . default :


  • $ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 — X11 ;
  • $ lxc profile set default environment.DISPLAY :0DISPLAY ;
  • $ lxc profile set default raw.idmap "both 1000 1000".

3.


images:ubuntu/20.04:


$ lxc launch images:ubuntu/20.04 dev1

https://images.linuxcontainers.org, . images: . Ubuntu : $ lxc launch ubuntu/20.04 dev1.


:


$ lxc exec dev1 -- bash

Firefox VS Code ( ):


$ apt update
$ apt install curl gpg firefox

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list

$ apt update
$ apt install code


poweroff

! GPU , . :


  • $ lxc config device add dev1 mygpu gpu;
  • — , .

4.


, , :


lxc start dev1

VS Code ubuntu:


lxc exec dev1 -- sudo --login --user ubuntu code

Firefox:


lxc exec dev1 -- sudo --login --user ubuntu firefox

, — ssh.


, — .


5.


, , , . , , , . OpenSSL , .


:


  • (KVM, VirtualBox ..) — , , Windows ( , Linux) ;
  • (Cloud9 , Eclipse Che ..) — , , — ;
  • Docker — , , .

. : , (Puppet, Ansible ..), Docker. LXD , — $ lxc launch images:ubuntu/16.04 dev16.


, — , . .




All Articles