Do të flas për qasjen ndaj organizimit të mjediseve të izoluara lokale të zhvillimit në stacionin tim të punës. Qasja është krijuar nën ndikimin e faktorëve të mëposhtëm:
- për gjuhë të ndryshme nevojiten IDE dhe sete të ndryshme mjetesh;
- në projekte të ndryshme mund të përdoren versione të ndryshme të seteve të mjeteve dhe bibliotekave.
Qasja është që zhvillimi të bëhet brenda konteinerëve LXD të ekzekutuar lokal në laptopin ose stacionin tim të punës me ridrejtim të daljes grafike në host.
Konfigurimi si shembull Ubuntu 20.04.
Mendimet për opsionet dhe arsyet janë paraqitur në fund të artikullit.
1. Instalimi i LXD
Në Ubuntu 20.04 LXD nuk është më i disponueshëm për instalim si një paketë deb, vetëm përmes snap:
$ snap install lxdPas instalimit, duhet të kryhet inicializimi:
$ lxd initParametri i vetĂ«m qĂ« unĂ« e ndryshoj Ă«shtĂ« storage backend â unĂ« pĂ«rdor dir si opsioni mĂ« i thjeshtĂ«. Duke e ditur se nuk pĂ«rdor instantĂ« dhe kopje, paralajmĂ«rimet nĂ« nuk mĂ« trembin:
Po ashtu, backend-i i direktorit është të konsiderohet si një opsion i fundit.
Ai mbështet të gjitha karakteristikat kryesore të LXD, por është jashtëzakonisht i ngadalshëm dhe jo efikas, pasi nuk mund të kryejë
kopje ose instantë dhe kështu duhet të kopjojë tërësisht ruajtjen e instancës çdo herë.
2. Konfigurimi i profilit LXD
â Ă«shtĂ« njĂ« grup parametrash tĂ« aplikuar nĂ« disa konteinerĂ«. PĂ«r nevojat e mia, njĂ« profil i vetĂ«m i krijuar pĂ«r default Ă«shtĂ« i mjaftueshĂ«m. default me ndryshimet nĂ« vazhdim:
$ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0â nĂ« mĂ«nyrĂ« qĂ« aplikacionet nĂ« konteinerĂ« tĂ« mund tĂ« ndĂ«rveprojnĂ« me serverin X11 tĂ« hostit;$ lxc profile set default environment.DISPLAY :0â nĂ« mĂ«nyrĂ« qĂ« variabli i mjedisitDISPLAYnĂ« konteinerĂ« tĂ« vendoset siç duhet;$ lxc profile set default raw.idmap "both 1000 1000"â pĂ«r njĂ« mapim tĂ« saktĂ« tĂ« identifikuesve. .
Krijimi i një konteineri mbi imazhin
images:ubuntu/20.04 $ lxc launch images:ubuntu/20.04 dev1:
Unë preferoj imazhet nga repoja, pasi ato kanë më pak softuer të instaluar paraprakisht. Për këtë arsye, unë shtova një parafjalë , sepse ato kanë më pak softuer të instaluar. Për këtë arsye, unë shtova një prefiks images: në emrin e imazhit. Krijimi i një konteineri mbi imazhin nga repoja Ubuntu mund të kryhet kështu: $ lxc launch ubuntu/20.04 dev1.
Qasja në shell-in e root-it të konteinerit:
$ lxc exec dev1 -- bashDo të instaloj Firefox dhe VS Code (nga repoja ):
$ 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 codeDo të aktivizoj kontejnerin për qartësi
poweroffBonus! Mjafton të kalosh GPU në kontejner për ta lejuar aplikacionet që ekzekutohen aty të përdorin kartën grafike. Për këtë duhet:
- të shtosh pajisjen
$ lxc config device add dev1 mygpu gpu; - tĂ« instalosh nĂ« kontejner driverat e kartĂ«s grafike â tĂ« njĂ«jtĂ«t qĂ« janĂ« instaluar nĂ« host.
4. Përdorimi i kontejnerit
Në rastin që kontejneri nuk është ende i aktivizuar, duhet ta aktivizosh:
lxc start dev1Ekzekutimi i VS Code nga një përdorues jo privilegjuar ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu codeEkzekutimi i Firefox:
lxc exec dev1 -- sudo --login --user ubuntu firefoxDritaret e aplikacioneve do tĂ« shfaqen nĂ« host, por do tĂ« ekzekutohen brenda kontejnerit â ngjashĂ«m me kalimin e grafikĂ«s pĂ«rmes ssh.
Nuk i çaktivizoj manualisht kontejnerĂ«t e aktivizuar, pasi nuk shoh ndonjĂ« kuptim tĂ« veçantĂ« â mjaftohem me mbylljen e dritareve tĂ« aplikacioneve tĂ« aktivizuara.
5. Përfundimi
Unë preferoj të mos përdor sistemin operacional të hostit për zhvillim, pasi do të kërkonte instalimin e mjeteve të zhvillimit, versioneve të rregullimit të biblioteka, konfigurimin e komponentëve të sistemit në mënyrë specifike dhe manipulime të tjera. Të gjitha këto mund të sjellin sjellje të papritur të softuerit tjetër, që nuk ka lidhje me zhvillimin, madje edhe tërë sistemit operacional. Për shembull, ndryshimet në konfigurimin e OpenSSL-it mund të bëjnë që sistemi operacional të ndalojë së funksionuari siç duhet.
Kam provuar mjete të ndryshme për izolimin e mjediseve të zhvillimit:
- makinat virtuale (KVM, VirtualBox etj.) â opsioni mĂ« i dukshĂ«m, por konsumon ndjeshĂ«m mĂ« shumĂ« burime, megjithatĂ« pĂ«r zhvillimin nĂ«n Windows (nĂ«se hosti Ă«shtĂ« Linux) nuk ka opsione tĂ« tjera;
- instrumentet e zhvillimit nĂ« cloud tĂ« cilat konsumohen nĂ« makinĂ« lokale (Cloud9 nĂ« njĂ« kontenier ose makinĂ« virtuale, Eclipse Che etj.) â ato nuk janĂ« zhvilluar pĂ«r njĂ« regjion tĂ« tillĂ«, ato kĂ«rkojnĂ« konfigurim dhe mbĂ«shtetje shtesĂ«, Ă«shtĂ« mĂ« mirĂ« t'i pĂ«rdorni pĂ«r qĂ«llimin e tyre â nĂ« cloud;
- kontejnerĂ«t Docker â pĂ«rsĂ«ri janĂ« tĂ« destinuar pĂ«r diçka tjetĂ«r, nĂ« mendimin tim, nuk janĂ« shumĂ« tĂ« pĂ«rshtatshĂ«m pĂ«r tĂ« prototipizuar shpejt duke pĂ«rdorur software qĂ« ende nuk Ă«shtĂ« paketuar nĂ« konteinerĂ« tĂ« veçantĂ«.
Qasja e zgjedhur mĂ« pĂ«lqen pĂ«r thjeshtĂ«sinĂ« dhe nivelin e ulĂ«t tĂ« hyrjes. NĂ« vetĂ« kontejnerĂ«t mund tĂ« aplikohet qasje specifike pĂ«r projekte: tĂ« instalosh dhe konfigurosh gjithçka manualisht, ose tĂ« pĂ«rdorĂ«sh automatizimin (Puppet, Ansible etj.), madje edhe tĂ« pĂ«rmbushesh infrastruktura bazuar nĂ« Docker. $ lxc launch images:ubuntu/16.04 dev16 ĂshtĂ« e rĂ«ndĂ«sishme tĂ« mbash mend se nĂ« aspektin e izolimit, konteinerizimi ka njĂ« sipĂ«rfaqe tĂ« madhe sulmi krahasuar me virtualizimin â host-i dhe kontejneri ndajnĂ« njĂ« bĂ«rthamĂ«, njĂ« vulnerabilitet nĂ« tĂ« cilĂ«n mund tĂ« lejojĂ« malware-n tĂ« arrijĂ« jashtĂ« konteinerit. PĂ«r eksperimentet me software tĂ« dyshimtĂ«, Ă«shtĂ« mĂ« mirĂ« tĂ« pĂ«rdoren mekanizma mĂ« tĂ« pĂ«rshtatshĂ«m izolimi..
Një artikull i hollësishëm në Habrë
Linqe të dobishme
- Një artikull i dobishëm në Habr
- , është e rëndësishme të mos ngatërrohet LXD me LXC - këto janë gjëra të ndryshme, por të lidhura me njëra-tjetrën.
- â nĂ« kĂ«tĂ« blog ka shumĂ« informacione praktike tĂ« dobishme pĂ«r LXD.
- â Microsoft shpesh publikojnĂ« ndĂ«rtimet e reja dhe i lĂ«shon me njĂ« licencĂ« speciale.
Burimi: habr.com
