Pisahkan lingkungan pengembangan dengan wadah LXD

Saya akan berbicara tentang pendekatan untuk mengatur lingkungan pengembangan lokal yang terisolasi di workstation saya. Pendekatan ini dikembangkan di bawah pengaruh faktor-faktor berikut:


  • bahasa yang berbeda memerlukan IDE dan toolchains yang berbeda;
  • Proyek yang berbeda dapat menggunakan versi yang berbeda dari toolchains dan libraries

Pendekatannya adalah mengembangkan wadah di dalam LXD yang berjalan secara lokal di laptop atau workstation dengan mengarahkan kembali output grafis ke host.


Konfigurasi pada contoh Ubuntu 20.04 .


Refleksi opsi dan alasan diberikan di akhir artikel.


1. Instal LXD


Pada Ubuntu 20.04, LXD tidak lagi tersedia untuk instalasi sebagai paket deb, hanya melalui snap:


$ snap install lxd

Setelah instalasi, Anda perlu melakukan inisialisasi:


$ lxd init

Satu-satunya parameter yang saya ubah adalah yang storage bakendsaya gunakan dirsebagai yang paling sederhana. Karena saya tidak menggunakan snapshot dan salinan, peringatan dalam dokumentasi tidak membuat saya takut:


Demikian pula, backend direktori harus dianggap sebagai pilihan terakhir.
Itu mendukung semua fitur LXD utama, tetapi sangat lambat dan tidak efisien karena tidak dapat melakukan
salinan instan atau snapshot dan karenanya perlu menyalin keseluruhan penyimpanan instance setiap waktu.

2. Pengaturan 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