RÀÀgin lÀhenemisest kohalike isoleeritud arenduskeskkondade korraldamisele oma tööstatsioonil. Selle lÀhenemise on kujundanud jÀrgmised tegurid:
- erinevate keelte jaoks on vajalikud erinevad IDE-d ja tööriistakogumid;
- erinevates projektides vÔivad olla kasutusel erinevad tööriistakogumite ja raamatukogude versioonid.
LĂ€htekoht on arendamine LXD konteinerites, mis on kĂ€ivitatud lokaalselt sĂŒlearvutis vĂ”i tööstatsioonis, suunates graafika vĂ€ljundi hostile.
Konfiguratsioon nÀite pÔhjal Ubuntu 20.04.
MÔtted variantide ja pÔhjuste kohta on toodud artikli lÔpus.
1. LXD installimine
Uues Ubuntu 20.04 LXD pole enam installimiseks saadaval deb-pakendina, ainult snapi kaudu:
$ snap install lxdPĂ€rast installimist peab initsialiseerimise sooritama:
$ lxd initAinus parameeter, mida ma muudan, on storage backend â ma kasutan dir kui kĂ”ige lihtsamat. Kuna ma ei kasuta snapshots ja koopiaid, siis mind ei hĂ€iri teated, mis kĂ€sitlevad:
Sarnaselt tuleks ka katalooge backendit pidada viimase vÔimalusena.
See toetab kÔiki peamisi LXD funktsioone, kuid on ÀÀrmiselt aeglane ja ebaefektiivne, kuna ei saa teha
koheseid koopiaid ega snapshot'e, seega peab see igal korral kopeerima kogu instantsi salvestust.
2. LXD profiili seadistamine
â need on kogumid parameetreid, mida rakendatakse mitmele konteinerile. Minu vajaduste jaoks on piisav ainsa vaikeprofiili loomine SeejĂ€rel kĂ€ivitame exec kĂ€su ja ootame 5000 sekundit, et jĂ€tkata jĂ€lgimist: jĂ€rgnevate 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 korralikult seadistatud;$ lxc profile set default raw.idmap "both 1000 1000"â Ă”ige .
3. Kuni ja konteineri seadistus
Konteineri loomine pildi pÔhjal images:ubuntu\/20.04:
$ lxc launch images:ubuntu\/20.04 dev1Eelistaksin pilte repositooriumist, kuna nendes on vĂ€hem eelinstalleeritud tarkvara. Sel pĂ”hjusel lisasin eesliite images: pildi nimele. Ăhe Ubuntu repositooriumi pildiga konteineri loomine on vĂ”imalik jĂ€rgmiselt: $ lxc launch ubuntu\/20.04 dev1.
Juurƥelli juurde pÀÀsemine konteineris:
$ lxc exec dev1 -- bashPaigaldan Firefoxi ja VS Code'i (repositooriumist ):
$ 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 codeLuban konteiner, et see oleks nÀhtav
poweroffBoonus! On ĂŒsna lihtne edastada GPU konteinerisse, et seal kĂ€ivitatavad rakendused saaksid kasutada graafikakaarti. Selleks tuleb:
- lisada seade
$ lxc config device add dev1 mygpu gpu; - paigaldada konteineris graafikakaardi draiverid â samad, mis on paigaldatud hostile.
4. Konteineri 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 kĂ€ivitatakse konteineris â sarnaselt graafika edastamisele ssh abil.
Ma ei lĂŒlita kĂ€ivitatud konteinerite töötlust kĂ€sitsi vĂ€lja, kuna ei nĂ€e selles erilist mĂ”tet â piirdun kĂ€ivitatud rakenduste akende sulgemisega.
5. KokkuvÔte
Ma eelistan mitte kasutada hosti operatsioonisĂŒsteemi arendamiseks, kuna see nĂ”uaks arendustööriistade, seadistuste ja muu sĂŒsteemikomponentide konkreetset seadistamist. KĂ”ik see vĂ”ib pĂ”hjustada ootamatut kĂ€itumist muus, mitte arendusse puutuvates tarkvarades, isegi kogu operatsioonisĂŒsteemi puhul. NĂ€iteks OpenSSL konfiguratsiooni muutmine vĂ”ib pĂ”hjustada operatsioonisĂŒsteemi ebaĂ”iget kĂ€ivitamist.
Olen proovinud erinevaid vahendeid arenduskeskkondade isoleerimiseks:
- virtuaalsed masinad (KVM, VirtualBox jne) â kĂ”ige ilmsem variant, kuid tarbib oluliselt rohkem ressursse, kuigi Windowsi arendamiseks (kui host on Linux) pole teisi variante;
- kohalikul masinal töötavad pilvearenduse tööriistad (Cloud9 konteineris vĂ”i virtuaalses masinas, Eclipse Che jne) â neid ei ole kujundatud selliseks tööreĆŸiimiks, nad nĂ”uavad tĂ€iendavat seadistamist ja hooldust, seega on parem neid kasutada nende tegelikus keskkonnas â pilves;
- Docker konteinerid on omakorda mĂ”eldud millekski muuks, aga minu arvates ei ole nendes kiire prototĂŒĂŒbi loomine rakenduste jaoks, mis pole veel pakendatud eraldi konteineritesse, kuigi mugav.
Valitud lĂ€henemine ajab mind rahule oma lihtsuse ja madala sisenemispiiri tĂ”ttu. Igas konteineris saab rakendada projektispetsiifilisi lĂ€henemisi: installida ja seadistada kĂ”ik kĂ€sitsi vĂ”i kasutada automatiseerimist (Puppet, Ansible jne), isegi luua Kasutaan LXD konteinerite jaoks ka spetsiifilise tarkvara kĂ€ivitamiseks, mis kas nĂ”uab suurt hulka sĂ”ltuvusi vĂ”i teist OS-i versiooni â sellisel juhul saab luua konteineri vajaliku OS-i versiooniga, nĂ€iteks $ lxc launch images:ubuntu/16.04 dev16.
Oluline on meeles pidada, et konteineriseerimise puhul on rĂŒnnaku pind vĂ”rreldes virtualiseerimisega suurem â host ja konteiner jagavad sama tuuma, mille haavatavus vĂ”ib vĂ”imaldada pahavara konteinerist vĂ€lja pÀÀseda. Kahtlaste rakenduste katsetamiseks on parem kasutada sobivamaid isolatsioonimehhanisme.
Kasulikud lingid
- Sisukas artikkel Habril.
- , Ă€ra sega LXD-d LXC-ga â need on erinevad, kuid omavahel seotud asjad.
- â selles blogis on palju kasulikku praktilist teavet LXD kohta.
- â Microsoft kogub aeg-ajalt uusi ehitusi ja jagab neid erilise litsentsiga.
Allikas: habr.com
