A Linux Containers (LXC) egy könnyű virtualizációs technológia, és különböző felhasználási területeik vannak. Ez része a Linux rendszermagnak, és lehetővé teszi, hogy egy vagy több Linux diszpozíciót emuláljon egyetlen Linux hoston. Gondolj rá, mint egy középpont a chroot és a teljes virtualizációs technológiák, például a VirtualBox, a KVM vagy a Xen között. A BSD világában jelen lévő hasonló technológia a FreeBSD Jails.
Például a gépem egy olyan gép, amelyen a Linux Mint 18-at futtatják, egy Intel Atom processzorral működtetve, és egy 2 GB-os RAM-ot tartalmaz. Mégis, három Linux-tartályt futtatok, mindegyikben az Apache webszerver példánya fut, nagy teljesítményű találat nélkül. Ez elképzelhetetlen egy hagyományos virtuális géppel, mint a VirtualBox. Tehát, ha már több diszpozíciót akarsz futtatni a Linux rendszereden, akkor a Linux Containers-nek csak jó munkát kell végeznie.
Linux konténerek telepítése és konfigurálása
LXC-t állítunk be a Linux Mint 18 64-bites verziójára. Az itt megadott telepítési utasítások módosítatlanul működnek az Ubuntu 16.04 és újabb verziókon is. Ha másik disztribúciót használ, kérjük, olvassa el a disztribútor hivatalos dokumentációját, ha valami nem működik a várt módon. A parancssor ismerete és az általános hibaelhárítás is feltételezhető.
Előfeltételek
Íme néhány dolog, amit meg kell adnod, hogy elkezdje a többszörös elosztást:
1. Telepítse az LXC-t és más előfeltételekre vonatkozó szoftvert a következővel:
[sourcecode] sudo apt telepít ixc lxc-templates uidmap [/ sourcecode]
2. Most be kell állítania a profilját . Adja meg a következő parancsokat a beállításhoz:
[sourcecode] mkdir -p ~ ~ .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.type = veth" & amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; gt; & amp; amp; gt; ~ / .Config / LXC / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Ezután a felhasználói engedélyeket a következőképpen kell beállítania :
[sourcecode] sudo usermod –add-subuids 100000-165536 $ USER
sudo usermod –add-subgids 100000-165536 $ USER
A sudo cgm létrehoz minden felhasználót
sudo cgm chown minden felhasználó $ (id -u) $ (id -g)
cgm movepid minden felhasználó $$ [/ sourcecode]
A tartály beállítása
Most, hogy LXC Container telepítve van más előfeltétel szoftverrel együtt, itt találja meg a Container beállításának lépéseit:
1. Ebben a példában egy ubu1
nevű Ubuntu tartályt ubu1
. Ehhez hajtsa végre a következő parancsot:
[sourcecode] lxc-create –template letöltési név ubu1 [/ sourcecode]
2. Itt a –template
paraméter azt mondja az lxc-nek, hogy töltsön le egy előre konfigurált képet az internetről, míg a –name
paraméter adja meg a tároló nevét - ubu1
ebben az esetben. Használhatja a kívánt nevet.
3. Most megjelenik a támogatott diszkontképek listája:

4. Adja meg a telepíteni kívánt terjesztés sajátosságait . Itt telepítem az Ubuntu 16.04 64 bites verzióját (kódnév xenial):

5. Ha a képet nem interaktív módon szeretné telepíteni, az alábbi parancs ugyanazzal az eredménnyel jár, mint a fenti:
[sourcecode] lxc-create -t letöltés -n ubu1 - –dist ubuntu - xenial –arch amd64 [/ sourcecode]
6. Az LXC most letölti és telepíti a minimális Ubuntu xenial képet a fogadó rendszerre. A letöltés és a telepítés az internetkapcsolat és a számítógép sebessége függvényében eltarthat egy kicsit. A telepítés után megjelenik egy ilyen képernyő:

Most már készen áll az újonnan létrehozott Ubuntu tároló használatára.
Többszörös Distros használata Linux konténerekkel
A tartály indítása
Indítsa el a tárolót az lxc-start
paranccsal:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Itt a -n
paraméter határozza meg az indítani kívánt tartály nevét (ebben az esetben az ubu1
), a -d
paraméter pedig a háttérben fut .
Ellenőrizheti, hogy a konténer az lxc-ls
paranccsal kezdődött lxc-ls
:
[sourcecode] lxc-ls -f [/ sourcecode]

A -f
paraméter lehetővé teszi a képzeletbeli jelentést. Itt látható, hogy két tárolóeszköztem van - egy Debian (megállítva) és egy Ubuntu (futás).
A tároló elérése és használata
A konténer konzolját az lxc-attach
paranccsal érheti el :
[forráskód] lxc-attach -n ubu1 [/ sourcecode]
Most már van egy gyökérhéj a tartályon. Javasoljuk, hogy jelszót állítson be a root felhasználó számára, és hozzon létre egy rendszeres felhasználói fiókot :
[Forráskód] passwd
adduser beebom [/ sourcecode]
Természetesen a beebom- ot a kívánt felhasználónévvel helyettesítheti. Ezután telepítheti a szoftvert és konfigurálhatja a konténerét úgy, mintha rendszeres rendszerben lenne. Például egy Debian vagy Ubuntu tartályban:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Tároló leállítása
Miután befejezte a lejátszást a tárolóval, vagy használja a exit
parancsot, hogy visszatérjen a gazdarendszerhez . Most használja az lxc-stop
parancsot a konténer leállításához :
[forráskód] lxc-stop -n ubu1 [/ sourcecode]
Ezzel a tartály leáll, és nem fog több erőforrást fogyasztani a rendszeren, kivéve a lemezterületet.
Klónozás és pillanatképek
Clones
Miután telepítette a programokat egy tartályba, és tetszés szerint konfigurálta, érdemes lehet egy vagy több példányt létrehozni az egyszerű rendelkezésre bocsátáshoz. Ezt úgy teheti meg, hogy létrehoz egy klónot, amely egy tároló pontos másolata.
Például az ubu1
tartály klónjának létrehozásához (hívjuk ubu2
) először állítsa le a tartályt az lxc-stop
használatával, majd használja az lxc-copy
parancsot:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Itt a -n opció adja meg a forrástartályt, és a -N opció megadja a klón nevét . A konténer klónozásának ellenőrzéséhez használja az lxc-ls
parancsot:

Pillanatképek
Tegyük fel, hogy néhány potenciálisan veszélyes vagy nehezen helyreállítható egy konténerből, például egy webszerver újrakonfigurálása. A sérülés minimalizálása érdekében létrehozhat egy pillanatképet a tartályról, mielőtt ilyen változást hozna. Abban az esetben, ha a konfiguráció során valami baj van, egyszerűen leállíthatja a tartályt, és visszaállíthatja az előző munkaállapotába egy pillanatfelvétel visszaállításával.
A pillanatkép létrehozásához először állítsa le a tartályt :
[forráskód] lxc-stop -n ubu1 [/ sourcecode]
Ezután hozzon létre egy pillanatfelvételt az lxc-snapshot
paranccsal:
[forráskód] lxc-snapshot -n ubu1 [/ sourcecode]
Ez létrehoz egy pillanatfelvételt, amit snap0
nak snap0
. A parancs segítségével létrehozott minden további pillanatfelvételt snap1, snap2, stb.
Ezután elindíthatja a tartályt, és elvégezheti a kívánt módosításokat. Ha bármikor vissza szeretne térni egy létrehozott pillanatfelvételre, állítsa le a tartályt, és a lxc-snapshot
visszaállításához használja az lxc-snapshot
parancsot a -r
paraméterrel:
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Ez visszaállítja a pillanatfelvételt a ubu1
tárolóra.
Automatikus indítás konténerek a rendszerindításkor
A rendszer indításakor automatikusan elindíthat egy tárolót, például egy webszerver tárolót. Ehhez keresse meg a tároló konfigurációs fájlját, amely a $HOME/.local/share/lxc//config
könyvtárban található, és adja hozzá a következő sorokat :
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Az első sor meghatározza, hogy a tartályt indításkor kell elindítani. A második azt mondja a rendszernek, hogy várjon 5 másodpercet a következő tartály indítása előtt, ha van ilyen.
Hibaelhárítás
Ha problémája van a konténerek indításakor, akkor az első dolog az lxc-start
parancs futtatása az előtér módban. Például:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Ez megmutatja a jelenlegi konzolon lévő hibákat, ami nagyon hasznos a probléma természetének azonosításában.
Problémák több tartály futtatásával egyidejűleg
Ha több tartályt próbál egyszerre futtatni, előfordulhat, hogy olyan hibák lépnek fel, mint a „Kvóta elérve”, vagy „nem sikerült létrehozni a konfigurált hálózatot”. Ez azért van, mert több hálózati csatolót futtat, mint az Ön számára. Növelheti a hálózati hidak számát, amelyet a felhasználó futtathat az /etc/lxc/lxc-usernet
fájl root /etc/lxc/lxc-usernet
történő módosításával. Ez így nézhet ki:
[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Megváltoztathatja a számot a végén (5 ebben a példában), egy nagyobb számra, például 10-re. Ezzel egyszerre akár 10 tárolót is futtathat.
A Linux konténerek egyéb felhasználása
A Linux-tartályok különböző felhasználási területekkel rendelkeznek. Könnyű teszt dobozokként használhatja őket, például egy webes vagy adatbázis-kiszolgáló különböző konfigurációinak teszteléséhez, mielőtt elkötelezné őket egy termelési kiszolgálóra. Egy másik felhasználási eset az, hogy teszteljük, hogyan működik az alkalmazás a különböző distrosok különböző verzióiban.
Használhatja őket arra is, hogy elkülönítse azokat az alkalmazásokat, amelyekre nem bízik - az ilyen alkalmazás által okozott kár csak saját tárolójára korlátozódik, és nem befolyásolja a fogadó rendszert. Kérjük, vegye figyelembe, hogy bár lehetséges egy GUI-alkalmazások futtatása egy tartályban, jelentős időt és erőfeszítést igényel, ezért nem ajánlott. Ha a GUI-alkalmazásokat homokozóban szeretné futtatni, olvassa el a cikkünket arról, hogyan lehet a Linuxot a homokozóval kezelni.
Többszörös Distrók futtatása egyidejűleg a Linux konténerekkel
Így véget vet a How-To-nak egy több számítógépen futó több Linux-terepen, egy teljes méretű virtuális gép fölött. Ennek a technológiának a hasznosságát csak a kreativitása korlátozza, így nyugodtan kísérletezhet és újszerű felhasználási eseteket találhat. Ha problémái vannak a konténerek felállításával, ne habozzon kérdéseket feltenni a megjegyzések részben.