Ман дар бораи равиш ба ташкили муҳити ҷудошудаи рушди маҳаллӣ дар истгоҳи кории худ сӯҳбат мекунам. Равиш зери таъсири омилҳои зерин таҳия шудааст:
- Забонҳои гуногун 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 Code-ро насб мекунам (аз анбори
$ 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
Бонус! Партофтани GPU ба контейнер хеле осон аст, то барномаҳое, ки дар он кор мекунанд, корти графикиро истифода баранд. Барои ин ба шумо лозим аст:
- дастгоҳ илова кунед
$ lxc config device add dev1 mygpu gpu
; - драйверҳои корти видеоиро дар контейнер насб кунед - ҳамонҳое, ки дар мизбон насб карда шудаанд.
4. Истифодаи контейнер
Агар контейнер ҳанӯз кор накунад, шумо бояд онро оғоз кунед:
lxc start dev1
Иҷрои VS Code ҳамчун корбари ғайридавлатӣ Ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu code
Firefox-ро оғоз кунед:
lxc exec dev1 -- sudo --login --user ubuntu firefox
Тирезаҳои барнома дар ҳост намоиш дода мешаванд, аммо онҳо дар дохили контейнер иҷро карда мешаванд - ба монанди интиқоли графикҳо бо истифода аз ssh.
Ман контейнерҳои иҷрошавандаро дастӣ хомӯш намекунам, зеро ман дар он чизи зиёдеро намебинам - ман худамро бо пӯшидани тирезаҳои барномаҳои иҷрошаванда маҳдуд мекунам.
5. Хулоса
Ман бартарӣ медиҳам, ки ОС-и мизбонро барои таҳия истифода накунам, зеро ин насб кардани абзорҳои таҳия, ислоҳи версияҳои китобхонаҳо, конфигуратсияи ҷузъҳои системаро ба таври мушаххас ва дигар амалҳоро талаб мекунад. Ҳамаи ин метавонад ба рафтори ғайричашмдошт дар дигар нармафзори таҳиянашуда ва ҳатто тамоми ОС оварда расонад. Масалан, тағирот дар конфигуратсияи OpenSSL метавонад боиси қатъ шудани оғози дурусти ОС гардад.
Ман асбобҳои гуногунро барои ҷудо кардани муҳити рушд санҷидаам:
- мошинҳои виртуалӣ (KVM, VirtualBox ва ғайра) варианти равшантарин мебошанд, аммо онҳо захираҳои хеле бештарро истеъмол мекунанд, гарчанде ки дигар имконоти таҳия дар Windows вуҷуд надоранд (агар мизбон Linux бошад);
- Асбобҳои таҳияи абр, ки дар мошини маҳаллӣ кор мекунанд (Cloud9 дар контейнер ё мошини виртуалӣ, Eclipse Che ва ғайра) - онҳо барои ин режими кор таҳия нашудаанд, онҳо конфигуратсия ва нигоҳдории иловагӣ талаб мекунанд, беҳтар аст, ки онҳоро барои мақсадҳои худ истифода баред мақсад - дар абр;
- Контейнерҳои Docker боз барои чизи дигар пешбинӣ шудаанд; ба назари ман, онҳо барои прототипи зуд бо истифода аз нармафзоре, ки ҳанӯз дар контейнерҳои алоҳида баста нашудаанд, чандон қулай нестанд.
Равиши интихобшуда маро бо соддагӣ ва монеаи пасти воридшавӣ ба ҳайрат меорад. Дар худи контейнерҳо шумо метавонед равишҳои мушаххаси лоиҳаро истифода баред: ҳама чизро дастӣ насб кунед ва танзим кунед ё автоматикаро истифода баред (Puppet, Ansible ва ғайра), ҳатто ҷойгир кунед $ lxc launch images:ubuntu/16.04 dev16
.
Дар хотир доштан муҳим аст, ки аз нуқтаи назари ҷудокунӣ, контейнеризатсия нисбат ба виртуализатсия сатҳи ҳамлаи калонтар дорад - мизбон ва контейнер як ядрои ягонаро тақсим мекунанд, осебпазирие, ки дар он метавонад нармафзори зарароварро аз контейнер раҳо кунад. Ҳангоми озмоиш бо нармафзори шубҳанок беҳтар аст, ки механизмҳои изолятсия мувофиқтар истифода шаванд.
Пайвандҳои муфид
- Мақолаи пурқувват дар бораи Habré
Хусусиятҳои асосии LXD - системаҳои контейнерии Linux Портали лоиҳаи LXD , муҳим аст, ки LXD-ро бо LXC омехта накунед - онҳо гуногунанд, аммо чизҳои бо ҳам алоқаманданд.Блоги Симос Ксенителлис - ин блог дорои маълумоти зиёди муфид дар бораи LXD мебошад.Тасвирҳои тайёри мошинҳои виртуалии Windows 10 барои таҳиягарон — Microsoft давра ба давра сохтмонҳои нав ҷамъоварӣ мекунад ва онҳоро бо иҷозатномаи махсус паҳн мекунад.
Манбаъ: will.com