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 bakend
uso dir
como 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 :0
— DISPLAY
;$ 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
.
, — , . .