Мен жумушчу станциямда жергиликтүү обочолонгон өнүгүү чөйрөлөрүн уюштурууга болгон мамиле жөнүндө сүйлөшөм. Бул ыкма төмөнкү факторлордун таасири астында иштелип чыккан:
- Ар кандай тилдер ар кандай IDE жана шаймандарды талап кылат;
- Ар кандай долбоорлор инструменттердин жана китепканалардын ар кандай версияларын колдонушу мүмкүн.
Бул ыкма ноутбукта же жумушчу станцияда локалдуу иштеген LXD контейнерлеринин ичинде хостко багытталган графикалык чыгарылыш менен иштеп чыгуу болуп саналат.
Мисал конфигурация Ubuntu 20.04.
Варианттар жана себептер боюнча ой жүгүртүү макаланын аягында келтирилген.
1. LXD орнотуу
В Ubuntu 20.04 LXD мындан ары deb пакети катары орнотуу үчүн жеткиликтүү эмес, бир гана snap аркылуу:
$ snap install lxd
Орнотуудан кийин сиз инициализацияны аткарышыңыз керек:
$ lxd init
Мен өзгөртө турган жалгыз параметр storage bakend - Мен колдоном dir эң жөнөкөй катары. Мен сүрөттөрдү жана көчүрмөлөрдү колдонбогондуктан, эскертүүлөр Алар мени коркутпайт:
Ошо сыяктуу эле, каталогдун сервери акыркы чара катары каралышы керек.
Ал бардык негизги LXD функцияларын колдойт, бирок өтө жай жана натыйжасыз, анткени ал аткара албайт
тез көчүрмөлөр же көз ирмемдик сүрөттөр, ошондуктан ар бир жолу инстанциянын сактагычын толугу менен көчүрүү керек.
2. 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
Мен репозиторийдеги сүрөттөрдү жактырам , анткени аларда алдын ала орнотулган программа азыраак. Ушул себептен мен префиксти коштум 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.
Изоляциялоо жагынан контейнерлештирүү виртуалдаштырууга салыштырмалуу чоң чабуулга ээ экенин эстен чыгарбоо керек – хост менен контейнер бир өзөктү бөлүшөт, бул кесепеттүү программанын контейнерден чыгып кетишине мүмкүндүк берет. Шектүү программалык камсыздоо менен эксперимент жүргүзүүдө, көбүрөөк ылайыктуу изоляция механизмдерин колдонуу жакшы.
Пайдалуу шилтемелер
- Habré жөнүндө кенен макала
- , LXD менен LXCди чаташтырбоо маанилүү - алар ар түрдүү, бирок бири-бири менен байланышкан нерселер.
- — бул блогдо LXD жөнүндө көптөгөн пайдалуу маалымат бар.
- — Microsoft мезгил-мезгили менен жаңы курулуштарды чогултуп, аларды атайын лицензия менен таркатат.
Source: www.habr.com
