Контејнери за Линук (ЛКСЦ) су лагана технологија виртуализације и имају различите намене. Она је део Линук кернела, и може вам омогућити да емулирате један или више Линук дистроса на једном Линук домаћину. Размислите о томе као о средини између технологија цхроот и потпуне виртуализације као што су ВиртуалБок, КВМ или Ксен. Слична технологија присутна у БСД свијету је и ФрееБСД Јаилс.
На пример, машина на којој пишем је лаптоп који ради на Линук Минт 18, а покреће га Интел Атом процесор, а има 2 ГБ РАМ-а. Ипак, ја водим три Линук контејнера, сваки са инстанцом Апацхе веб сервера, без великог перформанса. То би било незамисливо са традиционалном виртуелном машином као што је ВиртуалБок. Дакле, ако сте желели да покренете вишеструке дистрибуције на вашем Линук систему, Линук контејнери би требали добро обавити посао за вас.
Инсталирање и конфигурисање Линук контејнера
Постављамо ЛКСЦ на Линук Минт 18 64-бит. Овде наведене инструкције за инсталацију ће такође радити без измена на Убунту 16.04 и новијим верзијама. Ако користите други дистро, молимо вас да погледате званичну документацију вашег дистроа ако нешто не ради како је очекивано. Такође се претпоставља познавање командне линије и опште решавање проблема.
Предувјети
Ево неколико ствари које треба да подесите да бисте почели да користите више дистроса:
1. Инсталирајте ЛКСЦ и други неопходни софтвер користећи:
судо апт инсталл лкц лкц-темплатес уидмап [/ соурцецоде]
2. Сада требате конфигурирати свој профил . Унесите следеће команде да бисте га подесили:
[соурцецоде] мкдир -п ~ / .цонфиг / лкц
ецхо "лкц.ид_мап = у 0 100000 65536" & амп; гт; ~ / .цонфиг / лкц / дефаулт.цонф
ецхо "лкц.ид_мап = г 0 100000 65536" & амп; гт; & амп; гт; ~ / .цонфиг / лкц / дефаулт.цонф
ецхо "лкц.нетворк.типе = ветх" & амп; гт; & амп; гт; ~ / .цонфиг / лкц / дефаулт.цонф
ецхо "лкц.нетворк.линк = лкцбр0" & амп; гт; & амп; гт; ~ / .цонфиг / лкц / дефаулт.цонф
ецхо "$ УСЕР ветх лкцбр0 2" | судо тее -а / етц / лкц / лкц-усернет [/ соурцецоде]
3. Затим морате подесити корисничке дозволе на следећи начин:
[соурцецоде] судо усермод –адд-субуидс 100000-165536 $ УСЕР
судо усермод -адд-субгидс 100000-165536 $ УСЕР
судо цгм креира све кориснике
судо цгм цховн сви корисници $ (ид -у) $ (ид -г)
цгм мовепид алл усер $$ [/ соурцецоде]
Подешавање контејнера
Сада када имате ЛКСЦ контејнер инсталиран заједно са другим неопходним софтвером, ево корака за постављање контејнера:
1. У овом примеру ћемо поставити Убунту контејнер, назван ubu1
. Да бисте то урадили, извршите следећу команду:
[соурцецоде] лкц-цреате -темплате довнлоад -наме убу1 [/ соурцецоде]
2. Овдје параметар –template
каже лкц да преузме унапријед конфигурирану слику с интернета, док параметар ubu1
у овом случају наводи име спремника - ubu1
. Можете користити било које име које желите.
3. Сада ћете видети листу подржаних дистро слика :

4. Унесите специфичности дистрибуције коју желите да инсталирате. Овде ћу инсталирати 64-битну верзију Убунту 16.04 (кодно име кениал):

5. Ако желите да инсталирате слику која није интерактивна, следећа команда постиже исти резултат као и горе:
[соурцецоде] лкц-цреате -т довнлоад -н убу1 - –дист убунту –релеасе кениал –арцх амд64 [/ соурцецоде]
6. ЛКСЦ ће сада преузети и инсталирати минималну Убунту кениал слику на вашем хост систему. Преузимање и инсталација могу трајати мало времена у зависности од ваше интернет везе и брзине вашег рачунара. Након инсталације, видећете екран на следећи начин:

Сада сте спремни да користите ново постављени Убунту контејнер.
Коришћење вишеструких дистроса са Линук контејнерима
Покретање контејнера
Покрените контејнер користећи команду lxc-start
:
[соурцецоде] лкц-старт -н убу1 -д [/ соурцецоде]
Овде параметар -n
наводи име контејнера који желите да покренете ( ubu1
у овом случају), а параметар -d
покреће га у позадини .
Можете да проверите да ли је контејнер покренут помоћу команде lxc-ls
:
[соурцецоде] лкц-лс -ф [/ соурцецоде]

Параметар -f
омогућава фанци извештавање. Овде можете видети да имам два контејнера - један Дебиан (заустављен) и један Убунту (трчање).
Приступање и коришћење вашег контејнера
Можете приступити конзоли конзоле помоћу lxc-attach
:
[соурцецоде] лкц-аттацх -н убу1 [/ соурцецоде]
Сада ћете имати коријенску љуску на вашем контејнеру. Препоручује се да поставите лозинку за роот корисника и да креирате редован кориснички налог :
[соурцецоде] пассвд
аддусер беебом [/ соурцецоде]
Наравно, замените беебом са корисничким именом које желите. Затим можете да инсталирате софтвер и конфигуришете контејнер као што бисте то урадили на обичном систему. На пример, у Дебиан или Убунту контејнеру:
[изворни код] апт инсталл вгет отварам-сервер хтоп тмук нано иптаблес [/ соурцецоде]
Заустављање контејнера
Када завршите игру са контејнером, користите наредбу екит да бисте се вратили у хост систем . Сада употребите lxc-stop
наредбу да зауставите свој контејнер :
[соурцецоде] лкц-стоп -н убу1 [/ соурцецоде]
Ово ће учинити да се контејнер искључи чисто и да неће трошити више ресурса на вашем систему, осим простора на диску.
Клонирање и снимање
Клонови
Када инсталирате програме у контејнеру и конфигуришете их по сопственом укусу, можда ћете желети да направите један или више копија за лакше снабдевање. То можете да урадите тако што ћете направити клон, који је тачна копија контејнера.
На пример, да бисте креирали клон контејнера ubu1
(назовимо га ubu2
), прво зауставите контејнер користећи lxc-stop
, а затим користите команду lxc-copy
:
[соурцецоде] лкц-стоп -н убу
лкц-цопи -н убу1-убу2 [/ соурцецоде]
Овде, -н опција специфицира изворни контејнер, а -Н опција специфицира име клона . Да бисте потврдили да је контејнер клониран, користите lxc-ls
:

Снапсхотс
Претпоставимо да ћете учинити неке потенцијално опасне или тешке за опоравак од промјена у спремнику, као што је поновна конфигурација веб послужитеља. Да бисте смањили штету, можете направити снимак контејнера пре него што направите такву промену. У случају да нешто крене по злу током конфигурације, можете једноставно зауставити контејнер и вратити га у претходно радно стање враћањем снимка.
Да бисте креирали снимак, прво зауставите контејнер :
[соурцецоде] лкц-стоп -н убу1 [/ соурцецоде]
Затим направите снимак помоћу команде lxc-snapshot
:
[соурцецоде] лкц-снапсхот -н убу1 [/ соурцецоде]
Ово ствара снимак под називом snap0
. Сви каснији снимци које направите помоћу ове команде ће се звати снап1, снап2, итд.
Након тога можете покренути контејнер и извршити жељене промјене. Ако у било ком тренутку желите да се вратите на снимак који сте креирали, зауставите контејнер и употребите lxc-snapshot
команду са -r
параметром да бисте вратили снимак :
[соурцецоде] лкц-снапсхот -р снап0 -н убу1 [/ соурцецоде]
Ово ће вратити снапсхот snap0
у контејнер ubu1
.
Ауто-старт Контејнери на Боот-у
Можете да направите контејнер, на пример, контејнер веб сервера, аутоматски када се покренете систем. Да бисте то урадили, идите на цонфиг датотеку контејнера, која се налази у $HOME/.local/share/lxc//config
, и додајте следеће линије :
[соурцецоде] лкц.старт.ауто = 1
лкц.старт.делаи = 5 [/ соурцецоде]
Прва линија наводи да би контејнер требао бити покренут приликом покретања. Други каже систему да чека 5 секунди пре него што почне следећи контејнер, ако га има.
Решавање проблема
Ако имате проблема са покретањем контејнера, прва ствар коју треба да покушате је да покренете lxc-start
команду у lxc-start
плану . На пример:
[соурцецоде] лкц-старт -н убу1 -Ф [/ соурцецоде]
Ово ће вам показати грешке на тренутној конзоли, што је веома корисно за идентификацију природе проблема.
Проблеми са покретањем више контејнера истовремено
Ако покушате да покренете више контејнера одједном, можда ћете видети грешке као што је „достигнута квота“ или „није успело да креирате конфигурисану мрежу“. То је зато што радите више мрежних интерфејса него што вам је додељено. Можете повећати број мрежних мостова које корисник може покренути тако што /etc/lxc/lxc-usernet
датотеку /etc/lxc/lxc-usernet
као роот . Можда изгледа овако:
[соурцецоде] # УСЕРНАМЕ ТИПЕ БРИДГЕ ЦОУНТ
беебом ветх лкцбр0 5 [/ изворни код]
Можете да промените број на крају (5 у овом примеру), на већи број као што је 10. То ће вам омогућити да покренете до 10 контејнера одједном.
Друге употребе Линук контејнера
Линук контејнери имају различите намене. Можете их користити као лагане тестне кутије, на пример, да бисте тестирали различите конфигурације веба или сервера базе података пре него што их извршите на производном серверу. Други случај употребе је тестирање како апликација ради на различитим верзијама различитих дистроса.
Можете их користити и за изоловање апликација које не верујете - било каква штета коју таква апликација уради ће бити ограничена на сопствени контејнер и неће утицати на хост систем. Имајте на уму да, иако је могуће покренути ГУИ апликације у контејнеру, потребно је доста времена и труда, те се стога не препоручује. Ако желите да покренете ГУИ апликације у сандбоку, погледајте наш чланак о томе како инсталирати апликације у окружењу Линука.
Покрећите више дистроса истовремено са Линук контејнерима
Тако се завршава наш Хов-То за покретање више Линук дистро на једном рачунару, без оптерећења виртуалне машине у пуној величини. Корисност ове технологије је ограничена само вашом креативношћу, па слободно експериментишите и откријте нове случајеве употребе. Ако имате проблема са постављањем контејнера, слободно нам поставите питање у одељку за коментаре.