Jupyter کي LXD مدار ۾ لانچ ڪرڻ

ڇا توهان ڪڏهن لينڪس ۾ ڪوڊ يا سسٽم يوٽيلٽيز سان تجربو ڪيو آهي بغير ڪنهن بنيادي سسٽم جي باري ۾ پريشان ٿيڻ ۽ ڪوڊ ۾ غلطي جي صورت ۾ هر شي کي ٽوڙي ڇڏيو جيڪو روٽ استحقاق سان هلڻو آهي؟

پر حقيقت جي باري ۾ ڇا چئو ته توهان کي هڪ مشين تي مختلف مائڪرو سروسز جي مڪمل ڪلستر کي جانچڻ يا هلائڻ جي ضرورت آهي؟ هڪ سئو يا هڪ هزار؟

هڪ هائپر ويزر پاران منظم ڪيل ورچوئل مشينن سان، اهڙا مسئلا حل ٿي سگهن ٿا ۽ ٿي ويندا، پر ڪهڙي قيمت تي؟ مثال طور، LXD ۾ هڪ ڪنٽينر صرف الپائن لينڪس جي تقسيم تي ٻڌل آهي 7.60MB رام، ۽ جتي روٽ ورهاڱي شروع ٿيڻ کان پوء قبضو ڪري ٿو 9.5MB! توهان اهو ڪيئن پسند ڪيو، ايلون مسڪ؟ مان چيڪ ڪرڻ جي صلاح ڏيان ٿو LXD جي بنيادي صلاحيتون - لينڪس ۾ هڪ ڪنٽينر سسٽم

ان کان پوءِ عام طور تي واضح ٿي ويو ته LXD ڪنٽينر ڇا آهن، اچو ته اڳتي وڃو ۽ سوچيو، ڇا هجي ها جيڪڏهن ڪو اهڙو هارويسٽر پليٽ فارم هجي جتي توهان ميزبان لاءِ محفوظ طريقي سان ڪوڊ هلائي سگهو ٿا، گراف ٺاهي سگهو ٿا، متحرڪ (انٽرايڪٽو) لنڪ UI- ويجيٽس توهان جي ڪوڊ سان، ڪوڊ کي بليڪ جيڪ سان ٽيڪسٽ سان گڏ ڪريو... فارميٽنگ؟ ڪجهه قسم جو انٽرويو بلاگ؟ واهه... مان چاهيان ٿو! چاهيو! 🙂

ٻلي جي هيٺان ڏسو جتي اسان هڪ ڪنٽينر ۾ لانچ ڪنداسين jupyter ليبارٽري - ايندڙ نسل جي يوزر انٽرفيس جي بدران پراڻي Jupyter نوٽ بڪ، ۽ اسان پڻ Python ماڊلز کي انسٽال ڪنداسين جهڙوڪ نياپي, پنڌ, matplotlib, IPyWidgets جيڪو توهان کي اجازت ڏيندو ته مٿي ڏنل سڀ ڪم ڪرڻ ۽ اهو سڀ ڪجهه خاص فائل ۾ محفوظ ڪريو - هڪ IPython ليپ ٽاپ.

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

آربيٽل ٽيڪ آف پلان ^

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

اچو ته هڪ مختصر ايڪشن پلان جو خاڪو ڏيون ته جيئن اسان لاءِ مٿي ڏنل اسڪيم تي عمل ڪرڻ آسان بڻائي سگهجي:

  • اچو ته ورهائڻ واري کٽ جي بنياد تي هڪ ڪنٽينر کي انسٽال ۽ لانچ ڪريون الپائن لينڪس. اسان هن تقسيم کي استعمال ڪنداسين ڇاڪاڻ ته اهو مقصد آهي minimalism ۽ ان ۾ صرف سڀ کان وڌيڪ ضروري سافٽ ويئر انسٽال ڪندو، ڪجھ به غير ضروري ناهي.
  • اچو ته ڪنٽينر ۾ هڪ اضافي ورچوئل ڊسڪ شامل ڪريون ۽ ان کي نالو ڏيو - hostfs ۽ ان کي روٽ فائل سسٽم تي نصب ڪريو. هي ڊسڪ ان کي ممڪن بڻائي ٿي ميزبان تي فائلن کي استعمال ڪرڻ لاءِ ڏنل ڊاريڪٽري مان ڪنٽينر اندر. ان ڪري، اسان جي ڊيٽا ڪنٽينر کان آزاد ٿي ويندي. جيڪڏهن ڪنٽينر کي ختم ڪيو وڃي، ڊيٽا ميزبان تي رهندي. انهي سان گڏ، هي اسڪيم ڪيترن ئي ڪنٽينرز جي وچ ۾ ساڳئي ڊيٽا کي حصيداري ڪرڻ لاء ڪارائتو آهي بغير ڪنٽينر جي ورڇ جي معياري نيٽ ورڪ ميڪانيزم کي استعمال ڪندي.
  • اچو ته انسٽال ڪريو Bash، sudo، ضروري لائبريريون، شامل ڪريو ۽ ترتيب ڏيو سسٽم يوزر
  • اچو ته Python، ماڊلز کي انسٽال ڪريون ۽ انھن لاءِ بائنري انحصار کي گڏ ڪريون
  • اچو ته انسٽال ڪريو ۽ لانچ ڪريو jupyter ليبارٽري، ظاهر کي ترتيب ڏيو، ان لاءِ ايڪسٽينشن انسٽال ڪريو.

هن آرٽيڪل ۾ اسان ڪنٽينر کي لانچ ڪرڻ سان شروع ڪنداسين، اسان LXD کي انسٽال ڪرڻ ۽ ترتيب ڏيڻ تي غور نه ڪنداسين، توهان اهو سڀ ڪجهه ٻئي مضمون ۾ ڳولي سگهو ٿا. LXD جون بنيادي خاصيتون - لينڪس ڪنٽينر سسٽم.

انسٽاليشن ۽ بنيادي نظام جي تشڪيل ^

اسان حڪم سان هڪ ڪنٽينر ٺاهيندا آهيون جنهن ۾ اسان تصوير بيان ڪريون ٿا - alpine3, ڪنٽينر جي سڃاڻپ ڪندڙ - jupyterlab ۽، جيڪڏھن ضروري ھجي، تشڪيل پروفائل:

lxc init alpine3 jupyterlab --profile=default --profile=hddroot

هتي مان هڪ ترتيب واري پروفائل استعمال ڪري رهيو آهيان hddroot جنهن ۾ روٽ ورهاڱي سان هڪ ڪنٽينر ٺاهڻ جي وضاحت ڪري ٿي اسٽوريج پول جسماني HDD ڊسڪ تي واقع آهي:

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []
lxc storage show hddpool

config:
  size: 10GB
  source: /dev/loop1
  volatile.initial_source: /dev/loop1
description: ""
name: hddpool
driver: btrfs
used_by:
- /1.0/images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
- /1.0/profiles/hddroot
status: Created
locations:
- none

هي مون کي HDD ڊسڪ تي ڪنٽينرز سان تجربو ڪرڻ جو موقعو ڏئي ٿو، ايس ايس ڊي ڊسڪ جي وسيلن کي محفوظ ڪري ٿو، جيڪو منهنجي سسٽم ۾ پڻ موجود آهي 🙂 جنهن لاءِ مون هڪ الڳ ترتيب واري پروفائل ٺاهي آهي ssdroot.

ڪنٽينر پيدا ٿيڻ کان پوء، اهو رياست ۾ آهي STOPPED، تنهنڪري اسان کي ان کي شروع ڪرڻ جي ضرورت آهي init سسٽم کي هلائڻ سان:

lxc start jupyterlab

اچو ته ڪنٽينرز جي فهرست ڏيکاريون LXD ۾ ڪي استعمال ڪندي -c جيڪو اشارو ڪري ٿو cاولمون ڊسپلي:

lxc list -c ns4b
+------------+---------+-------------------+--------------+
|    NAME    |  STATE  |       IPV4        | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool      |
+------------+---------+-------------------+--------------+

جڏهن ڪنٽينر ٺاهيندي، IP پتي کي بي ترتيب طور چونڊيو ويو، ڇاڪاڻ ته اسان هڪ ترتيب واري پروفائل استعمال ڪيو آهي default جيڪو اڳ ۾ آرٽيڪل ۾ ترتيب ڏنو ويو هو LXD جون بنيادي خاصيتون - لينڪس ڪنٽينر سسٽم.

اسان هن IP پتي کي هڪ وڌيڪ يادگار ۾ تبديل ڪنداسين هڪ نيٽ ورڪ انٽرفيس ٺاهي ڪنٽينر جي سطح تي، ۽ نه ته ڪنفيگريشن پروفائل سطح تي جيئن اهو هاڻوڪي ترتيب ۾ آهي. توهان کي اهو ڪرڻ جي ضرورت ناهي، توهان ان کي ڇڏي سگهو ٿا.

هڪ نيٽ ورڪ انٽرفيس ٺاهڻ eth0 جنهن کي اسان سوئچ سان ڳنڍيون ٿا (نيٽ ورڪ پل) lxdbr0 جنهن ۾ اسان اڳوڻي آرٽيڪل مطابق NAT کي فعال ڪيو ۽ ڪنٽينر کي هاڻي انٽرنيٽ تائين رسائي هوندي، ۽ اسان انٽرفيس کي هڪ جامد IP پتو پڻ تفويض ڪيو. 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

ڊوائيس شامل ڪرڻ کان پوء، ڪنٽينر کي ريبوٽ ڪيو وڃي:

lxc restart jupyterlab

ڪنٽينر جي حالت جي جانچ ڪندي:

lxc list -c ns4b
+------------+---------+------------------+--------------+
|    NAME    |  STATE  |       IPV4       | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0)  | hddpool      |
+------------+---------+------------------+--------------+

بنيادي سافٽ ويئر انسٽال ڪرڻ ۽ سسٽم کي ترتيب ڏيڻ ^

اسان جي ڪنٽينر کي منظم ڪرڻ لاء، توهان کي هيٺين سافٽ ويئر کي انسٽال ڪرڻ جي ضرورت آهي:

پئڪيج
وضاحت

ڪشادو
جي اين يو بورن وري شيل

bash- مڪمل ٿيڻ
بيش شيل لاء پروگرام قابل مڪمل

sudo
ڪجهه صارفين کي روٽ طور ڪجهه حڪم هلائڻ جي صلاحيت ڏيو

پاڇو
پاس ورڊ ۽ اڪائونٽ مئنيجمينٽ ٽول سوٽ شيڊ فائلن ۽ PAM لاءِ سپورٽ سان

ٽيزا
ٽائم زون ۽ ڊي لائٽ سيونگ ٽائيم ڊيٽا جا ذريعا

نانو
پيڪو ايڊيٽر ڪلون واڌارن سان

اضافي طور تي، توھان ھيٺ ڏنل پيڪيجز کي انسٽال ڪري سسٽم مين پيجز ۾ سپورٽ انسٽال ڪري سگھو ٿا - man man-pages mdocml-apropos less

lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano

اچو ته ڏسو حڪم ۽ ڪنجيون جيڪي اسان استعمال ڪيون آهن:

  • lxc - ڪال ڪريو LXD ڪلائنٽ
  • exec - LXD ڪلائنٽ جو طريقو جيڪو ڪنٽينر ۾ حڪم هلائي ٿو
  • jupyterlab - ڪنٽينر جي سڃاڻپ
  • -- - هڪ خاص ڪنجي جيڪا وضاحت ڪري ٿي ته وڌيڪ ڪنجين جي تشريح نه ڪرڻ لاءِ ڪنجيون lxc ۽ باقي تار کي پاس ڪريو جيئن ڪنٽينر ڏانهن آهي
  • apk - الپائن لينڪس ڊويزن پيڪيج مينيجر
  • add - ھڪڙو پيڪيج مئنيجر جو طريقو جيڪو حڪم کان پوء بيان ڪيل پيڪيجز کي انسٽال ڪري ٿو

اڳيون، اسان سسٽم ۾ هڪ ٽائم زون قائم ڪنداسين Europe/Moscow:

lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

ٽائيم زون کي انسٽال ڪرڻ کان پوء، پيڪيج tzdata سسٽم ۾ هاڻي ضرورت ناهي، اهو جاء وٺندو، تنهنڪري اچو ته ان کي ختم ڪريون:

lxc exec jupyterlab -- apk del tzdata

ٽائيم زون جي جانچ ڪندي:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

ڪنٽينر ۾ نون استعمال ڪندڙن لاءِ بش کي ترتيب ڏيڻ ۾ گھڻو وقت خرچ نه ڪرڻ لاءِ، ھيٺ ڏنل قدمن ۾ اسان تيار ٿيل اسڪيل فائلن کي ميزبان سسٽم مان نقل ڪنداسين. هي توهان کي اجازت ڏيندو ته بش کي خوبصورت طور تي ڪنٽينر ۾. منهنجو ميزبان سسٽم مانجارو لينڪس آهي ۽ فائلون ڪاپي ٿي رهيون آهن /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors اصولي طور تي اهي الپائن لينڪس لاءِ موزون آهن ۽ نازڪ مسئلا پيدا نه ٿا ڪن، پر توهان وٽ مختلف تقسيم ٿي سگهي ٿي ۽ توهان کي آزاديءَ سان اهو معلوم ڪرڻ جي ضرورت آهي ته ڪنٽينر ۾ Bash هلائڻ دوران ڪا غلطي آهي يا نه.

اسڪيل فائلن کي نقل ڪريو ڪنٽينر ۾. چاٻي --create-dirs ضروري ڊائريڪٽري ٺاهي ويندي جيڪڏهن اهي موجود نه آهن:

lxc file push /etc/skel/.bash_profile jupyterlab/etc/skel/.bash_profile --create-dirs
lxc file push /etc/skel/.bashrc jupyterlab/etc/skel/.bashrc
lxc file push /etc/skel/.dir_colors jupyterlab/etc/skel/.dir_colors

اڳ ۾ ئي موجود روٽ استعمال ڪندڙ لاء، اسڪيل فائلن کي نقل ڪريو جيڪي صرف ڪنٽينر ۾ نقل ٿيل گهر ڊاريڪٽري ۾:

lxc exec jupyterlab -- cp /etc/skel/.bash_profile /root/.bash_profile
lxc exec jupyterlab -- cp /etc/skel/.bashrc /root/.bashrc
lxc exec jupyterlab -- cp /etc/skel/.dir_colors /root/.dir_colors

الپائن لينڪس صارفين لاء هڪ سسٽم شيل نصب ڪري ٿو /bin/sh، اسان ان سان تبديل ڪنداسين root Bash ۾ استعمال ڪندڙ:

lxc exec jupyterlab -- usermod --shell=/bin/bash root

ته root استعمال ڪندڙ بي پاسورڊ نه هو، هن کي پاسورڊ سيٽ ڪرڻ جي ضرورت آهي. هيٺ ڏنل حڪم هن لاءِ هڪ نئون بي ترتيب پاسورڊ ٺاهي ۽ سيٽ ڪندو، جيڪو توهان ان تي عمل ڪرڻ کان پوءِ ڪنسول اسڪرين تي ڏسندا:

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "root:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: sFiXEvBswuWA

انهي سان گڏ، اچو ته هڪ نئون سسٽم صارف ٺاهيو - jupyter جنهن لاءِ اسان بعد ۾ ترتيب ڏينداسين jupyter ليبارٽري:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

اچو ته ان لاءِ پاسورڊ ٺاهي ۽ سيٽ ڪريون:

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "jupyter:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: ZIcbzWrF8tki

اڳيون، اسان ٻن حڪمن تي عمل ڪنداسين، پھريون ھڪڙو سسٽم گروپ ٺاھيندو sudo، ۽ ٻيو ان ۾ هڪ صارف شامل ڪندو jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

اچو ته ڏسون ته صارف ڪهڙن گروپن سان تعلق رکي ٿو jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

سڀ ڪجهه ٺيڪ آهي، اچو ته اڳتي وڌون.

سڀني صارفين کي اجازت ڏيو جيڪي گروپ جا ميمبر آهن sudo حڪم استعمال ڪريو sudo. هن کي ڪرڻ لاء، هيٺ ڏنل اسڪرپٽ هلائي، جتي sed ترتيب واري فائل ۾ پيراميٽر لائن کي غير تبصرو ڪري ٿو /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

انسٽال ڪرڻ ۽ ترتيب ڏيڻ JupyterLab ^

jupyter ليبارٽري هڪ Python ايپليڪيشن آهي، تنهنڪري اسان کي پهريان هن مترجم کي انسٽال ڪرڻ گهرجي. پڻ، jupyter ليبارٽري اسان Python پيڪيج مينيجر کي استعمال ڪندي انسٽال ڪنداسين pip، ۽ نه سسٽم هڪ، ڇاڪاڻ ته اهو ٿي سگهي ٿو سسٽم جي مخزن ۾ پراڻو ۽ ان ڪري، اسان کي دستي طور تي ان لاءِ انحصار کي حل ڪرڻو پوندو هيٺين پيڪيجز کي انسٽال ڪندي - python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

اچو ته پٿون ماڊلز ۽ پيڪيج مئنيجر کي اپڊيٽ ڪريون pip موجوده نسخي ڏانهن:

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

انسٽال ڪريو jupyter ليبارٽري پيڪيج مينيجر ذريعي pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

۾ واڌارو کان وٺي jupyter ليبارٽري تجرباتي آهن ۽ سرڪاري طور تي jupyterlab پيڪيج سان نه موڪليا ويا آهن، تنهنڪري اسان کي ان کي دستي طور تي انسٽال ۽ ترتيب ڏيڻو پوندو.

اچو ته انسٽال ڪريون NodeJS ۽ پيڪيج مئنيجر ان لاءِ - NPM، کان وٺي jupyter ليبارٽري ان جي توسيع لاءِ استعمال ڪري ٿو:

lxc exec jupyterlab -- apk add nodejs npm

وڌائڻ لاءِ jupyter ليبارٽري جيڪو اسان انسٽال ڪنداسين ڪم ڪيو، انهن کي صارف ڊاريڪٽري ۾ نصب ٿيڻ جي ضرورت آهي ڇو ته ايپليڪيشن صارف کان شروع ڪئي ويندي jupyter. مسئلو اهو آهي ته لانچ ڪمانڊ ۾ ڪو به پيٽرول نه آهي جيڪو ڊاريڪٽري ڏانهن منتقل ٿي سگهي ٿو؛ ايپليڪيشن صرف هڪ ماحول جي متغير کي قبول ڪري ٿو ۽ تنهنڪري اسان کي ان کي بيان ڪرڻ گهرجي. هن کي ڪرڻ لاء، اسين لکنداسين متغير برآمد حڪم JUPYTERLAB_DIR صارف جي ماحول ۾ jupyter، فائل ڏانهن .bashrcجنهن تي عمل ڪيو ويندو آهي هر وقت استعمال ڪندڙ لاگ ان:

lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"

ايندڙ حڪم ​​هڪ خاص توسيع انسٽال ڪندو - ايڪسٽينشن مينيجر ۾ jupyter ليبارٽري:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"

هاڻي هر شي پهرين لانچ لاء تيار آهي jupyter ليبارٽري، پر اسان اڃا تائين ڪجھ مفيد ملندڙن کي انسٽال ڪري سگھون ٿا:

  • toc - مواد جو جدول، ھڪڙي مضمون / نوٽ بڪ ۾ عنوانن جي ھڪڙي فهرست ٺاھي ٿو
  • jupyterlab-horizon-theme - UI موضوع
  • jupyterlab_neon_theme - UI موضوع
  • jupyterlab-ubu-theme - ٻيو ڪو ليکڪ کان موضوع هي آرٽيڪل :) پر هن صورت ۾، GitHub مخزن مان انسٽاليشن ڏيکاري ويندي

تنهن ڪري، انهن واڌارن کي انسٽال ڪرڻ لاءِ ترتيب وار هيٺيون حڪم هلايو:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyterlab/toc @mohirio/jupyterlab-horizon-theme @yeebc/jupyterlab_neon_theme"
lxc exec jupyterlab -- su -l jupyter -c "wget -c https://github.com/microcoder/jupyterlab-ubu-theme/archive/master.zip"
lxc exec jupyterlab -- su -l jupyter -c "unzip -q master.zip && rm master.zip"
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build jupyterlab-ubu-theme-master"
lxc exec jupyterlab -- su -l jupyter -c "rm -r jupyterlab-ubu-theme-master"

ايڪسٽينشن کي انسٽال ڪرڻ کان پوءِ، اسان کي انهن کي گڏ ڪرڻ گهرجي، ڇاڪاڻ ته اڳي ئي، انسٽاليشن دوران، اسان ڪيئي وضاحت ڪئي هئي. --no-build وقت بچائڻ لاءِ. ھاڻي اسان انھن کي ھڪڙي وقت ۾ گڏ ڪرڻ سان خاص طور تي تيز ڪنداسين:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"

ھاڻي ھيٺ ڏنل ٻن حڪمن کي ھلايو ان کي پھريون ڀيرو هلائڻ لاءِ jupyter ليبارٽري. ان کي هڪ ڪمانڊ سان لانچ ڪرڻ ممڪن هوندو، پر ان صورت ۾، لانچ ڪمانڊ، جيڪو توهان جي ذهن ۾ ياد رکڻ ڏکيو آهي، ان کي ڪنٽينر ۾ بش ذريعي ياد رکيو ويندو، نه ته ميزبان تي، جتي اڳ ۾ ئي ڪافي حڪم موجود آهن. ان کي تاريخ ۾ رڪارڊ ڪرڻ لاء :)

صارف جي طور تي ڪنٽينر ۾ لاگ ان ٿيو jupyter:

lxc exec jupyterlab -- su -l jupyter

اڳيون، ڊوڙڻ jupyter ليبارٽري ڪنجي ۽ پيٽرولن سان جيئن اشارو ڪيو ويو آهي:

[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser

توھان جي ويب برائوزر ۾ ايڊريس ڏانھن وڃو http://10.0.5.5:8888 ۽ صفحي تي جيڪو کلي ٿو داخل ڪريو ٽڪر رسائي جيڪا توهان ڪنسول ۾ ڏسندا. ان کي ڪاپي ۽ پيسٽ ڪريو صفحي تي، پوء ڪلڪ ڪريو لاگ ان. لاگ ان ٿيڻ کان پوءِ، کاٻي پاسي ايڪسٽينشن مينيو ڏانھن وڃو، جيئن ھيٺ ڏنل شڪل ۾ ڏيکاريل آھي، جتي توھان کي چيو ويندو، ايڪسٽينشن مئنيجر کي چالو ڪرڻ وقت، ٽئين پارٽين کان ايڪسٽينشن انسٽال ڪري حفاظتي خطرا کڻڻ لاءِ، جنھن لاءِ حڪم JupyterLab ترقي ذميوار نه آهي:

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

بهرحال، اسان سڄي کي الڳ ڪري رهيا آهيون jupyter ليبارٽري ۽ ان کي ڪنٽينر ۾ رکو ته جيئن ٽئين پارٽي جي ايڪسٽينشن جيڪي ضرورت ۽ استعمال ڪن ٿيون NodeJS گهٽ ۾ گهٽ ڊسڪ تي ڊيٽا چوري نه ڪري سگھن ٿيون سواءِ ان کان سواءِ جيڪي اسان ڪنٽينر اندر کوليون ٿا. حاصل ڪريو پنھنجي نجي دستاويزن ۾ ميزبان تي /home ڪنٽينر مان پروسيس ڪامياب ٿيڻ جو امڪان ناهي، ۽ جيڪڏهن اهي ڪندا، ته توهان کي ميزبان سسٽم تي فائلن تي استحقاق حاصل ڪرڻ جي ضرورت آهي، ڇو ته اسان ڪنٽينر کي هلائيندا آهيون. غير امتيازي موڊ. ھن معلومات جي بنياد تي، توھان اندازو لڳائي سگھوٿا شامل ڪرڻ جي خطري کي شامل ڪرڻ ۾ jupyter ليبارٽري.

ٺاهيل IPython نوٽ بڪ (صفحا ۾ jupyter ليبارٽري) ھاڻي ٺاھيو ويندو صارف جي گھر ڊاريڪٽري ۾ - /home/jupyter، پر اسان جا منصوبا ميزبان ۽ ڪنٽينر جي وچ ۾ ڊيٽا (شيئر) کي ورهائڻ وارا آهن، تنهنڪري ڪنسول ڏانهن واپس وڃو ۽ روڪيو jupyter ليبارٽري هاٽڪي کي هلائڻ سان - CTRL+C ۽ جواب ڏيڻ y درخواست تي. پوءِ استعمال ڪندڙ جي انٽرايڪٽو سيشن کي ختم ڪريو jupyter هڪ hotkey مڪمل ڪرڻ CTRL+D.

ميزبان سان ڊيٽا حصيداري ڪريو ^

ميزبان سان ڊيٽا کي حصيداري ڪرڻ لاء، توهان کي ڪنٽينر ۾ هڪ ڊوائيس ٺاهڻ جي ضرورت آهي جيڪا توهان کي ڪرڻ جي اجازت ڏئي ٿي ۽ اهو ڪرڻ لاء، هيٺ ڏنل حڪم کي هلائيندا آهيون جتي اسان هيٺ ڏنل ڪنجيون بيان ڪندا آهيون:

  • lxc config device add - حڪم ڊوائيس جي ترتيب کي شامل ڪري ٿو
  • jupyter - ڪنٽينر جي ID جنهن ۾ ترتيب شامل ڪئي وئي آهي
  • hostfs - ڊوائيس ID. توهان ڪنهن به نالو مقرر ڪري سگهو ٿا.
  • disk - ڊوائيس جو قسم ظاهر ڪيو ويو آهي
  • path - ڪنٽينر ۾ رستو بيان ڪري ٿو جنهن تي LXD هن ڊوائيس کي نصب ڪندو
  • source - ذريعو بيان ڪريو، ھوسٽ تي ڊاريڪٽري ڏانھن رستو جيڪو توھان چاھيو ٿا ڪنٽينر سان حصيداري ڪريو. توھان جي ترجيحن جي مطابق رستو بيان ڪريو
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

فهرست لاء /home/dv/projects/ipython-notebooks اجازت لازمي طور تي ڪنٽينر استعمال ڪندڙ کي مقرر ڪيو وڃي جنهن وٽ هن وقت UID برابر آهي SubUID + UID، باب ڏسو حفاظت. ڪنٽينر استحقاق مضمون ۾ LXD جون بنيادي خاصيتون - لينڪس ڪنٽينر سسٽم.

ميزبان تي اجازت مقرر ڪريو، جتي مالڪ ڪنٽينر استعمال ڪندڙ هوندو jupyter، ۽ متغير $USER توھان جي ميزبان صارف کي ھڪڙي گروپ طور بيان ڪندو:

sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks

هيلو، دنيا! ^

جيڪڏهن توهان وٽ اڃا تائين ڪنٽينر ۾ هڪ ڪنسول سيشن کليل آهي jupyter ليبارٽري، پوءِ ان کي نئين چاٻي سان ٻيهر شروع ڪريو --notebook-dir قدر مقرر ڪندي /mnt/hostfs جيئن ته ڊوائيس لاءِ ڪنٽينر ۾ ليپ ٽاپ جي روٽ ڏانهن رستو جيڪو اسان اڳئين قدم ۾ ٺاهيو آهي:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

پوء صفحي ڏانھن وڃو http://10.0.5.5:8888 ۽ هيٺ ڏنل تصوير ۾ ڏيکاريل صفحي تي بٽڻ تي ڪلڪ ڪري پنهنجو پهريون ليپ ٽاپ ٺاهيو:

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

پوء، صفحي تي فيلڊ ۾، پٿون ڪوڊ داخل ڪريو جيڪو کلاسک ڏيکاريندو Hello World!. جڏهن توهان داخل ٿيڻ مڪمل ڪيو، دٻايو CTRL+ENTER يا ٽول بار تي ”راند“ بٽڻ کي مٿي تي JupyterLab ڪرڻ لاءِ هي ڪريو:

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

هن نقطي تي، لڳ ڀڳ هر شيءِ استعمال لاءِ تيار آهي، پر اهو غير دلچسپ ٿيندو جيڪڏهن اسان اضافي پٿون ماڊلز (مڪمل ايپليڪيشنون) انسٽال نٿا ڪريون جيڪي پٿون جي معياري صلاحيتن کي خاص طور تي وڌائي سگهن ٿيون. jupyter ليبارٽريتنهن ڪري، اچو ته اڳتي وڌون :)

پي ايس دلچسپ ڳالهه اها آهي ته پراڻي عمل درآمد وِسپَٽُ ڪوڊ جي نالي هيٺ جوپيوٽ نوٽ بڪ پري نه ويو آهي ۽ اهو هڪجهڙائي ۾ موجود آهي jupyter ليبارٽري. پراڻي ورزن ۾ تبديل ڪرڻ لاءِ، ايڊريس ۾ لافڪس شامل ڪندي لنڪ جي پيروي ڪريو/tree، ۽ نئين ورجن ڏانهن منتقلي لافاني سان ڪئي وئي آهي /lab، پر ان کي بيان ڪرڻ جي ضرورت ناهي:

پٿون جي صلاحيتن کي وڌايو ^

هن حصي ۾، اسان اهڙي طاقتور پٿون ٻولي ماڊلز کي انسٽال ڪنداسين جيئن نياپي, پنڌ, matplotlib, IPyWidgets جنهن جا نتيجا ليپ ٽاپ ۾ ضم ٿي ويا آهن jupyter ليبارٽري.

پيڪيج مئنيجر ذريعي ڏنل پٿون ماڊلز کي انسٽال ڪرڻ کان اڳ pip اسان کي پهريون ڀيرو الپائن لينڪس ۾ سسٽم انحصار کي حل ڪرڻ گهرجي:

  • g++ - ماڊلز کي گڏ ڪرڻ جي ضرورت آهي، ڇاڪاڻ ته انهن مان ڪجهه ٻوليء ۾ لاڳو ڪيا ويا آهن C ++ ۽ رن ٽائم تي پٿون سان ڳنڍيو بائنري ماڊل طور
  • freetype-dev - پٿون ماڊل لاءِ انحصار matplotlib

انسٽاليشن انحصار:

lxc exec jupyterlab -- apk add g++ freetype-dev

ھڪڙو مسئلو آھي: الپائن لينڪس ڊويزن جي موجوده حالت ۾، NumPy جي نئين ورزن کي گڏ ڪرڻ ممڪن نه ٿيندو؛ ھڪڙي تاليف جي غلطي ظاهر ٿيندي جيڪا مان حل نه ڪري سگھيس:

غلطي: numpy لاءِ ويلز نه ٺاهي سگھيا جيڪي PEP 517 استعمال ڪن ٿا ۽ سڌو سنئون انسٽال نٿا ٿي سگھن

تنهن ڪري، اسان هن ماڊل کي هڪ سسٽم پيڪيج جي طور تي نصب ڪنداسين جيڪو اڳ ۾ ئي مرتب ڪيل ورزن کي ورهائي ٿو، پر ان کان ٿورو پراڻو جيڪو هن وقت سائيٽ تي موجود آهي:

lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev

اڳيون، انسٽال ڪريو پٿون ماڊلز ذريعي پيڪيج مئنيجر pip. مھرباني ڪري صبر ڪر جيئن ڪجھ ماڊل مرتب ٿيندا ۽ ڪجھ منٽ وٺي سگھن ٿا. منهنجي مشين تي، تاليف ~ 15 منٽ ورتو:

lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib

انسٽاليشن ڪيچ صاف ڪرڻ:

lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*

JupyterLab ۾ ٽيسٽنگ ماڊلز ^

جيڪڏهن توهان هلائي رهيا آهيو jupyter ليبارٽري، ان کي ٻيهر شروع ڪريو ته جيئن نوان نصب ٿيل ماڊل چالو ٿين. هن کي ڪرڻ لاء، ڪنسول سيشن ۾، ڪلڪ ڪريو CTRL+C جتي توهان ان کي هلائي رهيا آهيو ۽ داخل ڪريو y درخواست کي روڪڻ ۽ پوء ٻيهر شروع ڪرڻ لاء jupyter ليبارٽري ڪيبورڊ تي مٿي تير کي دٻائڻ سان جيئن بار بار حڪم داخل نه ٿئي Enter ان کي شروع ڪرڻ لاء:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

صفحي ڏانھن وو http://10.0.5.5:8888/lab يا پنهنجي برائوزر ۾ صفحي کي ريفريش ڪريو، ۽ پوءِ ھيٺ ڏنل ڪوڊ داخل ڪريو نئين نوٽ بڪ سيل ۾:

%matplotlib inline

from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0), b=(-3, 3, 0.5))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

توھان کي ھڪڙو نتيجو حاصل ڪرڻ گھرجي جيئن ھيٺ ڏنل تصوير ۾، جتي IPyWidgets صفحي تي ھڪڙو UI عنصر ٺاھي ٿو جيڪو انٽرايڪٽي طور تي ماخذ ڪوڊ سان، ۽ پڻ matplotlib ڪوڊ جو نتيجو ڏيکاري ٿو تصوير جي صورت ۾ فنڪشن گراف جي طور تي:

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

ڪيترائي مثال IPyWidgets توھان ان کي سبق ۾ ڳولي سگھو ٿا هتي

ٻيو ڇا؟ ^

چڱو ٿيو جيڪڏھن توھان رھيا ۽ مضمون جي آخر تائين پھچي. مون جان بوجھ ڪري آرٽيڪل جي آخر ۾ تيار ٿيل اسڪرپٽ پوسٽ نه ڪئي هئي جيڪا انسٽال ٿيندي jupyter ليبارٽري مزدورن جي حوصلا افزائي ڪرڻ لاءِ ”هڪ ڪلڪ“ ۾ :) پر توهان اهو پاڻ ڪري سگهو ٿا، ڇو ته توهان اڳ ۾ ئي ڄاڻو ٿا ته ڪيئن، حڪمن کي گڏ ڪري هڪ بش اسڪرپٽ ۾ :)

توھان پڻ ڪري سگھو ٿا:

  • IP پتي جي بدران ڪنٽينر لاءِ نيٽ ورڪ جو نالو سيٽ ڪريو ان کي سادي ۾ لکڻ سان /etc/hosts ۽ برائوزر ۾ ايڊريس ٽائپ ڪريو http://jupyter.local:8888
  • ڪنٽينر لاءِ وسيلن جي حد سان گڏ راند ڪريو، ان لاءِ باب ۾ پڙهو بنيادي LXD صلاحيتون يا LXD ڊولپر سائيٽ تي وڌيڪ معلومات حاصل ڪريو.
  • موضوع تبديل ڪريو:

Jupyter کي LXD مدار ۾ لانچ ڪرڻ

۽ گهڻو ڪجهه توهان ڪري سگهو ٿا! اهو ئي سڀ ڪجهه آهي. مان توهان کي ڪاميابي چاهيان ٿو!

اپڊيٽ ڪيو: 15.04.2020/18/30 XNUMX:XNUMX - باب ۾ غلطيون درست ڪيون ويون “هيلو، ورلڊ!”
اپڊيٽ ڪيو: 16.04.2020/10/00 XNUMX:XNUMX — ايڪسٽينشن مئنيجر چالو ڪرڻ جي وضاحت ۾ درست ۽ شامل ڪيل متن jupyter ليبارٽري
اپڊيٽ ڪيو: 16.04.2020/10/40 XNUMX:XNUMX — متن ۾ مليل غلطيون درست ڪيون ويون ۽ بهتر لاءِ ٿورو تبديل ڪيو ويو باب “بنيادي سافٽ ويئر انسٽال ڪرڻ ۽ سسٽم کي ترتيب ڏيڻ”

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

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