Cum să rulați mai multe distros simultan folosind containere Linux

  • Yurich Koshurich
  • 0
  • 1374
  • 283

Containerele Linux (LXC) sunt o tehnologie ușoară de virtualizare și au diverse utilizări. Face parte din nucleul Linux și vă poate permite să imulați una sau mai multe distros Linux pe o singură gazdă Linux. Gândiți-vă la acesta ca la un mijloc de mijloc între un chroot și tehnologii de virtualizare complete, cum ar fi VirtualBox, KVM sau Xen. O tehnologie similară prezentă în lumea BSD sunt FreeBSD Jails.

Ca exemplu, mașina pe care scriu este un laptop care rulează Linux Mint 18, alimentat de un procesor Intel Atom și care are 2 GB memorie RAM. Cu toate acestea, eu rulez trei containere Linux, fiecare cu o instanță a serverului web Apache care rulează, fără o lovitură mare de performanță. Acest lucru ar fi de neconceput cu o mașină virtuală tradițională precum VirtualBox. Deci, dacă doriți să rulați mai multe distros pe sistemul dvs. Linux, Containerele Linux ar trebui să facă treaba pentru dvs..

Instalarea și configurarea containerelor Linux

Configuram LXC pe Linux Mint 18 pe 64 de biți. Instrucțiunile de instalare furnizate aici vor funcționa nemodificat și pe Ubuntu 16.04 și versiuni ulterioare. Dacă utilizați o altă distro, vă rugăm să consultați documentația oficială a distro dvs. dacă ceva nu funcționează așa cum vă așteptați. Se presupune, de asemenea, o familiaritate cu linia de comandă și depanarea generală.

Cerințe preliminare

Iată câteva lucruri pe care ar trebui să le configurați pentru a începe să utilizați mai multe distros:

1. Instalați LXC și alte programe software obligatorii care utilizează:

[codul sursă] sudo apt instala lxc lxc-templates uidmap [/ codul sursă]

2. Acum trebuie configurați-vă profilul. Introduceți următoarele comenzi pentru a o configura:

[cod sursă] mkdir -p ~ / .config / lxc
ecou "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .Config / lxc / default.conf
ecou "lxc.id_map = g 0 100000 65536" & amp; amp; gt;& amp; amp; gt; ~ / .Config / lxc / default.conf
ecou "lxc.network.type = veth" & amp; amp; gt;& amp; amp; gt; ~ / .Config / lxc / default.conf
ecou "lxc.network.link = lxcbr0" & amp; amp; gt;& amp; amp; gt; ~ / .Config / lxc / default.conf
ecou "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ cod sursă]

3. Apoi, trebuie configurați permisiunile utilizatorului după cum urmează:

[cod sursă] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER

sudo cgm creează tot utilizatorul
sudo cgm chown tuturor utilizatorului $ (id -u) $ (id -g)
cgm movepid to user $$ [/ code source]

Configurarea containerului

Acum că aveți LXC Container instalat împreună cu alte programe software obligatorii, iată pașii pentru configurarea Container-ului:

1. În acest exemplu, vom configura un container Ubuntu, numit ubu1. Pentru a face acest lucru, executați următoarea comandă:

[sourcecode] lxc-create -template download -name ubu1 [/ source code]

2. Iată -șablon parametrul spune lxc să Descarca o imagine preconfigurată de pe internet, in timp ce -Nume parametrul specifică numele containerului - ubu1 în acest caz. Puteți utiliza orice nume vă place.

3. Acum veți vedea o listă cu imagini distro acceptate:

4. Introduceți specificul distribuției pe care doriți să îl instalați. Voi instala versiunea pe 64 de biți a Ubuntu 16.04 (nume de cod xenial) aici:

5. Dacă doriți instalați imaginea în mod non-interactiv, următoarea comandă obține același rezultat ca mai sus:

[codul sursă] lxc-crea -t descarcă -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ source code]

6. LXC va descărca și instala acum o imagine xenială Ubuntu minimă pe sistemul dvs. gazdă. Descărcarea și instalarea ar putea dura un pic de timp, în funcție de conexiunea la internet și de viteza computerului. După instalare, veți vedea un ecran ca acesta:

Acum sunteți gata să folosiți containerul Ubuntu nou configurat.

Utilizarea mai multor distrosuri cu containere Linux

Pornirea containerului

Porniți containerul folosind butonul lxc start- comanda:

[codul sursă] lxc-start -n ubu1 -d [/ codul sursă]

Aici -n parametru specifică numele containerului pe care doriți să începeți (ubu1 în acest caz), și -d parametru o face să curgă pe fundal.

Puteți verifica dacă containerul a început prin utilizarea lxc-ls comanda:

[codul sursă] lxc-ls -f [/ codul sursă]

-f parametrul activează extravagant de raportare. Aici, puteți vedea că am două containere - un Debian (oprit) și unul Ubuntu (în funcțiune).

Accesarea și utilizarea containerului

Poti accesați consola containerului folosind lxc-atașați comanda:

[codul sursă] lxc-attach -n ubu1 [/ codul sursă]

Acum vei avea un coajă de rădăcină pe container. Este recomandat să configurați o parolă pentru utilizatorul root și creați un cont de utilizator obișnuit:

[Sourcecode] passwd
adduser beebom [/ cod sursă]

Desigur, înlocuiți beebom cu numele de utilizator pe care îl doriți. Puteți instala apoi software-ul și configurați-vă containerul așa cum ați face într-un sistem obișnuit. De exemplu, într-un container Debian sau Ubuntu:

[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ source code]

Oprirea containerului

După ce ați terminat să vă jucați cu containerul, folosiți fie Ieșire comanda pentru a reveni la sistemul gazdă. Acum folosiți lxc-stop comanda pentru a opri containerul:

[cod sursă] lxc-stop -n ubu1 [/ cod sursă]

Acest lucru va face închiderea containerului curat și nu va mai consuma resurse pe sistemul dvs., cu excepția spațiului pe disc.

Clonare și instantanee

clonele

După ce ați instalat programe într-un container și l-ați configurat după bunul plac, este posibil să doriți creați una sau mai multe copii ale acesteia pentru aprovizionare ușoară. Puteți face acest lucru creând un clona, care este o replică exactă a unui container.

De exemplu, pentru a crea o clonă din ubu1 container (hai să-l numim ubu2), mai întâi opriți recipientul utilizând lxc-stop, apoi folosiți lxc-copiere comanda:

[codul sursă] lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2 [/ code source]

Aici -n opțiunea specifică containerul sursă, si -Opțiunea N specifică numele clonei. La verifica că containerul a fost clonat, utilizați lxc-ls comanda:

Instantanee

Să presupunem că sunteți pe punctul de a face unele potențial periculoase sau greu de recuperat de la modificările aduse unui container, cum ar fi reconfigurarea unui server web. Pentru a minimiza daunele, puteți crea o imagine a containerului înainte de a face o astfel de modificare. În cazul în care ceva nu merge bine în timpul configurației, puteți opri pur și simplu containerul și să-l recuperați la starea de lucru anterioară, restabilind o instantanee.

Pentru a crea instantaneul, mai întâi opresti recipientul:

[cod sursă] lxc-stop -n ubu1 [/ cod sursă]

Apoi, creați o instantanee folosind lxc-instantaneu comanda:

[cod sursă] lxc-snapshot -n ubu1 [/ cod sursă]

Se creează un instantaneu numit snap0. Orice instantanee ulterioare pe care le creați folosind această comandă vor fi apelate snap1, snap2, etc.

După aceasta, puteți start containerul și efectuați modificările dorite. Dacă doriți oricând să reveniți la o instantanee pe care ați creat-o, Stop containerul și utilizați lxc-instantaneu comanda cu -r parametru la restaurați o instantanee:

[codul sursă] lxc-snapshot -r snap0 -n ubu1 [/ codul sursă]

Aceasta va restabili instantaneul snap0 la ubu1 recipient.

Pornirea automată a containerelor la Boot

Puteți face ca un container, de exemplu, un container de server web să pornească automat când porniți sistemul. Pentru a face acest lucru, accesați secțiunea fișierul de configurare al containerului, situat în $ HOME / .local / share / lxc // config, și adăugați următoarele rânduri:

[cod sursă] lxc.start.auto = 1
lxc.start.delay = 5 [/ cod sursă]

Prima linie specifică faptul că containerul ar trebui pornit la pornire. Al doilea spune sistemului să așteptați 5 secunde înainte de a începe următorul container, dacă există.

Depanare

Dacă aveți probleme la pornirea containerelor, primul lucru care trebuie să încercați este să rulați lxc start- comanda în Prim plan Mod. De exemplu:

[codul sursă] lxc-start -n ubu1 -F [/ codul sursă]

Asta va vă arată erorile de pe consola actualăe, care este foarte util în identificarea naturii problemei.

Probleme cu rularea mai multor containere simultan

Dacă încercați să rulați mai multe containere simultan, s-ar putea să vezi erori cum ar fi „Cota atinsă” sau „nu a reușit să creeze rețeaua configurată”. Acest lucru se datorează faptului că utilizați mai multe interfețe de rețea decât vi s-au atribuit. Poti crește numărul de poduri de rețea pe care le poate rula un utilizator prin modificarea / Etc / lxc / lxc-usernet dosar ca rădăcină. S-ar putea arata asa:

[cod sursă] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ cod sursă]

Poti schimbați numărul la sfârșit (5 în acest exemplu), la un număr mai mare, cum ar fi 10. Acest lucru vă va permite să rulați până la 10 containere simultan.

Alte utilizări ale containerelor Linux

Containerele Linux au diverse utilizări. Puteți să le folosiți ca casete de testare ușoare, de exemplu, pentru a testa diverse configurații ale unui server web sau baza de date înainte de a le angaja cu un server de producție. Un alt caz de utilizare este de a testa modul în care o aplicație rulează pe diferite versiuni ale diferitelor distros.

Puteți utiliza, de asemenea, pentru a izola aplicațiile în care nu aveți încredere - orice pagubă pe care o face o aplicație va fi limitată la propriul container și nu va afecta sistemul gazdă. Vă rugăm să rețineți că, deși este posibil să rulați aplicații GUI într-un container, este nevoie de mult timp și efort și, prin urmare, nu este recomandat. Dacă doriți să rulați aplicații GUI într-o cutie de nisip, consultați articolul nostru despre cum să aplicați aplicațiile sandbox în Linux.

VEZI ȘI: 7 Cele mai bune alternative virtuale pe care le puteți utiliza

Executați mai multe distros simultan cu containere Linux

Astfel se încheie modalitatea noastră de a rula mai multe distros Linux pe un singur computer, fără capul general al unei mașini virtuale cu dimensiuni complete. Utilitatea acestei tehnologii este limitată doar de creativitatea dvs., așa că nu ezitați să experimentați și să aflați cazuri noi de utilizare. Dacă aveți probleme la configurarea containerelor, nu ezitați să ne puneți o întrebare în secțiunea de comentarii.




Nimeni nu a comentat acest articol încă.

Ghiduri de cumpărare gadget, tehnologii care contează
Publicăm ghiduri detaliate pentru achiziționarea de echipamente, creăm liste interesante cu cele mai bune produse de pe piață, acoperim știri din lumea tehnologiei