Jupyter کو LXD مدار میں لانچ کرنا

کیا آپ کو کبھی لینکس میں کوڈ یا سسٹم یوٹیلیٹیز کے ساتھ تجربہ کرنا پڑا ہے تاکہ بیس سسٹم کے بارے میں فکر نہ کریں اور کوڈ میں خرابی کی صورت میں ہر چیز کو پھاڑ نہ دیں جسے روٹ مراعات کے ساتھ چلنا چاہئے؟

لیکن اس حقیقت کے بارے میں کیا خیال ہے کہ آپ کو ایک مشین پر مختلف مائیکرو سروسز کے پورے کلسٹر کو جانچنے یا چلانے کی ضرورت ہے؟ ایک سو یا ہزار بھی؟

ہائپر وائزر کے زیر انتظام ورچوئل مشینوں سے، اس طرح کے مسائل حل ہوسکتے ہیں اور ہوں گے، لیکن کس قیمت پر؟ مثال کے طور پر، الپائن لینکس کی تقسیم پر مبنی LXD میں ایک کنٹینر صرف استعمال کرتا ہے۔ 7.60MB RAM، اور جہاں روٹ پارٹیشن شروع ہونے کے بعد قابض ہے۔ 9.5MB! آپ کو یہ کیسا لگتا ہے، ایلون مسک؟ میں چیک آؤٹ کرنے کا مشورہ دیتا ہوں۔ LXD کی بنیادی صلاحیتیں - لینکس میں ایک کنٹینر سسٹم

عام طور پر یہ واضح ہو جانے کے بعد کہ LXD کنٹینرز کیا ہیں، آئیے مزید آگے بڑھیں اور سوچیں، اگر ایسا کوئی ہارویسٹر پلیٹ فارم ہوتا جہاں آپ میزبان کے لیے محفوظ طریقے سے کوڈ چلا سکتے، گراف تیار کر سکتے، متحرک طور پر (انٹرایکٹو) UI- وجیٹس کو اپنے کوڈ کے ساتھ لنک کر سکتے ہیں، بلیک جیک... فارمیٹنگ کے ساتھ متن کے ساتھ کوڈ کی تکمیل کریں؟ کسی قسم کا انٹرایکٹو بلاگ؟ واہ... میں یہ چاہتا ہوں! چاہتے ہیں! 🙂

بلی کے نیچے دیکھو جہاں ہم کنٹینر میں لانچ کریں گے۔ jupyter لیب - فرسودہ Jupyter نوٹ بک کے بجائے اگلی نسل کا صارف انٹرفیس، اور ہم Python ماڈیول بھی انسٹال کریں گے جیسے بے حس, پانڈاس, میٹپلوٹلیب, 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

یہ مجھے ایچ ڈی ڈی ڈسک پر کنٹینرز کے ساتھ تجربہ کرنے کا موقع فراہم کرتا ہے، ایس ایس ڈی ڈسک کے وسائل کو بچاتا ہے، جو میرے سسٹم میں بھی دستیاب ہے 🙂 جس کے لیے میں نے ایک علیحدہ کنفیگریشن پروفائل بنایا ہے۔ 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      |
+------------+---------+-------------------+--------------+

کنٹینر بناتے وقت، آئی پی ایڈریس کا انتخاب تصادفی طور پر کیا گیا تھا، کیونکہ ہم نے کنفیگریشن پروفائل استعمال کیا تھا۔ 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      |
+------------+---------+------------------+--------------+

بنیادی سافٹ ویئر انسٹال کرنا اور سسٹم کو ترتیب دینا ^

ہمارے کنٹینر کا انتظام کرنے کے لیے، آپ کو درج ذیل سافٹ ویئر انسٹال کرنے کی ضرورت ہے:

پیکج
Description

مار
GNU بورن اگین شیل

bash - تکمیل
باش شیل کے لیے قابل پروگرام تکمیل

سودو
کچھ صارفین کو کچھ کمانڈز کو روٹ کے طور پر چلانے کی صلاحیت دیں۔

کی چھایا
شیڈو فائلوں اور PAM کے لیے سپورٹ کے ساتھ پاس ورڈ اور اکاؤنٹ مینجمنٹ ٹول سویٹ

tzdata
ٹائم زون اور ڈے لائٹ سیونگ ٹائم ڈیٹا کے ذرائع

نینو
پیکو ایڈیٹر کلون اضافہ کے ساتھ

مزید برآں، آپ مندرجہ ذیل پیکیجز کو انسٹال کر کے سسٹم مین پیجز میں سپورٹ انسٹال کر سکتے ہیں۔ man man-pages mdocml-apropos less

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

آئیے ان کمانڈز اور کیز کو دیکھتے ہیں جو ہم نے استعمال کیے ہیں:

  • lxc - LXD کلائنٹ کو کال کریں۔
  • exec - LXD کلائنٹ کا طریقہ جو کنٹینر میں کمانڈ چلاتا ہے۔
  • jupyterlab - کنٹینر ID
  • -- - ایک خاص کلید جو وضاحت کرتی ہے کہ مزید کلیدوں کو کلیدوں کے طور پر نہ سمجھا جائے۔ 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

کنٹینر میں نئے صارفین کے لیے Bash کو ترتیب دینے میں زیادہ وقت ضائع نہ کرنے کے لیے، درج ذیل مراحل میں ہم میزبان سسٹم سے تیار شدہ سکیل فائلوں کو اس میں کاپی کریں گے۔ یہ آپ کو ایک کنٹینر میں باش کو انٹرایکٹو طور پر خوبصورت بنانے کی اجازت دے گا۔ میرا میزبان سسٹم منجارو لینکس ہے اور فائلیں کاپی کی جا رہی ہیں۔ /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

آئیے python ماڈیولز اور پیکیج مینیجر کو اپ ڈیٹ کریں۔ pip موجودہ ورژن میں:

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

انسٹال کریں۔ jupyter لیب پیکیج مینیجر کے ذریعے pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

چونکہ میں ایکسٹینشنز ہیں۔ jupyter لیب تجرباتی ہیں اور سرکاری طور پر jupyterlab پیکیج کے ساتھ نہیں بھیجے گئے ہیں، لہذا ہمیں اسے دستی طور پر انسٹال اور کنفیگر کرنا ہوگا۔

آئیے اس کے لیے نوڈ جے ایس اور پیکیج مینیجر انسٹال کریں - 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 لیب. اسے ایک کمانڈ سے لانچ کرنا ممکن ہوگا، لیکن اس صورت میں لانچ کمانڈ، جسے آپ کے ذہن میں یاد رکھنا مشکل ہے، کنٹینر میں bash کے ذریعے یاد رکھا جائے گا، نہ کہ میزبان پر، جہاں پہلے سے کافی کمانڈ موجود ہیں۔ انہیں تاریخ میں درج کرنے کے لیے :)

کنٹینر میں بطور صارف لاگ ان کریں۔ 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 اور جو صفحہ کھلتا ہے اس پر enter کریں۔ ٹوکن رسائی جو آپ کنسول میں دیکھیں گے۔ اسے کاپی کرکے صفحہ پر چسپاں کریں، پھر کلک کریں۔ لاگ ان. لاگ ان کرنے کے بعد، بائیں جانب ایکسٹینشن مینو پر جائیں، جیسا کہ نیچے دی گئی تصویر میں دکھایا گیا ہے، جہاں آپ کو ایکسٹینشن مینیجر کو چالو کرتے وقت، تھرڈ پارٹیز سے ایکسٹینشنز انسٹال کرکے سیکیورٹی رسک لینے کے لیے کہا جائے گا جس کے لیے کمانڈ JupyterLab کی ترقی ذمہ دار نہیں ہے:

Jupyter کو LXD مدار میں لانچ کرنا

تاہم، ہم پورے کو الگ تھلگ کر دیتے ہیں۔ jupyter لیب اور اسے کنٹینر میں رکھیں تاکہ تھرڈ پارٹی ایکسٹینشنز جن کو NodeJS کی ضرورت ہوتی ہے اور استعمال کرتے ہیں وہ کم از کم ڈسک کا ڈیٹا چوری نہیں کر سکتے ان کے علاوہ جسے ہم کنٹینر کے اندر کھولتے ہیں۔ میں میزبان پر اپنی نجی دستاویزات حاصل کریں۔ /home کنٹینر سے ہونے والے عمل کے کامیاب ہونے کا امکان نہیں ہے، اور اگر وہ ایسا کرتے ہیں، تو آپ کو میزبان سسٹم پر فائلوں پر مراعات حاصل کرنے کی ضرورت ہے، کیونکہ ہم کنٹینر کو اس میں چلاتے ہیں۔ غیر مراعات یافتہ موڈ. اس معلومات کی بنیاد پر، آپ ایکسٹینشنز کو شامل کرنے کے خطرے کا اندازہ لگا سکتے ہیں۔ jupyter لیب.

IPython نوٹ بک بنائی گئی (صفحات jupyter لیب) اب صارف کی ہوم ڈائرکٹری میں بنایا جائے گا - /home/jupyter، لیکن ہمارے منصوبے میزبان اور کنٹینر کے درمیان ڈیٹا (شیئر) کو تقسیم کرنے کے ہیں، لہذا کنسول پر واپس جائیں اور رک جائیں jupyter لیب ہاٹکی کو چلا کر - CTRL+C اور جواب دینا y درخواست پر. پھر صارف کا انٹرایکٹو سیشن ختم کریں۔ jupyter ہاٹکی کو مکمل کرنا CTRL+D.

میزبان کے ساتھ ڈیٹا کا اشتراک کرنا ^

میزبان کے ساتھ ڈیٹا کا اشتراک کرنے کے لیے، آپ کو کنٹینر میں ایک ایسا آلہ بنانا ہوگا جو آپ کو ایسا کرنے کی اجازت دے اور ایسا کرنے کے لیے، درج ذیل کمانڈ کو چلائیں جہاں ہم درج ذیل کلیدیں بتاتے ہیں:

  • lxc config device add - کمانڈ ڈیوائس کنفیگریشن کو شامل کرتی ہے۔
  • jupyter - کنٹینر کی ID جس میں کنفیگریشن شامل کی گئی ہے۔
  • hostfs - ڈیوائس کی شناخت۔ آپ کوئی بھی نام ترتیب دے سکتے ہیں۔
  • 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 مدار میں لانچ کرنا

پھر، صفحہ پر موجود فیلڈ میں، Python کوڈ درج کریں جو کلاسک کو ظاہر کرے گا۔ Hello World!. جب آپ داخل کرنا مکمل کر لیں تو دبائیں۔ CTRL+ENTER یا JupyterLab کو یہ کرنے کے لیے اوپر ٹول بار پر "پلے" بٹن:

Jupyter کو LXD مدار میں لانچ کرنا

اس مقام پر، تقریباً ہر چیز استعمال کے لیے تیار ہے، لیکن اگر ہم اضافی Python ماڈیولز (مکمل ایپلی کیشنز) انسٹال نہیں کرتے ہیں تو یہ غیر دلچسپی کا باعث ہوگا جو کہ Python کی معیاری صلاحیتوں کو نمایاں طور پر بڑھا سکتے ہیں۔ jupyter لیبلہذا، چلو آگے بڑھتے ہیں :)

PS دلچسپ بات یہ ہے کہ پرانا عمل درآمد مشتری کوڈ نام کے تحت Jupyter نوٹ بک دور نہیں ہوا ہے اور یہ اس کے متوازی طور پر موجود ہے۔ jupyter لیب. پرانے ورژن پر جانے کے لیے، ایڈریس میں لاحقہ شامل کرنے والے لنک پر عمل کریں۔/tree، اور نئے ورژن میں منتقلی لاحقہ کے ساتھ کی جاتی ہے۔ /lab، لیکن اس کی وضاحت کرنے کی ضرورت نہیں ہے:

ازگر کی صلاحیتوں کو بڑھانا ^

اس سیکشن میں، ہم ایسے طاقتور Python لینگویج ماڈیولز انسٹال کریں گے۔ بے حس, پانڈاس, میٹپلوٹلیب, IPyWidgets جس کے نتائج لیپ ٹاپ میں ضم ہوتے ہیں۔ jupyter لیب.

پیکیج مینیجر کے ذریعے درج Python ماڈیولز کو انسٹال کرنے سے پہلے pip ہمیں سب سے پہلے الپائن لینکس میں سسٹم کی انحصار کو حل کرنا ہوگا:

  • g++ - ماڈیولز کو مرتب کرنے کی ضرورت ہے، کیونکہ ان میں سے کچھ زبان میں لاگو ہوتے ہیں۔ C ++ اور بائنری ماڈیولز کے طور پر رن ​​ٹائم پر ازگر سے جڑیں۔
  • freetype-dev - ازگر ماڈیول کے لیے انحصار میٹپلوٹلیب

انحصار انسٹال کرنا:

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

ایک مسئلہ ہے: الپائن لینکس کی تقسیم کی موجودہ حالت میں، NumPy کے نئے ورژن کو مرتب کرنا ممکن نہیں ہوگا؛ ایک تالیف کی خرابی ظاہر ہوگی جسے میں حل نہیں کر سکا:

ERROR: نمپی کے لیے پہیے نہیں بنائے جا سکے جو 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 عنصر تیار کرتا ہے جو ماخذ کوڈ کے ساتھ باہمی تعامل کرتا ہے، اور یہ بھی میٹپلوٹلیب کوڈ کا نتیجہ تصویر کی شکل میں فنکشن گراف کے طور پر دکھاتا ہے:

Jupyter کو LXD مدار میں لانچ کرنا

بہت سی مثالیں۔ IPyWidgets آپ اسے سبق میں تلاش کر سکتے ہیں۔ یہاں

اور کیا؟ ^

اچھا ہوا اگر آپ ٹھہرے رہے اور مضمون کے بالکل آخر تک پہنچے۔ میں نے جان بوجھ کر آرٹیکل کے آخر میں کوئی ریڈی میڈ اسکرپٹ پوسٹ نہیں کیا جو انسٹال ہو جائے گا۔ jupyter لیب کارکنوں کی حوصلہ افزائی کے لیے "ایک کلک" میں :) لیکن آپ یہ خود کر سکتے ہیں، کیونکہ آپ پہلے سے ہی جانتے ہیں کہ کس طرح کمانڈز کو ایک ہی باش اسکرپٹ میں جمع کرنے کے بعد :)

آپ بھی:

  • آئی پی ایڈریس کے بجائے کنٹینر کے لیے نیٹ ورک کا نام سادہ میں لکھ کر سیٹ کریں۔ /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

نیا تبصرہ شامل کریں