Ajánlott, 2024

Szerkesztő Választása

Hogyan futtassunk többszörös Distrot Simultaneosly Linux Containers használatával

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.

Top