Aislar entornos de desarrollo con contenedores LXD

Hablaré sobre el enfoque para organizar entornos de desarrollo local aislado en mi estación de trabajo. El enfoque se desarrolló bajo la influencia de los siguientes factores:


  • diferentes idiomas necesitan diferentes IDEs y cadenas de herramientas;
  • Diferentes proyectos pueden usar diferentes versiones de cadenas de herramientas y bibliotecas.

El enfoque es desarrollar contenedores dentro de LXD que se ejecuten localmente en una computadora portátil o estación de trabajo con salida de gráficos redirigidos al host.


Configuración en el ejemplo de Ubuntu 20.04 .


Reflexiones sobre opciones y razones se dan al final del artículo.


1. Instalar LXD


En Ubuntu 20.04, LXD ya no está disponible para la instalación como un paquete deb, solo a través de snap:


$ snap install lxd

Después de la instalación, debe realizar la inicialización:


$ lxd init

El único parámetro que cambio es que storage bakenduso dircomo el más simple. Como no uso instantáneas y copias, las advertencias en la documentación no me asustan:


Del mismo modo, el backend del directorio debe considerarse como una opción de último recurso.
Es compatible con todas las características principales de LXD, pero es terriblemente lento e ineficiente, ya que no puede realizar
copias instantáneas o instantáneas y, por lo tanto, debe copiar la totalidad del almacenamiento de la instancia cada vez.

2. Configuración del 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