Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Kaip paleisti kelis Distros Simultaneosly naudojant Linux konteineriai

„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.

Top