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 lxdPĂ€rast installimist tuleb teha initsialiseerimine:
$ lxd initAinus parameeter, mida ma muudan, on storage backend â kasutan dir kui kĂ”ige lihtsamat. Kuna ma ei kasuta hetkepilte ega koopiaid, ei ehmata mind hoiatused :
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
â 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 keskkonnamuutujaDISPLAYkonteinerites oleks Ă”igesti seadistatud;$ lxc profile set default raw.idmap "both 1000 1000"â Ă”ige .
3. konteineri loomine ja seadistamine
Konteineri loomine pildi pÔhjal images:ubuntu/20.04:
$ lxc launch images:ubuntu/20.04 dev1Eelistangi pilte asjaarhiivist, sest 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 -- bashInstalleerin Firefoxi ja VS Code'i (arhiivist ):
$ 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 codeKasutades konteinerit selgemaks muutmiseks
vĂ€lja lĂŒlitaBoonus! 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 dev1VS Code'i kÀivitamine mitteprivileegitud kasutajana ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu codeFirefoxi kÀivitamine:
lxc exec dev1 -- sudo --login --user ubuntu firefoxRakenduste 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. 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
- Mahukas artikkel Habras.
- , oluline on mitte segamini ajada LXD ja LXC â need on erinevad, kuid omavahel seotud asjad.
- â selles blogis on palju kasulikku praktilist teavet LXD kohta.
- â Microsoft kogub perioodiliselt uusi versioone ja jagab neid spetsiaalse litsentsi alusel.
Allikas: habr.com
