„Linux Containers“ (LXC) yra lengvas virtualizacijos technologija, kurios naudoja įvairias funkcijas. Ji yra „Linux“ branduolio dalis ir gali leisti jums sekti vieną ar kelis „Linux“ regionus viename „Linux“ priegloboje. Pagalvokite apie tai kaip tarpinį pagrindą tarp „chroot“ ir visiško virtualizavimo technologijų, tokių kaip „VirtualBox“, KVM arba „Xen“. Panaši technologija, esanti BSD pasaulyje, yra „FreeBSD Jails“.
Pavyzdžiui, mašina, kurią rašau, yra nešiojamas kompiuteris, kuriame veikia „Linux Mint 18“, maitinamas „Intel Atom“ procesoriumi, ir turi nedidelį 2 GB RAM. Vis dėlto aš paleisiu tris „Linux“ konteinerius, kurių kiekvienas turi „Apache“ žiniatinklio serverio egzempliorių, be didelių rezultatų. Tai būtų neįsivaizduojama su tradicine virtualia mašina, tokia kaip „VirtualBox“. Taigi, jei jūs norėjote paleisti kelis „distros“ savo „Linux“ sistemoje, „Linux Containers“ turėtų atlikti darbą už jus.
„Linux Containers“ diegimas ir konfigūravimas
Mes įdiegiame „LXC“ „Linux Mint 18“ 64 bitų. Čia pateiktos diegimo instrukcijos taip pat bus pakeistos Ubuntu 16.04 ir naujesnėse versijose. Jei naudojate kitą platinimą, kreipkitės į savo oficialią dokumentaciją, jei kažkas neveikia taip, kaip tikėtasi. Taip pat daroma prielaida apie komandų eilutę ir bendrą trikčių šalinimą.
Būtinos sąlygos
Štai keletas dalykų, kuriuos turėtumėte nustatyti, kad pradėtumėte naudoti kelis skirtumus:
1. Įdiekite LXC ir kitą būtiną programinę įrangą naudodami:
[sourcecode] sudo apt įdiegti lxc lxc-templates uidmap [/ sourcecode]
2. Dabar reikia konfigūruoti profilį . Įveskite šias komandas, kad jas nustatytumėte:
[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; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Tada turite nustatyti vartotojo teises taip:
[sourcecode] sudo usermod –add-subuids 100000-165536 $ USER
sudo usermod –add-subgids 100000-165536 $ USER
sudo cgm sukuria visus naudotojus
sudo cgm chown visas vartotojo $ (id -u) $ (id -g)
cgm movepid visi vartotojas $$ [/ sourcecode]
Konteinerio nustatymas
Dabar, kai „LXC Container“ yra įdiegta kartu su kita reikalinga programine įranga, čia pateikiami veiksmai, kaip įdiegti konteinerį:
1. Šiame pavyzdyje nustatysime Ubuntu konteinerį, pavadintą ubu1
. Norėdami tai padaryti, vykdykite šią komandą:
[sourcecode] lxc-create –template download –name ubu1 [/ sourcecode]
2. Čia parametras „ –template
nurodo lxc atsisiųsti iš anksto sukonfigūruotą vaizdą iš interneto, o parametras ubu1
nurodo konteinerio pavadinimą - ubu1
šiuo atveju. Galite naudoti bet kurį norimą vardą.
3. Dabar pamatysite palaikomų distro vaizdų sąrašą :
4. Įveskite platinimo, kurį norite įdiegti, specifikacijas. Čia įdiegsiu 64 bitų „Ubuntu“ versiją (kodinis vardas xenial):
5. Jei nenorite interaktyviai įdiegti vaizdo, ši komanda pasiekia tą patį rezultatą kaip aukščiau:
[sourcecode] lxc-create -t download -n ubu1 - –dist ubuntu - išleidimas xenial -arch amd64 [/ sourcecode]
6. „LXC“ dabar parsisiunčia ir įdiegia minimalų „Ubuntu“ ksenialinį vaizdą į jūsų pagrindinę sistemą. Atsisiųsti ir įdiegti gali prireikti šiek tiek laiko, priklausomai nuo jūsų interneto ryšio ir kompiuterio greičio. Po įdiegimo pamatysite tokį ekraną:
Dabar esate pasiruošę naudoti naujai sukurtą Ubuntu konteinerį.
„Multiple Distros“ naudojimas su „Linux“ konteineriais
Konteinerio paleidimas
Pradėkite konteinerį naudodami komandą lxc-start
:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Čia parametras -n
nurodo konteinerio, kurį norite paleisti, pavadinimą (šiuo atveju ubu1
), o parametras -d
leidžia jį paleisti fone .
Galite patikrinti, ar konteineris buvo pradėtas naudojant komandą lxc-ls
:
[sourcecode] lxc-ls -f [/ sourcecode]
Parametras -f
leidžia fancy ataskaitų teikimą. Čia galite pamatyti, kad turiu du konteinerius - vieną „Debian“ (sustabdytas) ir vieną „Ubuntu“ (veikia).
Prieiga prie konteinerio ir jo naudojimas
Konteinerio konsolę galite pasiekti naudodami komandą lxc-attach
:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Dabar jūsų konteineryje bus šaknis . Rekomenduojama nustatyti root naudotojo slaptažodį ir sukurti įprastą vartotojo paskyrą :
[sourcecode] passwd
adduser beebom [/ sourcecode]
Žinoma, pakeiskite beebom su norimu naudotojo vardu. Tada galite įdiegti programinę įrangą ir konfigūruoti savo konteinerį, kaip darytumėte įprastoje sistemoje. Pavyzdžiui, „Debian“ arba „Ubuntu“ talpykloje:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Konteinerio sustabdymas
Baigę žaisti su konteineriu, naudokite exit
komandą, kad grįžtumėte į pagrindinę sistemą . Dabar naudokite lxc-stop
komandą, kad sustabdytumėte konteinerį :
[seccecode] lxc-stop -n ubu1 [/ sourcecode]
Dėl to konteineris bus išjungtas švariai, o jūsų sistemoje nebus daugiau išteklių, išskyrus diske.
Klonavimas ir momentiniai vaizdai
Klonai
Įdiegę programas į konteinerį ir sukonfigūravę jį pagal savo pageidavimą, galbūt norėsite sukurti vieną ar kelias jo kopijas, kad būtų lengviau atidaryti. Tai galite padaryti sukuriant kloną, kuris yra tiksli konteinerio kopija.
Pavyzdžiui, jei norite sukurti ubu1
konteinerio kloną (vadiname jį ubu2
), pirmiausia sustabdykite konteinerį naudodami lxc-stop
, tada naudokite lxc-copy
komandą:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Čia -n parinktis nurodo šaltinio talpyklą, o -N parinktis nurodo klono pavadinimą . Jei norite patikrinti, ar konteineris buvo klonuotas, naudokite komandą lxc-ls
:
Snapshots
Tarkime, kad ketinate padaryti kai kuriuos potencialiai pavojingus ar sunku atkurti iš konteinerio pakeitimų, pvz., Iš naujo konfigūruoti žiniatinklio serverį. Kad sumažintumėte žalą, prieš kurdami tokį pakeitimą galite sukurti talpyklos vaizdą. Jei konfigūracijos metu kažkas negerai, galite tiesiog sustabdyti konteinerį ir atkurti jį į ankstesnę darbo būseną atkuriant momentinį vaizdą.
Jei norite sukurti momentinę nuotrauką, pirmiausia sustabdykite konteinerį :
[seccecode] lxc-stop -n ubu1 [/ sourcecode]
Tada sukurkite momentinę nuotrauką naudodami komandą lxc-snapshot
:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Tai sukuria momentinę nuotrauką, pavadintą „ snap0
. Bet kokie tolesni vaizdai, kuriuos sukuriate naudodami šią komandą, bus vadinami snap1, snap2 ir pan.
Po to galite paleisti konteinerį ir atlikti norimus pakeitimus. Jei bet kuriuo metu norite grįžti į sukurtą momentinę nuotrauką, sustabdykite konteinerį ir naudokite komandą lxc-snapshot
su parametru -r
atkurti momentinę nuotrauką :
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Tai atkurs momentinę nuotrauką su ubu1
konteineriu.
Automatiškai paleisti konteinerius įkrovos metu
Galite paleisti konteinerį, pvz., Žiniatinklio serverio talpyklą, paleisti automatiškai, kai paleisite sistemą. Norėdami tai padaryti, eikite į konteinerio konfigūracijos failą, esantį $HOME/.local/share/lxc//config
, ir pridėkite šias eilutes :
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Pirmoje eilutėje nurodoma, kad konteineris turėtų būti paleistas įkrovos metu. Antrasis nurodo sistemai palaukti 5 sekundes prieš pradedant kitą konteinerį, jei toks yra.
Problemų sprendimas
Jei kyla problemų pradedant talpyklas, pirmas dalykas, kurį reikia pabandyti, yra paleisti lxc-start
komandą pirmojo lxc-start
režime. Pavyzdžiui:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Tai parodys klaidas dabartinėje konsolėje, kuri yra labai naudinga nustatant problemos pobūdį.
Problemos, susijusios su kelių konteinerių veikimu vienu metu
Jei bandysite vienu metu paleisti kelis konteinerius, galite matyti klaidas, pvz., „Kvota pasiekta“, arba „nepavyko sukurti sukonfigūruoto tinklo“. Taip yra todėl, kad naudojate daugiau tinklo sąsajų nei jums. Galite padidinti tinklo tiltų skaičių, kurį vartotojas gali paleisti, pakeisdamas failą /etc/lxc/lxc-usernet
kaip root . Tai gali atrodyti taip:
[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
Galima pakeisti numerį (5 pavyzdys šiame pavyzdyje) iki didesnio skaičiaus, pvz., 10. Tai leis jums vienu metu paleisti iki 10 konteinerių.
Kiti „Linux“ konteinerių naudojimo būdai
„Linux“ konteineriai turi įvairias paskirtis. Galite juos naudoti kaip lengvas bandymo dėžes, pvz., Išbandyti įvairias žiniatinklio ar duomenų bazės serverio konfigūracijas prieš juos priskirdami gamybos serveriui. Kitas naudojimo atvejis yra patikrinti, kaip programa veikia skirtingose skirtingų versijų versijose.
Taip pat galite juos naudoti norėdami atskirti programas, kurių nepasitikite - bet kokia žala, kurią tokia programa daro, bus apribota savo pačių konteineriu ir neturės įtakos priimančiajai sistemai. Atkreipkite dėmesį, kad, nors galima paleisti GUI programas talpykloje, tai užima daug laiko ir pastangų, todėl nerekomenduojama. Jei norite paleisti GUI programas smėlio dėžėje, žr. Mūsų straipsnį apie tai, kaip „smėlio dėžės“ programos „Linux“.
Kartu su „Linux“ konteineriais paleiskite kelis „Distros“
Tokiu būdu baigiasi mūsų „How-To“ darbas su keliais „Linux“ skirstytuvais viename kompiuteryje, be viso dydžio virtualios mašinos viršutinės dalies. Šios technologijos naudą riboja tik jūsų kūrybiškumas, todėl nedvejodami eksperimentuokite ir išsiaiškinkite naujus naudojimo atvejus. Jei kyla sunkumų nustatant konteinerius, nedvejodami užduokite mums klausimą komentarų skiltyje.