LXD konteinerite abil arenduskeskkondade isoleerimine

RÀÀgin lÀhenemisest isoleeritud arenduskeskkondade korraldamiseks oma tööjaamas. See lÀhenemine on vÀlja töötatud jÀrgmiste tegurite mÔjul:

  • erinevad keeled nĂ”uavad erinevaid IDE-sid ja tööriistakomplekte;
  • erinevates projektides vĂ”ivad olla kasutusel erinevad tööriistakomplektide ja raamatukogude versioonid.

LĂ€henemine seisneb arenduses LXD konteinerites, mis on kĂ€ivitatud kohapeal sĂŒlearvutis vĂ”i tööjaamas, kus graafika vĂ€ljund suunatakse hostisse.

Konfiguratsioon nÀite pÔhjal Ubuntu 20.04.

MĂ”tisklused vĂ”imaluste ja pĂ”hjuste ĂŒle on toodud artikli lĂ”pus.

1. LXD paigaldamine

V Ubuntu 20.04 LXD ei ole enam saadaval deb-paketi kujul, ainult snap'i kaudu:

$ snap install lxd

PĂ€rast installimist tuleb teha initsialiseerimine:

$ lxd init

Ainus parameeter, mida ma muudan, on storage backend — kasutan dir kui kĂ”ige lihtsamat. Kuna ma ei kasuta hetkepilte ega koopiaid, ei ehmata mind hoiatused dokumentatsioonis :

Sarnaselt on ka kaustal pÔhinev lahendus viimane vÔimalus.
See toetab kÔiki peamisi LXD funktsioone, kuid on ÀÀrmiselt aeglane ja ebaefektiivne, kuna ei saa teha
hetke koopiaid ega hetktÔmmiseid, mistÔttu peab iga kord kopeerima kogu instantsi salvestusruumi.

2. LXD profiili seadistamine

Profiilid LXD-s — see on parameetrite komplekt, mida rakendatakse mitmele konteinerile. Minu vajaduste jaoks piisab tĂ€iesti ĂŒhe vaikeprofiili loomisest. default koos jĂ€rgmiste muudatustega:

  • $ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 — et rakendused konteinerites saaksid suhelda hosti X11 serveriga;
  • $ lxc profile set default environment.DISPLAY :0 — et keskkonnamuutuja DISPLAY konteinerites oleks Ă”igesti seadistatud;
  • $ lxc profile set default raw.idmap "both 1000 1000" — Ă”ige identifikaatorite kaardistamise jaoks..

3. konteineri loomine ja seadistamine

Konteineri loomine pildi pÔhjal images:ubuntu/20.04:

$ lxc launch images:ubuntu/20.04 dev1

Eelistangi pilte asjaarhiivist, https://images.linuxcontainers.orgsest seal on vÀhem eelinstallitud tarkvara. Sel pÔhjusel lisasin ma eelneva images: pildi nimele. Ubuntu arhiivis oleva pildi pÔhjal konteineri loomine kÀib jÀrgmiselt: $ lxc launch ubuntu/20.04 dev1.

Juurde pÀÀsemine konteineri shell'i:

$ lxc exec dev1 -- bash

Installeerin Firefoxi ja VS Code'i (arhiivist vastavalt juhistele.):

$ 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

Kasutades konteinerit selgemaks muutmiseks

vĂ€lja lĂŒlita

Boonus! GPU edastamine konteinerisse on piisavalt lihtne, et rakendused, mis seal töötavad, saaksid kasutada graafikakaarti. Selleks tuleb:

  • seade lisada $ lxc config device add dev1 mygpu gpu;
  • paigaldada konteinerisse graafikakaardi draiverid — samad, mis on paigaldatud hostis.

4. Koti kasutamine

Kui konteiner ei ole veel kÀivitatud, tuleb see kÀivitada:

lxc start dev1

VS Code'i kÀivitamine mitteprivileegitud kasutajana ubuntu:

lxc exec dev1 -- sudo --login --user ubuntu code

Firefoxi kÀivitamine:

lxc exec dev1 -- sudo --login --user ubuntu firefox

Rakenduste aknad kuvatakse hostis, kuid need töötavad konteineris — sarnanedes graafika edastamisele ssh kaudu.

Ma ei lĂŒlita jooksvaid konteinerite kĂ€sitsi vĂ€lja, kuna ei nĂ€e selles erilist mĂ”tet — piirdun avatud rakenduste akende sulgemisega.

5. KokkuvÔte

Ma eelistan mitte kasutada hosti operatsioonisĂŒsteemi arendamiseks, kuna see tĂ€hendaks arendustööriistade, teekide silumiste versioonide installimist, sĂŒsteemi komponentide spetsiifilist seadistamist ja muid manipulatsioone. KĂ”ik see vĂ”ib pĂ”hjustada ootamatut kĂ€itumist muus, mitte arendusega seotud tarkvaras, vĂ”i isegi kogu operatsioonisĂŒsteemis. NĂ€iteks vĂ”ivad OpenSSL-i konfiguratsiooni muutmised pĂ”hjustada, et operatsioonisĂŒsteem lĂ”petab nĂ”uetekohase kĂ€ivitamise.

Olen proovinud erinevaid meetodeid arenduskeskkondade isoleerimiseks:

  • virtuaalmasinad (KVM, VirtualBox jne) — kĂ”ige ilmselisem variant, kuid see tarbib mĂ€rgatavalt rohkem ressursse, kuigi Windowsi arendamiseks (kui host on Linux) pole muid valikuid;
  • kohalikul masinal töötavad pilvearendustööriistad (Cloud9 konteineris vĂ”i virtuaalses masinas, Eclipse Che jne) — neid ei arendata selliseks tööreĆŸiimiks, need vajavad tĂ€iendavat seadistamist ja hooldust, neid on kĂ”ige parem kasutada nende otstarbel — pilves;
  • Dockeri konteinerid on - minu arvates - mĂ”eldud millekski muuks, nendes ei ole vĂ€ga mugav kiiresti prototĂŒĂŒpe koostada tarkvara jaoks, mis ei ole veel eraldi konteineritesse pakendatud.

Valitud lĂ€henemine mulle meeldib selle lihtsuse ja madala sissejuhatusetĂ”kke tĂ”ttu. Igas konteineris saab rakendada projektipĂ”hiseid lĂ€henemisi: kĂ”ike saab installida ja seadistada kĂ€sitsi vĂ”i kasutada automatiseerimist (Puppet, Ansible jne), isegi arendada. infrastruktuuri Dockeril pĂ”hinevalt.Kasutangi LXD konteinerit, et kĂ€ivitada spetsiifilist tarkvara, mis nĂ”uab kas palju sĂ”ltuvusi vĂ”i teistsugust operatsioonisĂŒsteemi — sellisel juhul saab luua konteineri soovitud operatsioonisĂŒsteemi versiooniga, nĂ€iteks. $ lxc launch images:ubuntu/16.04 dev16.

Oluline on meeles pidada, et konteinerimise osas on isolatsioonil vĂ”rreldes virtualiseerimisega suurem rĂŒnnaku pind — host ja konteiner jagavad ĂŒhte tuuma, mille haavatavus vĂ”ib vĂ”imaldada pahavaralise tarkvara escape'ida konteinerist. Eksperimentide tegemiseks kaheldava tarkvaraga on parem kasutada sobivamaid isolatsioonimehanisme.

Kasulikud lingid

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster