Gestionarea containerelor cu introducere scurtă lxd - blog selectiv al companiei

Gestionarea containerelor cu introducere scurtă lxd - blog selectiv al companiei

Continuăm seria noastră de articole despre containerizare. Dacă primele două articole (1 și 2) au fost dedicate teoriei, astăzi vom vorbi despre un instrument foarte specific și despre particularitățile utilizării sale practice. Subiectul analizei noastre va fi LXD (scurt pentru Linux Container Daemon), creat de canadianul Stefan Grabe de la Canonical.






În acest articol, ne vom limita la o scurtă introducere la LXD: comparați-l cu Docker, dați instrucțiuni pentru instalare și configurare și demonstrați capacitățile de bază pentru gestionarea containerelor.

LXD și Docker

În acest caz, domeniul de utilizare pentru cele două instrumente este complet diferit: dacă Docker este proiectat să funcționeze în containere de aplicații, atunci LXD este pentru funcționarea sistemelor de operare integrate.

În publicațiile Canonice se remarcă faptul că containerele LXD pot funcționa de 10 ori mai rapid decât mașinile virtuale tradiționale bazate pe KVM.

În LXD, se face o încercare de a rezolva o serie de probleme întâlnite când se lucrează cu alte instrumente de containerizare: se ia în considerare un mecanism de gestionare a resurselor dinamice, posibilitățile de migrare a containerului (inclusiv în timp real) și problemele de securitate sunt eliminate. Comparativ cu Docker, LXD are o posibilitate mult mai mare de reconfigurare a containerelor.

LXD este echipat cu un API deschis; există clienți pentru diferite limbi de programare. A fost creat un plug-in pentru OpenStack. permițându-vă să gestionați containerele utilizând clientul Nova.

Instalare și configurare

În cele ce urmează, vom descrie caracteristicile lucrării cu LXD pe materialul Ubuntu 16.04. În acest sistem de operare, LXD este inclus în depozitele oficiale și este instalat în mod standard:

Ștefan Hrabe recomandă în articolul său că, în calitate de backend pentru stocarea containerelor, se folosește sistemul de fișiere ZFS. Pentru a lucra cu ZFS, trebuie să instalați pachetele corespunzătoare:

Crearea unui container

Pentru prima cunoaștere cu LXD, repositorul local (local) este destul de potrivit. Rulați în container OS Ubuntu 16.04:

Ca urmare a acestei comenzi, LXD va crea un container bazat pe imaginea specificată și o va executa.







Rulați shell-ul de comandă în acest container folosind comanda:

Dacă trebuie doar să creați un container, dar să nu îl executați, trebuie doar să executați comanda:

Pentru a porni și a opri mai târziu containerul, utilizați comenzile de pornire lxc și stop lxc.

LXC oferă oportunități bune pentru gestionarea containerelor în zbor. De exemplu, puteți pune fișierul creat pe gazda principală în interiorul containerului:

De asemenea, puteți efectua operația inversă - descărcați fișierul din container la gazda principală

De asemenea, puteți edita direct fișiere în container:

Comenzile de bază pentru crearea și lansarea containerelor au fost deja luate în considerare; Cei care doresc să învețe mai multe se referă la articolul detaliat al lui Stefan Grabe.

Gestionarea resurselor

Gestionarea mediilor izolate este de neconceput fără controlul resurselor: trebuie să furnizăm containerului resurse suficiente pentru muncă și, în același timp, să fim siguri că containerul nu va consuma resurse inutile, încălcând astfel funcționarea restului sistemului.

În LXD, puteți aloca resurse pentru containere utilizând un set special de comenzi:

Citiți mai multe despre gestionarea resurselor din acest articol.

Lucrul cu instantanee

În LXD, puteți crea instantanee și restabili containerele din instantanee. Să vedem cum funcționează acest lucru în practică (un exemplu este luat din tutorialul interactiv LXD).

Să facem câteva modificări la containerul de contacte deja creat1:

Să facem un instantaneu al acestui container și să îl numim, de exemplu, nou:

Să încercăm ceva "pauză" în primul nostru container:

După aceasta, lansăm în el un shell de comandă:

Executați comanda de ieșire și reveniți la gazda principală. Refacem funcționarea containerului1 din instantaneu:

Rulați shell-ul de comandă în containerul restaurat:

Totul funcționează la fel ca înainte!

În exemplul de mai sus, ne-am uitat la așa-numitele instantanee apatride. În LXD, există un alt tip de instantaneu - statal, în care starea curentă a tuturor proceselor din container este salvată. Un număr de funcții interesante și utile sunt asociate cu instantanee statale.

Pentru a crea instantanee statale, trebuie să instalăm programul CRIU (CheckPoint / Restore in Userspace). Cu aceasta, puteți salva starea curentă a tuturor proceselor și apoi le puteți restabili cel puțin pe cea curentă, deși pe altă mașină.
În Ubuntu 16.04 utilitarul CRIU este instalat utilizând managerul de pachete standard:

După aceasta, puteți continua să creați instantanee:

În unele situații, astfel de instantanee pot fi foarte utile. Imaginați-vă, de exemplu, că trebuie să reporniți serverul pe care rulează unul sau mai multe containere. Pentru a nu reporni după repornire, dar continuați dintr-un loc întrerupt, este suficient să efectuați:

Pe baza unor instantanee statale, a fost implementat mecanismul migrației "live" a containerelor, care se află încă într-o stare puțin brută.

concluzie

Firește, în cadrul unui articol, este greu de discutat despre toate funcțiile LXD. Pentru cei care vor să știe mai multe, iată câteva linkuri utile:

Continuăm seria de articole despre mecanismele de containerizare. Ultima oară când am vorbit despre izolarea proceselor folosind mecanismul "spațiilor de nume". Dar izolarea doar a izolării resurselor nu este suficientă. Dacă rulam o aplicație într-un mediu izolat, trebuie să fim siguri că această aplicație este alocată unor resurse suficiente și că nu va consuma resurse inutile, încălcând astfel restul sistemului. Pentru a rezolva această problemă în nucleu.







Trimiteți-le prietenilor: