Linux Containers (LXC) on kevyt virtualisointitekniikka ja niillä on erilaisia käyttötarkoituksia. Se on osa Linux-ydintä, ja sen avulla voit jäljitellä yhtä tai useampaa Linux-osiota yhdellä Linux-isännällä. Ajattele sitä keskikohdana chroot- ja täyden virtualisointitekniikan, kuten VirtualBoxin, KVM: n tai Xenin, välillä. Vastaava tekniikka, joka on BSD-maailmassa, on FreeBSD Jails.
Esimerkiksi kirjoittamani kone on kannettava tietokone, jossa on Linux Mint 18, jota käyttää Intel Atom -prosessori, ja siinä on vähän 2 Gt: n RAM-muistia. Kuitenkin olen käynnissä kolme Linux-konttia, joissa kussakin on Apache-verkkopalvelimen esiintymä, ilman suurta suorituskykyä. Tämä olisi käsittämätöntä perinteisen virtuaalikoneen, kuten VirtualBoxin, kanssa. Joten, jos olet halunnut ajaa useita distroja Linux-järjestelmässäsi, Linux Containersin pitäisi tehdä työtä juuri sinulle.
Linux-konttien asentaminen ja määrittäminen
Perustamme LXC: n Linux Mint 18 64-bittiseen. Tässä annetut asennusohjeet toimivat myös muokkaamattomina Ubuntu 16.04: ssä tai uudemmassa. Jos käytät toista distroa, tutustu distron viralliseen dokumentaatioon, jos jokin ei toimi odotetulla tavalla. Myös komentorivin tuntemus ja yleinen vianmääritys oletetaan.
edellytykset
Seuraavassa on muutamia asioita, jotka sinun pitäisi määrittää useiden eri alueiden käyttöönottoon:
1. Asenna LXC ja muu ennakko-ohjelmisto käyttämällä:
[sourcecode] sudo apt asentaa lxc lxc-templates uidmap [/ sourcecode]
2. Nyt sinun täytyy määrittää profiilisi . Määritä seuraavat komennot:
[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. Tämän jälkeen sinun on määritettävä käyttöoikeudet seuraavasti:
[sourcecode] sudo usermod –add-subuids 100000-165536 $ USER
sudo usermod –add-subgids 100000-165536 $ USER
sudo cgm luo kaikki käyttäjät
sudo cgm chown kaikki käyttäjän $ (id -u) $ (id -g)
cgm movepid kaikki käyttäjä $$ [/ sourcecode]
Kontin asentaminen
Nyt kun LXC-kontti on asennettu muiden ennakko-ohjelmistojen ohella, tässä asetetaan kontin asetukset:
1. Tässä esimerkissä perustamme Ubuntu-astian, jonka nimi on ubu1
. Voit tehdä sen seuraavasti:
[sourcecode] lxc-create –mallin lataus –nimi ubu1 [/ sourcecode]
2. Tässä parametrin parametri kertoo lxc: n lataamaan esiasetetun kuvan Internetistä, kun taas –name
parametri määrittää kontin nimen ubu1
tässä tapauksessa. Voit käyttää haluamaasi nimeä.
3. Näet nyt tuettujen distro-kuvien luettelon:
4. Anna asennettavan jakelun erityispiirteet . Asennetaan 64-bittinen Ubuntu 16.04 -versio (koodinimi xenial) täällä:
5. Jos haluat asentaa kuvan ei-interaktiivisesti, seuraava komento saa saman tuloksen kuin edellä:
[sourcecode] lxc-create -t download -n ubu1 - –dist ubuntu –julkaisu xenial –arch amd64 [/ sourcecode]
6. LXC lataa ja asentaa pienen Ubuntu-kseniaalisen kuvan isäntäjärjestelmään. Lataus ja asennus saattavat kestää jonkin aikaa Internet-yhteyden ja tietokoneen nopeuden mukaan. Asennuksen jälkeen näet seuraavanlaisen näytön:
Olet nyt valmis käyttämään äskettäin perustettua Ubuntu-säiliötäsi.
Useiden Distrojen käyttäminen Linux-konttien kanssa
Kontin käynnistäminen
Aloita säiliö käyttämällä lxc-start
komentoa:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Tässä -n
parametri määrittää aluksen nimen, jonka haluat aloittaa (tässä tapauksessa ubu1
), ja -d
parametri tekee siitä käynnissä taustalla .
Voit tarkistaa, että kontti alkoi käyttämällä lxc-ls
komentoa:
[sourcecode] lxc-ls -f [/ sourcecode]
-f
parametri mahdollistaa fancy- raportoinnin. Täällä näet, että minulla on kaksi konttia - yksi Debian (pysäytetty) ja yksi Ubuntu (käynnissä).
Kontin käyttäminen ja käyttäminen
Voit käyttää kontin konsolia käyttämällä lxc-attach
komentoa:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Sinulla on nyt juurikotelo . On suositeltavaa määrittää salasana root-käyttäjälle ja luoda säännöllinen käyttäjätili :
[Lähdekoodin] passwd
adduser beebom [/ sourcecode]
Vaihda beebom tietysti haluamasi käyttäjätunnuksen kanssa. Tämän jälkeen voit asentaa ohjelmiston ja määrittää säiliönne, kuten teet tavallisessa järjestelmässä. Esimerkiksi Debian- tai Ubuntu-säiliössä:
[sourcecode] apt install wget openssh-palvelin htop tmux nano iptables [/ sourcecode]
Kontin pysäyttäminen
Kun olet suorittanut pelaamisen säiliön kanssa, palaa isäntäjärjestelmään poistokomennolla . Käytä nyt lxc-stop
komentoa pysäyttääksesi kontin :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Tällöin säiliö suljetaan puhtaana ja se ei kuluta enemmän resursseja järjestelmään, paitsi levytilaa.
Kloonaus ja tilannekuvat
klooneja
Kun olet asentanut ohjelmia säiliöön ja määrittänyt sen mieleisesi, voit ehkä luoda yhden tai useamman kopion, jotta se on helppo varata. Voit tehdä tämän luomalla kloonin, joka on tarkka kopio säiliöstä.
Jos haluat esimerkiksi luoda ubu1
säiliön kloonin (soittakaa sitä ubu2
), pysäytä ensin säiliö käyttäen lxc-stop
ja käytä sitten lxc-copy
komentoa:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Tässä -n-vaihtoehto määrittää lähdepakkauksen, ja -N-vaihtoehto määrittää kloonin nimen . Varmista, että kontti on kloonattu, käytä lxc-ls
komentoa:
tilannekuvia
Oletetaan, että aiot tehdä muutamia vaarallisia tai vaikeasti palautettavia muutoksia säiliöön, kuten web-palvelimen uudelleenmäärittely. Vahingon minimoimiseksi voit luoda tilannekuvan kontista ennen tällaisen muutoksen tekemistä. Jos jokin menee vikaan kokoonpanon aikana, voit yksinkertaisesti pysäyttää säiliön ja palauttaa sen aiempaan tilaansa palauttamalla tilannekuvan.
Jos haluat luoda tilannekuvan, pysäytä ensin kontti :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Luo sitten tilannekuva lxc-snapshot
-komennolla:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Tämä luo tilannekuvan nimeltä snap0
. Kaikki tämän komennon avulla luodut tilannekuvat kutsutaan snap1, snap2 jne.
Tämän jälkeen voit käynnistää säiliön ja tehdä haluamasi muutokset. Jos haluat milloin tahansa palata luomaansa tilannekuvaan, lopeta säiliö ja lxc-snapshot
-komennolla -r
parametrilla:
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Tämä palauttaa tilannekuvan snap0
ubu1
säiliöön.
Automaattiset käynnistysastiat käynnistettäessä
Voit tehdä säiliön, esimerkiksi web-palvelinsäiliön, käynnistymään automaattisesti, kun käynnistät järjestelmän. Voit tehdä tämän siirtymällä kontin $HOME/.local/share/lxc//config
, joka sijaitsee $HOME/.local/share/lxc//config
ja lisää seuraavat rivit :
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Ensimmäisessä rivissä määritetään, että säiliö on käynnistettävä käynnistyksen yhteydessä. Toinen kertoo järjestelmälle odottamaan 5 sekuntia ennen seuraavan säiliön käynnistämistä, jos sellainen on.
Ongelmien karttoittaminen
Jos sinulla on ongelmia konttien käynnistämisessä, on ensin yritettävä suorittaa lxc-start
komento lxc-start
. Esimerkiksi:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Tämä näyttää nykyisen konsolin virheet, mikä on erittäin hyödyllistä ongelman luonteen tunnistamisessa.
Useiden konttien kuljettaminen samanaikaisesti
Jos yrität suorittaa useita säiliöitä kerralla, saatat nähdä virheitä, kuten "Kiintiö saavutettu", tai "epäonnistui määritetyn verkon luominen". Tämä johtuu siitä, että käytössäsi on enemmän verkkoliittymiä kuin sinulle. Voit lisätä verkon siltojen määrää, jota käyttäjä voi suorittaa muokkaamalla /etc/lxc/lxc-usernet
tiedostoa root /etc/lxc/lxc-usernet
tiedostona. Se saattaa näyttää tältä:
[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Voit muuttaa numeroa lopussa (tässä esimerkissä 5) suurempaan numeroon, kuten 10. Näin voit suorittaa jopa 10 konttia kerralla.
Linux-konttien muut käyttötavat
Linux-kontit ovat eri käyttötarkoituksia. Voit käyttää niitä kevyinä testilaatikoina esimerkiksi kokeilemaan web- tai tietokantapalvelimen eri kokoonpanoja ennen kuin ne sitoutuvat tuotantopalvelimeen. Toinen käyttötapa on testata, miten sovellus toimii eri alueiden eri versioissa.
Voit myös käyttää niitä eristämään sovelluksia, joita et luota - mikä tahansa tällaisen sovelluksen aiheuttama vahinko rajoittuu omaan säiliöön eikä vaikuta isäntäjärjestelmään. Huomaa, että vaikka GUI-sovelluksia on mahdollista suorittaa säiliössä, se vie huomattavan määrän aikaa ja vaivaa, joten sitä ei suositella. Jos haluat käyttää GUI-sovelluksia hiekkalaatikossa, lue artikkeli siitä, miten hiekkalaatikko-sovelluksia Linuxissa.
Suorita useita Distros-ohjelmia samanaikaisesti Linux-konttien kanssa
Näin lopetamme How-To -palvelun useiden Linux-alueiden ohjaamiseen yhdellä tietokoneella, ilman täysikokoisen virtuaalikoneen yläpuolista. Tämän tekniikan hyödyllisyyttä rajoittaa vain luovuus, joten voit kokeilla ja selvittää uusia käyttötapoja. Jos sinulla on ongelmia konttien asentamisessa, voit kysyä meille kommentteja koskevassa osassa.