LXD este un hypervisor al containerelor, care se bazează pe LXC [1]. Principala diferență față de LXC este faptul că LXD introduce conceptele imaginii containerului și construiește o infrastructură în jurul acestor două concepte. Pur și simplu, LXD este un Docker pentru sistemele virtuale virtuale. Principiul este același: imaginea sistemului de operare poate fi descărcată din depozite și instanțele desfășurate pe gazdă ca containere. O imagine poate fi "clonată" în mai multe mașini virtuale.
Acest manual conține un algoritm pas cu pas pentru instalarea și configurarea LXD. Instrucțiunea acoperă următoarele subiecte:
Diferă de Docker:
Alte caracteristici ale LXD:
- Puteți integra cu OpenStack prin plug-in-ul nova-lxd.
- Există o posibilitate de hibernare (hibernare) a containerului.
- Există un API pentru gestionarea containerelor [4].
- Puteți rula Docker-ul în interiorul LXD [5].
LXD funcționează în prezent pe Ubuntu 16.04 LTS. Puteți rula pe alte sisteme, dar pot exista complicații sau ceva nu va funcționa așa cum ar trebui. De exemplu, pe containerele Centos 7 se rulează numai în modul privilegiat, nu există ansambluri gata făcute lxd și trebuie să le compilați manual.
În versiunea proaspătă de Ubuntu, în mod implicit, lxd este deja încorporată. Dacă nu este instalat, atunci îl puteți pune astfel:
aptitude install lxd
Actualizați sistemul și instalați pachetele necesare:
aptitude upgrade aptitude upgrade aptitude instalare lxd zfs zfsutils-linux
Inițializarea LXD
Trebuie să inițializați LXD înainte de a începe să utilizați containerele.
Înainte de a efectua inițializarea, trebuie să decideți ce magazin backend va fi utilizat. Spațiul de depozitare înapoi este locul în care se află toate containerele și imaginile. Există două tipuri principale de stocare: ZFS și Dir.
- ZFS vă permite să creați și să restaurați instantaneu instantanee de containere, să creați containere din imagini. Datorită ZFS, LXD necesită mult mai puțin spațiu decât containerul în sine.
- Dir stochează imaginile în mod obișnuit pe disc. Fiecare împușcare va ocupa aceeași cantitate ca și containerul însuși.
ZFS este montat în fișier ca dispozitiv de buclă, deci trebuie să monitorizați dimensiunea spațiului de stocare și să măriți spațiul dacă nu este suficient. ZFS are sens să folosească, dacă aveți o stocare la distanță privată de imagini, în cazul în care te duci din timp în timp, containere instantanee ca backup-uri, și apoi să le descărcați de acolo pentru a instala noua versiune sau pentru a recupera containere din copiile de rezervă.
Am decis să pun Dir pe serverul de producție. Testez ZFS pe computerul meu local. Backup-urile se vor face prin scripturi obișnuite - împachetați-le în gudron și trimiteți-le la Amazon S3.
După ce decideți ce spate de stocare să utilizați, porniți procesul de inițializare. Aceasta se face prin comanda:
Utilitatea va pune întrebări pe care va trebui să le răspundeți. Prima întrebare pe care utilitarul o va întreba este: ce tip de stocare ar trebui să folosesc?
Numele backend-ului de stocare utilizat # 40; dir sau zfs # 41;. dir
Dacă răspunsul dvs. este Dir, utilitarul va merge imediat la configurarea rețelei. Dacă răspunsul dvs. este ZFS, atunci sistemul va pune următoarele întrebări:
Creați o nouă rezervă ZFS # 40; da / nu # 41;. da Numele noului pool ZFS: lxd Doriți să utilizați un dispozitiv bloc existent # 40; da / nu # 41;. nici o dimensiune în span> GB a noului dispozitiv cu buclă # 40; 1 GB minim # 41;. 10
"Dimensiunea în GB a dispozitivului cu buclă nouă" este dimensiunea spațiului de stocare ZFS. Toate imaginile și containerele vor fi stocate în acest depozit, deci dacă doriți să stocați multe imagini sau containere, trebuie să măriți acest număr.
Apoi utilitarul va întreba: ar trebui să deschid accesul la LXD din afară? Răspundem "nu". Dacă doriți să creați un depozit public sau privat, trebuie să răspundeți "da".
Doriți ca LXD să fie disponibil în rețea # 40; da / nu # 41;. nu
Configurarea podului LXD
După configurarea tipului de stocare, utilitarul va întreba: "Doriți să configurați podul LXD?". Răspundem "da".
Doriți să configurați podul LXD # 40; da / nu # 41;. da
Interfața de configurare a rețelei începe. Răspundeți la întrebări după cum urmează:
Doriți să configurați o punte de rețea pentru span> Containerele LXD acum? Da Nume interfață Bridge: lxdbr0 Doriți să configurați o subrețea IPv4? Da IPv4 adresa: 10.200.0.1 IPv4 CIDR masca: 16 Prima DHCP adresa: 10.200.100.1 Ultima adresă DHCP: Numărul maxim de 10.200.255.254 clienți DHCP: 25399 Doriți să NAT traficul IPv4? Da Doriți să configurați o subrețea IPv6? nu
Pentru rețea, va fi utilizat un pod cu interfața lxdbr0.
Puteți rula utilitarul de configurare a podului LXD din nou cu comanda:
dpkg-reconfigura -p mediu lxd
Instalarea IP-ului static pentru container
nano / etc / implicit / lxd-pod
Dezactivați linia LXC_DHCP_CONFILE și scrieți:
LXD_CONFILE = "/etc/lxd-dnsmasq.conf" span>
nano / etc / lxd-dnsmasq.conf
dhcp-host = test span> ,10.200.1.1
După fiecare modificare a fișierului /etc/lxd-dnsmasq.conf, va trebui să reporniți lxd-bridge cu comanda:
serviciul lxd-bridge reporniți
Dacă acest lucru nu ajută, trebuie să opriți containerele cu IP incorect, să ștergeți fișierul dnsmasq.lxdbr0.leases și apoi să reîncărcați lxd-bridge:
Stop lxc test span> serviciul rm / var / lib / lxd-bridge / dnsmasq.lxdbr0.leases lxd-bridge restart
Configurarea NAT
Pentru ca NAT să funcționeze, executați următoarele comenzi:
ecou span> 1> / proc / sys / net / ipv4 / ip_forward ecou span> "net.ipv4.ip_forward = 1" span>>> / etc / sysctl.conf
Configurarea Grub
nano / etc / implicit / grub
GRUB_CMDLINE_LINUX = "swapaccount = 1 liniștit" span>
Fără această linie, când am început lxd, am primit un avertisment cu privire la faptul că contul de swap cgroup nu va funcționa. Am decis să activați opțiunea swapaccount = 1. silențios este un boot sistem silențios (opțional)
Adăugarea LXD la Autostart
systemctl permite span> LXD
Reporniți sistemul
Adăugați un depozit (opțional, imaginile implicite sunt deja adăugate):
lxc remote adaugă imagini images.linuxcontainers.org: 8443
imaginea centos este un sinonim pentru ca imaginea să fie mai ușor de manevrat
LXC lansare local span> : imagini centos test span>
test - numele containerului viitor
Puteți rula imagini în două comenzi:
lxc init local span> : imagini centos test span>
Start lxc test span>
Prima comandă va crea un container, iar al doilea va lansa. Prima comandă este utilă dacă doriți doar să creați un container, dar să nu îl porniți.
Uită-te la starea de funcționare a containerelor
Echipa ar trebui să prezinte următoarele informații:
Dosarele de montare nu modifică conținutul dosarelor / var / lib / lxd / containers / test, dar sunt montate într-un director separat / var / lib / lxd / devices / test. Prin urmare, copii de rezervă și instantanee ale containerului nu vor conține dosare și fișiere montate. Actualizarea containerului din copia de rezervă sau imaginea nu va afecta conținutul folderelor montate.
lxc config span> spectacol span> test
Conectarea la o mașină virtuală
Mergeți la containerul de test care rulează:
lxc Exec span> test span> -- / bin / bash
Această metodă creează copii de rezervă pentru containere ca imagini LXD gata pentru import. În mod ideal, trebuie să creați instantanee și să le trimiteți într-un depozit privat LXD. Dar uneori, acest lucru nu se poate face. De exemplu, o companie mică nu poate cumpăra un alt server. În acest caz, puteți face fără o soluție simplă de tar + Amazon S3.
Descărcați script-uri pregătite pentru a crea și restaura copii de rezervă:
wget https: // github.com / vistoyn / lxd_backup / raw / 1.1 / scripts / lxc-backup -O "/ usr / local / bin / lxc-backup" span>
wget https: // github.com / vistoyn / lxd_backup / raw / 1.1 / scripts / lxc-restore -O "/ usr / local / bin / lxc-restabili" span>
Setați pavilionul de execuție pentru scripturi:
chmod + x / usr / local span>/ bin / lxc-restaurare
chmod + x / usr / local span>/ bin / lxc-backup
Înainte de a crea și restabili copii de siguranță, trebuie să opriți containerul de lucru. Este posibil, în principiu, să creați o copie de rezervă pe un container care rulează, dar când creați o copie de siguranță, unele date pot fi pierdute (depinde de programele instalate în container).
Această comandă va crea o copie de siguranță a containerului de test, va comprima fișierul într-o arhivă și va fi salvată pe discul din folderul / backup / lxc / test:
Stop lxc test span>
lxc-backup test span>
Restabilirea unei copii de rezervă dintr-un instantaneu:
Pentru ZFS, după numele containerului, trebuie să adăugați ".zfs"
Stop lxc test span>
Restabilirea unei copii de rezervă dintr-un instantaneu:
lxc-stop test span>
Pe o gazdă nouă, uneori trebuie să creați un container din copia de rezervă. Pentru a face acest lucru, trebuie să importați mai întâi imaginea, apoi să o executați ca un container.
Importă comanda de backup ca imagine LXD:
Comandă pentru pornirea imaginii ca container:
LXC lansează-mi-nouă-imagine test span> 2