LXD контейнерлери менен өнүктүрүү чөйрөлөрүн изоляциялаңыз

Мен жумушчу станциямда жергиликтүү обочолонгон өнүгүү чөйрөлөрүн уюштурууга болгон мамиле жөнүндө сүйлөшөм. Бул ыкма төмөнкү факторлордун таасири астында иштелип чыккан:

  • Ар кандай тилдер ар кандай IDE жана шаймандарды талап кылат;
  • Ар кандай долбоорлор инструменттердин жана китепканалардын ар кандай версияларын колдонушу мүмкүн.

Бул ыкма ноутбукта же жумушчу станцияда локалдуу иштеген LXD контейнерлеринин ичинде хостко багытталган графикалык чыгарылыш менен иштеп чыгуу болуп саналат.

Мисал конфигурация Ubuntu 20.04.

Варианттар жана себептер боюнча ой жүгүртүү макаланын аягында келтирилген.

1. LXD орнотуу

В Ubuntu 20.04 LXD мындан ары deb пакети катары орнотуу үчүн жеткиликтүү эмес, бир гана snap аркылуу:

$ snap install lxd

Орнотуудан кийин сиз инициализацияны аткарышыңыз керек:

$ lxd init

Мен өзгөртө турган жалгыз параметр storage bakend - Мен колдоном dir эң жөнөкөй катары. Мен сүрөттөрдү жана көчүрмөлөрдү колдонбогондуктан, эскертүүлөр документтер Алар мени коркутпайт:

Ошо сыяктуу эле, каталогдун сервери акыркы чара катары каралышы керек.
Ал бардык негизги LXD функцияларын колдойт, бирок өтө жай жана натыйжасыз, анткени ал аткара албайт
тез көчүрмөлөр же көз ирмемдик сүрөттөр, ошондуктан ар бир жолу инстанциянын сактагычын толугу менен көчүрүү керек.

2. LXD профилин орнотуу

LXDдеги профилдер — бул бир нече контейнерге колдонулуучу параметрлердин топтому. Менин муктаждыктарым үчүн, демейки боюнча түзүлгөн жалгыз профиль мен үчүн жетиштүү default төмөнкү өзгөртүүлөр менен:

  • $ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 — контейнерлердеги тиркемелер X11 хост сервери менен иштеше алышы үчүн;
  • $ lxc profile set default environment.DISPLAY :0 - айлана-чөйрөнүн өзгөрмөлүүлүгү үчүн DISPLAY контейнерлерге туура орнотулган;
  • $ lxc profile set default raw.idmap "both 1000 1000" - туура үчүн идентификатордун картасы.

3. Контейнерди түзүү жана орнотуу

Сүрөттүн негизинде контейнерди түзүү images:ubuntu/20.04:

$ lxc launch images:ubuntu/20.04 dev1

Мен репозиторийдеги сүрөттөрдү жактырам https://images.linuxcontainers.org, анткени аларда алдын ала орнотулган программа азыраак. Ушул себептен мен префиксти коштум images: сүрөттүн аталышына. Репозиторийден алынган сүрөттүн негизинде контейнер түзүү Ubuntu төмөнкүдөй жол менен жасоого болот: $ lxc launch ubuntu/20.04 dev1.

Контейнердин тамыр кабыгына кирүү:

$ lxc exec dev1 -- bash

Мен Firefox жана VS кодун орнотом (репозиторийден көрсөтмөлөргө ылайык):

$ apt update
$ apt install curl gpg firefox

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list

$ apt update
$ apt install code

Түшүнүктүү болушу үчүн мен контейнерди кошом.

poweroff

Bonus! GPU'ну контейнерге ыргытуу оңой, андагы иштеген тиркемелер графикалык картаны колдоно алат. Бул үчүн сизге керек:

  • түзмөк кошуу $ lxc config device add dev1 mygpu gpu;
  • контейнерге видео карта драйверлерин орнотуу - хостто орнотулган ошол эле.

4. Контейнерди колдонуу

Эгер контейнер иштей элек болсо, анда аны баштоо керек:

lxc start dev1

Root эмес колдонуучу катары VS кодун иштетүү ubuntu:

lxc exec dev1 -- sudo --login --user ubuntu code

Firefoxту ишке киргизиңиз:

lxc exec dev1 -- sudo --login --user ubuntu firefox

Колдонмо терезелери хостто көрсөтүлөт, бирок алар контейнердин ичинде аткарылат - ssh аркылуу графиканы багыттоо сыяктуу.

Мен иштеп жаткан контейнерлерди кол менен жаппайм, анткени мен анда анчалык деле мааниге ээ эмесмин - иштеп жаткан колдонмолордун терезелерин жабуу менен чектелип жатам.

5. жыйынтыктоо

Мен иштеп чыгуу үчүн хост OS колдонбоону туура көрөм, анткени бул иштеп чыгуу куралдарын орнотууну, китепканалардын мүчүлүштүктөрдү оңдоо версияларын, системанын компоненттерин белгилүү бир жол менен конфигурациялоону жана башка манипуляцияларды талап кылат. Мунун баары башка иштелип чыкпаган программалык камсыздоодо, атүгүл бүтүндөй ОСто күтүлбөгөн жүрүм-турумга алып келиши мүмкүн. Мисалы, OpenSSL конфигурациясындагы өзгөртүүлөр ОСтун туура башталышын токтотушу мүмкүн.

Мен иштеп чыгуу чөйрөлөрүн изоляциялоо үчүн ар кандай куралдарды сынап көрдүм:

  • виртуалдык машиналар (KVM, VirtualBox ж.б.) эң ачык вариант болуп саналат, бирок алар бир топ көбүрөөк ресурстарды керектейт, бирок иштеп чыгуу үчүн Windows (эгерде үй ээси болсо Linux) башка варианттар жок;
  • жергиликтүү машинада иштеген булутту иштеп чыгуу куралдары (контейнерде же виртуалдык машинада Cloud9, Eclipse Че ж.б.) - алар бул иштөө режими үчүн иштелип чыккан эмес, алар кошумча конфигурацияны жана тейлөөнү талап кылат, аларды максаттуу пайдалануу үчүн эң жакшысы максаты - булутта;
  • Менин оюмча, Docker контейнерлери дагы бир нерсе үчүн арналган, алар өзүнчө контейнерлерге топтоло элек программалык камсыздоону колдонуу менен тез прототиптөө үчүн анча ыңгайлуу эмес;

Тандалган ыкма мени өзүнүн жөнөкөйлүгү жана кирүүдөгү аз тоскоолдуктары менен таң калтырат. Контейнерлердин өзүндө сиз долбоорго тиешелүү ыкмаларды колдонсоңуз болот: баарын кол менен орнотуп, конфигурациялаңыз же автоматташтырууну колдонуңуз (Puppet, Ansible ж. Докерге негизделген инфраструктура. Мен LXD контейнерлерин да көп сандагы көз карандылыктарды же башка ОС версиясын орнотууну талап кылган белгилүү бир программаны иштетүү үчүн колдоном - бул учурда сиз каалаган OS версиясы менен контейнер түзө аласыз, мисалы $ lxc launch images:ubuntu/16.04 dev16.

Изоляциялоо жагынан контейнерлештирүү виртуалдаштырууга салыштырмалуу чоң чабуулга ээ экенин эстен чыгарбоо керек – хост менен контейнер бир өзөктү бөлүшөт, бул кесепеттүү программанын контейнерден чыгып кетишине мүмкүндүк берет. Шектүү программалык камсыздоо менен эксперимент жүргүзүүдө, көбүрөөк ылайыктуу изоляция механизмдерин колдонуу жакшы.

Пайдалуу шилтемелер

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster