LXD ڪنٽينرز سان ترقياتي ماحول کي الڳ ڪريو

مان پنهنجي ڪم اسٽيشن تي مقامي الڳ ٿيل ترقياتي ماحول کي منظم ڪرڻ جي طريقي جي باري ۾ ڳالهائيندس. طريقيڪار هيٺ ڏنل عنصر جي اثر هيٺ ترقي ڪئي وئي آهي:

  • مختلف ٻولين کي مختلف IDEs ۽ ٽول چينز جي ضرورت آهي؛
  • مختلف منصوبا استعمال ڪري سگھن ٿا مختلف نسخن جا اوزار ۽ لائبريريون.

طريقه ڪار آهي LXD ڪنٽينرز اندر ترقي ڪرڻ جو مقامي طور تي هڪ ليپ ٽاپ يا ورڪ اسٽيشن تي هلندڙ گرافڪس آئوٽ سان ميزبان ڏانهن ريڊريٽ ڪيو ويو.

مثال جي تشڪيل Ubuntu 20.04.

اختيارن ۽ سببن تي غور مضمون جي آخر ۾ ڏنو ويو آهي.

1. LXD انسٽال ڪريو

В Ubuntu 20.04 LXD هاڻي موجود ناهي ڊيب پيڪيج جي طور تي، صرف سنيپ ذريعي:

$ 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

انسٽال ڪريو فائر فاکس ۽ وي ايس ڪوڊ (مخزن کان هدايتن جي مطابق):

$ 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 ڪوڊ هلائڻ Ubuntu:

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

فائر فاڪس جي شروعات:

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

ايپليڪيشن ونڊوز ميزبان تي ڏيکاريا ويندا، پر اهي ڪنٽينر اندر جاري ڪيا ويندا - ssh استعمال ڪندي گرافڪس فارورڊ ڪرڻ وانگر.

مان دستي طور تي هلندڙ ڪنٽينرز کي بند نٿو ڪريان، ڇاڪاڻ ته مون کي ان ۾ گهڻو نقطو نظر نٿو اچي - مان پاڻ کي محدود ڪريان ٿو ته هلندڙ ايپليڪيشنن جي ونڊوز کي بند ڪرڻ لاءِ.

5. نتيجو

مان ترقيءَ لاءِ ميزبان OS استعمال ڪرڻ کي ترجيح نه ڏيان ٿو، ڇاڪاڻ ته ان لاءِ ڊولپمينٽ ٽولز کي انسٽال ڪرڻ، لائبريرين جا ڊيبگ ورجن، مخصوص طريقي سان سسٽم جي اجزاء کي ترتيب ڏيڻ، ۽ ٻين ڌانڌلين جي ضرورت پوندي. اهو سڀ ڪجهه اڻڄاتل رويي جي ڪري سگھي ٿو باقي، ترقي سان لاڳاپيل ناهي، سافٽ ويئر، يا اڃا به سڄي او ايس. مثال طور، OpenSSL ترتيبن ۾ تبديليون او ايس کي صحيح طور تي شروع ٿيڻ کان روڪي سگھي ٿي.

مون ترقي جي ماحول کي الڳ ڪرڻ لاءِ مختلف اوزار آزمايا آهن:

  • مجازي مشينون (KVM، VirtualBox، وغيره) - سڀ کان وڌيڪ واضح اختيار، پر خاص طور تي وڌيڪ وسيلن کي استعمال ڪري ٿو، جيتوڻيڪ ونڊوز جي تحت ترقي ڪرڻ لاء ٻيا اختيار نه آهن (جيڪڏهن ميزبان لينڪس آهي)؛
  • ڪلائوڊ ڊولپمينٽ ٽولز جيڪي مقامي مشين تي هلن ٿا (ڪلائوڊ 9 ڪنٽينر يا ورچوئل مشين ۾، ايڪليپس چي وغيره) - اهي آپريشن جي هن موڊ لاءِ نه ٺاهيا ويا آهن، انهن کي اضافي ترتيب ۽ سار سنڀال جي ضرورت آهي، اهو بهتر آهي ته انهن کي پنهنجي مقصد لاءِ استعمال ڪيو وڃي. مقصد - بادل ۾؛
  • ڊاکر ڪنٽينر - ٻيهر، اهي ڪنهن ٻئي لاء ٺهيل آهن، منهنجي خيال ۾ اهو تمام آسان ناهي ته انهن کي جلدي پروٽوٽائپ ڪرڻ لاء سافٽ ويئر استعمال ڪندي جيڪي اڃا تائين الڳ ڪنٽينرز ۾ پيڪيج نه ڪيا ويا آهن.

چونڊيل انداز مون کي ان جي سادگي ۽ گهٽ داخلا حد سان متاثر ڪري ٿو. پاڻ ڪنٽينرز ۾، توھان استعمال ڪري سگھو ٿا پراجيڪٽ لاءِ مخصوص طريقا: انسٽال ڪريو ۽ ترتيب ڏيو ھر شيءِ کي دستي طور تي، يا استعمال ڪريو آٽوميشن (پپٽ، جوابي، وغيره)، حتي ڊيپلائي بنيادي ڍانچي جي بنياد تي Docker. مان مخصوص سافٽ ويئر هلائڻ لاءِ LXD ڪنٽينر پڻ استعمال ڪريان ٿو جنهن کي يا ته انسٽال ڪرڻ لاءِ وڏي تعداد ۾ انحصار جي ضرورت آهي، يا هڪ مختلف OS ورجن- انهي صورت ۾، توهان گهربل او ايس ورزن سان ڪنٽينر ٺاهي سگهو ٿا، مثال طور $ lxc launch images:ubuntu/16.04 dev16.

اهو ياد رکڻ ضروري آهي ته اڪيلائي جي لحاظ کان، ڪنٽينرائيزيشن وٽ ورچوئلائيزيشن جي مقابلي ۾ وڏي حملي واري مٿاڇري آهي - ميزبان ۽ ڪنٽينر هڪ ئي ڪور شيئر ڪن ٿا، هڪ ڪمزوري جنهن ۾ مالويئر کي ڪنٽينر مان فرار ٿيڻ جي اجازت ڏئي سگهي ٿي. قابل اعتراض سافٽ ويئر سان تجربن لاء، اهو بهتر آهي ته وڌيڪ مناسب الڳ ڪرڻ واري ميڪانيزم کي استعمال ڪرڻ لاء.

ڪارآمد لنڪ

جو ذريعو: www.habr.com

تبصرو شامل ڪريو