ProHoster > Blog > İdarə > LXD konteynerləri ilə inkişaf mühitlərinin təcrid edilməsi
LXD konteynerləri ilə inkişaf mühitlərinin təcrid edilməsi
İş stansiyamda yerli təcrid olunmuş inkişaf mühitlərinin təşkilinə yanaşma haqqında danışacağam. Bu yanaşma aşağıdakı amillərin təsiri altında hazırlanmışdır:
Fərqli dillər müxtəlif IDE-lər və alətlər zəncirləri tələb edir;
Fərqli layihələr alət silsiləsi və kitabxanaların müxtəlif versiyalarından istifadə edə bilər.
Bu yanaşma, hosta yönləndirilmiş qrafik çıxışı ilə laptop və ya iş stansiyasında yerli olaraq işləyən LXD konteynerlərinin daxilində inkişaf etdirməkdir.
Konfiqurasiya nümunəsi Ubuntu 20.04.
Seçimlər və səbəblər haqqında fikirlər məqalənin sonunda verilmişdir.
1. LXD quraşdırılması
В Ubuntu 20.04 LXD artıq deb paketi kimi quraşdırmaq üçün mövcud deyil, yalnız snap vasitəsilə:
$ snap install lxd
Quraşdırıldıqdan sonra işə salmaq lazımdır:
$ lxd init
Dəyişdirdiyim yeganə parametrdir storage bakend - Mən istifadə edirəm dir ən sadəsi kimi. Şəkillərdən və surətlərdən istifadə etmədiyim üçün xəbərdarlıqlar var sənədləşdirmə Məni qorxutmurlar:
Eynilə, kataloq backend son çarə seçimi kimi nəzərə alınmalıdır.
O, bütün əsas LXD xüsusiyyətlərini dəstəkləyir, lakin yerinə yetirə bilmədiyi üçün olduqca yavaş və səmərəsizdir
ani nüsxələr və ya snapshotlar və buna görə də hər dəfə nümunənin yaddaşının tam surətini çıxarmaq lazımdır.
2. LXD profilinin qurulması
LXD-də profillər — bunlar bir neçə konteynerə tətbiq edilən parametrlər toplusudur. Ehtiyaclarım üçün standart olaraq yaradılmış yeganə profil mənim üçün kifayətdir default aşağıdakı dəyişikliklərlə:
$ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 — konteynerlərdəki proqramların host X11 serveri ilə qarşılıqlı əlaqədə olması üçün;
$ lxc profile set default environment.DISPLAY :0 - belə ki, ətraf mühitin dəyişən DISPLAY konteynerlərdə düzgün quraşdırılmışdır;
Şəkil əsasında konteynerin yaradılması images:ubuntu/20.04:
$ lxc launch images:ubuntu/20.04 dev1
Mən anbardan şəkillərə üstünlük verirəm https://images.linuxcontainers.org, çünki onlar daha az əvvəlcədən quraşdırılmış proqram təminatına malikdirlər. Bu səbəbdən mən prefiksi əlavə etdim images: şəklin adına. Ubuntu deposundan bir şəkil əsasında konteyner yaratmaq aşağıdakı kimi edilə bilər: $ lxc launch ubuntu/20.04 dev1.
Tətbiq pəncərələri hostda göstəriləcək, lakin onlar konteynerin içərisində yerinə yetiriləcək - ssh istifadə edərək qrafiklərin yönləndirilməsinə bənzər.
Çalışan konteynerləri əl ilə bağlamıram, çünki onda çox şey görmürəm - özümü işləyən proqramların pəncərələrini bağlamaqla məhdudlaşdırıram.
5. Nəticə
Mən inkişaf üçün host ƏS-dən istifadə etməməyi üstün tuturam, çünki bu, inkişaf alətlərinin quraşdırılmasını, kitabxanaların debug versiyalarını, sistem komponentlərinin müəyyən bir şəkildə konfiqurasiyasını və digər manipulyasiyaları tələb edir. Bütün bunlar digər inkişaf etdirilməyən proqramlarda, hətta bütün OS-də gözlənilməz davranışa səbəb ola bilər. Məsələn, OpenSSL konfiqurasiyasında dəyişikliklər ƏS-nin düzgün başlamasına səbəb ola bilər.
İnkişaf mühitlərini təcrid etmək üçün müxtəlif alətləri sınamışam:
virtual maşınlar (KVM, VirtualBox və s.) ən bariz seçimdir, lakin onlar əhəmiyyətli dərəcədə daha çox resurs istehlak edirlər, baxmayaraq ki, Windows altında inkişaf üçün başqa seçimlər yoxdur (əgər host Linux-dursa);
yerli maşında işləyən bulud inkişaf alətləri (konteynerdə və ya virtual maşında Cloud9, Eclipse Che və s.) - onlar bu iş rejimi üçün hazırlanmayıb, əlavə konfiqurasiya və texniki xidmət tələb edir, onlardan məqsədlərinə uyğun istifadə etmək daha yaxşıdır. məqsəd - buludda;
Docker konteynerləri yenə başqa bir şey üçün nəzərdə tutulub; mənim fikrimcə, onlar hələ ayrı qablarda qablaşdırılmamış proqram təminatından istifadə edərək tez prototip etmək üçün çox əlverişli deyillər.
Seçilmiş yanaşma özünün sadəliyi və giriş üçün aşağı maneəsi ilə məni heyran edir. Konteynerlərin özlərində layihəyə xas yanaşmalardan istifadə edə bilərsiniz: hər şeyi əl ilə quraşdırın və konfiqurasiya edin və ya avtomatlaşdırmadan istifadə edin (Kukla, Ansible və s.), hətta yerləşdirin. Docker-əsaslı infrastruktur. Mən həmçinin çoxlu sayda asılılıqların və ya fərqli OS versiyasının quraşdırılmasını tələb edən xüsusi proqram təminatını işə salmaq üçün LXD konteynerlərindən istifadə edirəm - bu halda, məsələn, istədiyiniz ƏS versiyası ilə konteyner yarada bilərsiniz. $ lxc launch images:ubuntu/16.04 dev16.
Yadda saxlamaq lazımdır ki, izolyasiya baxımından konteynerləşdirmə virtuallaşdırma ilə müqayisədə daha böyük hücum səthinə malikdir - host və konteyner bir nüvəni bölüşür, bu zəiflik zərərli proqramların konteynerdən çıxmasına imkan verə bilər. Şübhəli proqram təminatı ilə təcrübə apararkən, daha uyğun izolyasiya mexanizmlərindən istifadə etmək daha yaxşıdır.