Recomandat, 2024

Alegerea Editorului

Cum de a rula mai multe Distros Simultaneosly Utilizarea containerelor Linux

Containerele Linux (LXC) sunt o tehnologie de virtualizare ușoară și au diverse utilizări. Acesta face parte din kernel-ul Linux și vă poate permite să emulați una sau mai multe distribuții Linux pe o singură gazdă Linux. Gândiți-vă ca pe un mediu intermediar între tehnologia chroot și tehnologiile complete de virtualizare, cum ar fi VirtualBox, KVM sau Xen. O tehnologie similară prezentă în lumea BSD este FreeBSD Jails.

De exemplu, mașina pe care scriu este un laptop care rulează Linux Mint 18, alimentat de un procesor Intel Atom și are o memorie RAM de 2 GB. Cu toate acestea, rulez trei containere Linux, fiecare cu o instanță a serverului web Apache care rulează, fără un hit de performanță mare. Acest lucru ar fi de neconceput cu o mașină virtuală tradițională, cum ar fi VirtualBox. Deci, dacă ați fi dorit să rulați mai multe distribuții pe sistemul dvs. Linux, Linux Containers ar trebui să facă treaba pentru tine în regulă.

Instalarea și configurarea containerelor Linux

Suntem înființați 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 un alt distro, vă rugăm să consultați documentația oficială a d distro dacă ceva nu funcționează conform așteptărilor. O familiaritate cu linia de comandă și de depanare generală sunt de asemenea presupuse.

Cerințe preliminare

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

1. Instalați LXC și alte software-uri prealabile utilizând:

[sourcecode] sudo apt instalare lxc lxc-templates uidmap [/ sourcecode]

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

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

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

[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subghiduri 100000-165536 $ USER

sudo cgm crea toate utilizatorii
sudo cgm chown tot utilizator $ (id -u) $ (id -g)
cgm movepid tot utilizator $$ [/ sourcecode]

Configurarea containerului

Acum, când aveți instalat Container LXC împreună cu alte software-uri prealabile, iată pașii pentru a configura Containerul:

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

[sourcecode] lxc-create -template descărcare -name ubu1 [/ sourcecode]

2. Aici, parametrul –template indică lxc să descarce o imagine preconfigurată de pe internet, în timp ce parametrul –name specifică numele containerului - ubu1 în acest caz. Puteți utiliza oricare nume doriți.

3. Veți vedea acum o listă de imagini distrolate 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 (codename xenial) aici:

5. Dacă doriți să instalați imaginea non-interactiv, următoarea comandă atinge același rezultat ca mai sus:

[sourcecode] lxc-create -t ​​descărcare -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]

6. LXC va descărca acum și va instala o imagine minimală Ubuntu xenial pe sistemul dvs. gazdă. Descărcarea și instalarea pot dura mai mult timp, în funcție de conexiunea la internet și de viteza calculatorului. După instalare, veți vedea un ecran similar:

Acum sunteți gata să utilizați noul dvs. container Ubuntu.

Utilizarea mai multor distribuții cu containere Linux

Pornirea containerului

Porniți containerul utilizând comanda lxc-start :

[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]

Aici parametrul -n specifică numele containerului pe care doriți să îl porniți ( ubu1 în acest caz), iar parametrul -d îl execută în fundal .

Puteți verifica dacă containerul a pornit utilizând comanda lxc-ls :

[sourcecode] lxc-ls -f [/ sourcecode]

Parametrul -f permite raportarea fantezie . Aici puteți vedea că am două containere - unul Debian (oprit) și unul Ubuntu (care rulează).

Accesarea și utilizarea containerului

Puteți accesa consola containerului utilizând comanda lxc-attach :

[sourcecode] lxc-attach -n ubu1 [/ sourcecode]

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

[Sourcecode] passwd
adduser beebom [/ sourcecode]

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

[sourcecode] apt instalare wget openssh-server htop tmux nano iptables [/ sourcecode]

Oprirea containerului

După ce ați terminat să jucați cu containerul, fie utilizați comanda de exit pentru a reveni la sistemul gazdă . Acum folosiți comanda lxc-stop pentru a opri containerul :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Acest lucru va face ca containerul să se închidă curat și nu va mai consuma alte resurse pe sistemul dvs., cu excepția spațiului pe disc.

Clonarea și instantaneele

clonele

Odată ce ați instalat programele într-un container și l-ați configurat în funcție de preferințele dvs., vă recomandăm să creați una sau mai multe copii ale acestuia pentru a vă asigura o aprovizionare ușoară. Puteți face acest lucru prin crearea unei clone, care este o replică exactă a unui container.

De exemplu, pentru a crea o clonă a containerului ubu1 (să o numim ubu2 ), mai întâi opriți containerul folosind lxc-stop, apoi folosiți comanda lxc-copy :

[sourcecode] lxc-stop -n ubu

lxc-copy -n ubu1-ubu2 [/ sourcecode]

Aici opțiunea -n specifică containerul sursă, iar opțiunea -N specifică numele clonei . Pentru a verifica dacă recipientul a fost clonat, utilizați comanda lxc-ls :

Instantanee

Să presupunem că sunteți pe punctul de a face unele potențial periculoase sau greu de recuperat din modificările unui container, cum ar fi reconfigurarea unui server web. Pentru a minimiza daunele, puteți crea un instantaneu al containerului înainte de a face o astfel de schimbare. În cazul în care se întâmplă ceva în timpul configurării, puteți opri pur și simplu containerul și îl puteți recupera la starea sa de lucru anterioară prin restaurarea unui instantaneu.

Pentru a crea instantaneu, opriți mai întâi containerul :

[sourcecode] lxc-stop -n ubu1 [/ sourcecode]

Apoi, creați un instantaneu utilizând comanda lxc-snapshot :

[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]

Aceasta creează un instantaneu numit snap0 . Toate instantaneele ulterioare pe care le creați utilizând această comandă vor fi numite snap1, snap2, etc.

După aceasta, puteți porni containerul și puteți efectua modificările dorite. Dacă oricând doriți să reveniți la un instantaneu pe care l-ați creat, opriți containerul și utilizați comanda lxc-snapshot cu parametrul -r pentru a restabili un instantaneu :

[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]

Aceasta va restabili snap0 instantaneu la containerul ubu1 .

Porniți automat Containerele la Boot

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

[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]

Prima linie specifică faptul că containerul trebuie pornit la pornire. Cel de-al doilea îi spune sistemului să aștepte 5 secunde înainte de a începe următorul container, dacă este cazul.

Depanare

Dacă întâmpinați probleme la pornirea containerelor, primul lucru pe care trebuie să-l încercați este să executați comanda lxc-start în modul prim plan . De exemplu:

[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]

Acest lucru vă va arăta erorile din actualul consol, ceea ce este foarte util în identificarea naturii problemei.

Probleme cu funcționarea simultană a mai multor containere

Dacă încercați să executați simultan mai multe containere, s-ar putea să vedeți erori cum ar fi "Cota atinsă" sau "nu a reușit să creați rețeaua configurată". Acest lucru se datorează faptului că rulați mai multe interfețe de rețea decât cele alocate pentru dvs. Puteți crește numărul de punți de rețea pe care un utilizator le poate executa modificând /etc/lxc/lxc-usernet ca root . Ar putea arata cam asa:

[sourcecode] # USERNAME TIP BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]

Puteți schimba numărul la sfârșit (5 în acest exemplu), la un număr mai mare, cum ar fi 10. Aceasta vă va permite să executați până la 10 recipiente simultan.

Alte utilizări ale containerelor Linux

Containerele Linux au diverse utilizări. Puteți să le utilizați ca casete de testare ușoare, de exemplu, pentru a testa diverse configurații ale unui server web sau de bază de date înainte de a le angaja pe 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 diverselor distribuții.

De asemenea, le puteți utiliza pentru a izola aplicațiile în care nu aveți încredere - orice deteriorare a unei astfel de aplicații va fi limitată la propriul container și nu va afecta sistemul gazdă. Rețineți că, deși este posibilă rularea aplicațiilor 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-o cutie de nisip, consultați articolul despre cum se utilizează aplicațiile sandbox în Linux.

Rulați mai multe distribuții simultan cu containerele Linux

Astfel se termină modul nostru How-To cu privire la difuzarea mai multor distribuții Linux pe un singur computer, fără suprasolicitarea unei mașini virtuale de dimensiune completă. Utilitatea acestei tehnologii este limitată doar de creativitatea dvs., deci nu ezitați să experimentați și să aflați cazuri noi de utilizare. Dacă întâmpinați probleme la instalarea de containere, nu ezitați să ne întrebați o întrebare în secțiunea de comentarii.

Top