Isoler les environnements de développement avec des conteneurs LXD

Je parlerai de l'approche pour organiser des environnements de développement isolés locaux sur mon poste de travail. L'approche a été développée sous l'influence des facteurs suivants:


  • différentes langues nécessitent des IDE et des chaînes d'outils différents;
  • Différents projets peuvent utiliser différentes versions de chaînes d'outils et de bibliothèques.

L'approche consiste à développer des conteneurs à l'intérieur de LXD fonctionnant localement sur un ordinateur portable ou un poste de travail avec redirection de la sortie graphique vers l'hôte.


Configuration sur l'exemple d' Ubuntu 20.04 .


Des réflexions sur les options et les raisons sont données à la fin de l'article.


1. Installez LXD


Sur Ubuntu 20.04, LXD n'est plus disponible pour l'installation en tant que paquet deb, uniquement via snap:


$ snap install lxd

Après l'installation, vous devez effectuer l'initialisation:


$ lxd init

Le seul paramètre que je modifie est celui storage bakendque j'utilise dircomme le plus simple. Comme je n'utilise pas d'instantanés et de copies, les avertissements de la documentation ne me font pas peur:


De même, le backend d'annuaire doit être considéré comme une option de dernier recours.
Il prend en charge toutes les fonctionnalités principales de LXD, mais est terriblement lent et inefficace car il ne peut pas effectuer de
copies instantanées ou d'instantanés et doit donc copier l'intégralité du stockage de l'instance à chaque fois.

2. Configuration du profil 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