Linux Containers (LXC) sunt o tehnologie ușoară de virtualizare și au diverse utilizări. Face parte din nucleul Linux și vă poate permite să emulați una sau mai multe distribuții Linux pe o singură gazdă Linux. Gândiți-vă la acesta ca la un punct de mijloc între un chroot și tehnologii complete de virtualizare, cum ar fi VirtualBox, KVM sau Xen. O tehnologie similară prezentă în lumea BSD sunt închisorile FreeBSD.
De exemplu, mașina pe care scriu este un laptop care rulează Linux Mint 18, alimentat de un procesor Intel Atom și are 2 GB de RAM. Cu toate acestea, rulez trei containere Linux, fiecare cu o instanță a serverului web Apache care rulează, fără o mare performanță. Acest lucru ar fi de neconceput cu o mașină virtuală tradițională, cum ar fi VirtualBox. Deci, dacă ați dorit să rulați mai multe distribuții pe sistemul dvs. Linux, Linux Containers ar trebui să facă treaba pentru dvs. foarte bine.
Instalarea și configurarea containerelor Linux
Configurăm LXC pe Linux Mint 18 pe 64 de biți. Instrucțiunile de instalare furnizate aici vor funcționa, de asemenea, nemodificate pe Ubuntu 16.04 și mai sus. Dacă utilizați o altă distribuție, vă rugăm să consultați documentația oficială a distribuției dvs. dacă ceva nu funcționează conform așteptărilor. Se presupune, de asemenea, o familiaritate cu linia de comandă și depanarea generală.
Condiții prealabile
Iată câteva lucruri pe care ar trebui să le configurați pentru a începe să utilizați distribuții multiple:
1. Instalați LXC și alte programe preliminare care utilizează:
[cod sursă] sudo apt install lxc lxc-templates uidmap [/ cod sursă]
2. Acum trebuie configurați-vă profilul. Introduceți următoarele comenzi pentru configurare:
[cod sursă] mkdir -p ~ / .config / lxc
ecou "lxc.id_map = u 0 100000 65536" & amp; amp; amp; gt; ~ / .config / lxc / default.conf
ecou "lxc.id_map = g 0 100000 65536" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ecou "lxc.network.type = veth" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ecou "lxc.network.link = lxcbr0" & amp; amp; amp; gt;& amp; amp; amp; gt; ~ / .config / lxc / default.conf
ecou "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
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 tot utilizatorul $ (id -u) $ (id -g)
cgm movepid to user $$ [/ sourcecode]
Configurarea containerului
Acum că aveți LXC Container instalat împreună cu alte software-uri preliminare, iată pașii necesari pentru configurarea containerului:
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 [/ sourcecode]
2. Aici, -șablon
parametrul îi spune lui lxc să Descarca o imagine preconfigurată de pe internet, in timp ce -Nume
parametrul specifică numele containerului - ubu1
în acest caz. Puteți folosi orice nume doriți.
3. Vei vedea acum o listă de imagini distro acceptate:
4. Introduceți specificul distribuției pe care doriți să o 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 neinteractiv, următoarea comandă obține același rezultat ca și cele de mai sus:
[sourcecode] lxc-create -t download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC va descărca și instala acum o imagine xenial minimă Ubuntu pe sistemul dvs. gazdă. Descărcarea și instalarea ar putea dura puțin, î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ă utilizați containerul Ubuntu nou configurat.
Utilizarea mai multor distrosuri cu containere Linux
Pornirea containerului
Porniți containerul folosind lxc-start
comanda:
[cod sursă] lxc-start -n ubu1 -d [/ cod sursă]
Aici -n
parametru specifică numele containerului pe care doriți să începeți (ubu1
în acest caz) și -d
parametru îl face să ruleze în fundal.
Puteți verifica dacă containerul a început folosind lxc-ls
comanda:
[cod sursă] lxc-ls -f [/ cod sursă]
-f
parametrul activează extravagant raportare. Aici, puteți vedea că am două containere - unul Debian (oprit) și unul Ubuntu (rulează).
Accesarea și utilizarea containerului
Poti accesați consola containerului folosind lxc-attach
comanda:
[cod sursă] lxc-attach -n ubu1 [/ cod sursă]
Acum veți 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:
[cod sursă] passwd
adduser beebom [/ sourcecode]
Desigur, înlocuiți beebom cu numele de utilizator dorit. Apoi puteți instala software și configura containerul așa cum ați face pe un sistem obișnuit. De exemplu, într-un container Debian sau Ubuntu:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Oprirea containerului
După ce ați terminat de jucat cu containerul, folosiți fișierul Ieșire
comanda pentru a reveni la sistemul gazdă. Acum utilizați lxc-stop
comanda să vă opriți containerul:
[cod sursă] lxc-stop -n ubu1 [/ cod sursă]
Acest lucru va face ca containerul să se închidă în mod curat și nu va mai consuma resurse pe sistemul dvs., cu excepția spațiului pe disc.
Clonare și Instantanee
Clone
După ce ați instalat programele într-un container și le-ați configurat după bunul plac, vă recomandăm 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ă a ubu1
container (să-l numim ubu2
), mai întâi opriți recipientul folosind lxc-stop
, apoi folosiți lxc-copy
comanda:
[cod sursă] lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
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 după modificările aduse unui container, cum ar fi reconfigurarea unui server web. Pentru a minimiza daunele, puteți crea un instantaneu al containerului înainte de a efectua o astfel de modificare. În cazul în care ceva nu merge bine în timpul configurării, puteți opri pur și simplu containerul și recuperați-l la starea sa de lucru anterioară, restaurând un instant.
Pentru a crea instantaneul, mai întâi opriți recipientul:
[cod sursă] lxc-stop -n ubu1 [/ cod sursă]
Atunci, creați un instantaneu folosind lxc-instantaneu
comanda:
[cod sursă] lxc-snapshot -n ubu1 [/ cod sursă]
Aceasta 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 container și faceți modificările dorite. Dacă vreți să reveniți la un instantaneu pe care l-ați creat, Stop containerul și utilizați lxc-instantaneu
comanda cu -r
parametru pentru restabiliți un instantaneu:
[cod sursă] lxc-snapshot -r snap0 -n ubu1 [/ cod sursă]
Aceasta va restabili instantaneul snap0
la ubu1
container.
Pornirea automată a containerelor la pornire
Puteți crea un container, de exemplu, un container de server web, să porniți automat atunci când porniți sistemul. Pentru a face acest lucru, mergeți la fișierul de configurare al containerului, situat în $ HOME / .local / share / lxc /
, ș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 trebuie pornit la pornire. Al doilea spune sistemului să așteptați 5 secunde înainte de a începe următorul container, dacă există.
Depanare
Dacă întâmpinați probleme la pornirea containerelor, primul lucru de încercat este să rulați lxc-start
comanda în Prim plan modul. De exemplu:
[cod sursă] lxc-start -n ubu1 -F [/ cod sursă]
Asta va vă arată erorile de pe consola actualăe, care este foarte util în identificarea naturii problemei.
Probleme cu rularea simultană a mai multor containere
Dacă încercați să rulați mai multe containere simultan, s-ar putea să vedeți erori precum „Cota atinsă” sau „nu a reușit să creeze rețeaua configurată”. Acest lucru se datorează faptului că rulați mai multe interfețe de rețea decât cele alocate. Poti crește numărul de punți de rețea pe care le poate rula un utilizator prin modificarea / etc / lxc / lxc-usernet
fișier ca rădăcină. S-ar putea să arate cam așa:
[cod sursă] # NUME DE UTILIZATOR TIP DE PONT
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. Le puteți folosi ca cutii de testare ușoare, de exemplu, pentru a testa diferite configurații ale unui server web sau de baze de date înainte de a le trimite la 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 distribuții.
De asemenea, le puteți utiliza pentru a izola aplicații în care nu aveți încredere - orice daune pe care le face o astfel de aplicație vor fi limitate la propriul container și nu vor 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 o cantitate semnificativă de timp și efort și, prin urmare, nu este recomandat. Dacă doriți să rulați aplicații GUI într-un sandbox, consultați articolul nostru despre cum să aplicați sandbox în Linux.
VEZI ȘI: 7 cele mai bune alternative VirtualBox pe care le poți folosi
Rulați mai multe Distros simultan cu Containere Linux
Astfel se încheie procedura noastră de utilizare a mai multor distribuții Linux pe un singur computer, fără costurile unei mașini virtuale de 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 de utilizare noi. Dacă aveți probleme la configurarea containerelor, nu ezitați să ne puneți o întrebare în secțiunea de comentarii.