Isolieren Sie Entwicklungsumgebungen mit LXD-Containern

Ich werde über den Ansatz zum Organisieren lokaler isolierter Entwicklungsumgebungen auf meiner Workstation sprechen. Der Ansatz wurde unter dem Einfluss folgender Faktoren entwickelt:


  • Unterschiedliche Sprachen benötigen unterschiedliche IDEs und Toolchains.
  • Unterschiedliche Projekte verwenden möglicherweise unterschiedliche Versionen von Toolchains und Bibliotheken.

Der Ansatz besteht darin, Container in LXD zu entwickeln, die lokal auf einem Laptop oder einer Workstation ausgeführt werden und die Grafikausgabe an den Host umleiten.


Konfiguration am Beispiel von Ubuntu 20.04 .


Überlegungen zu Optionen und Gründen finden Sie am Ende des Artikels.


1. Installieren Sie LXD


Unter Ubuntu 20.04 steht LXD nicht mehr als Snap-Paket zur Installation als Deb-Paket zur Verfügung:


$ snap install lxd

Nach der Installation müssen Sie die Initialisierung durchführen:


$ lxd init

Der einzige Parameter , dass ich Änderung ist , dass storage bakendich dirals die einfachste. Da ich keine Schnappschüsse und Kopien verwende, machen mir die Warnungen in der Dokumentation keine Angst:


Ebenso ist das Verzeichnis-Backend als letzter Ausweg zu betrachten.
Es unterstützt zwar alle wichtigen LXD-Funktionen, ist jedoch sehr langsam und ineffizient, da es keine
Sofortkopien oder Snapshots ausführen kann und daher jedes Mal den gesamten Speicher der Instanz kopieren muss.

2. LXD-Profil einrichten


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