ڇا توهان ڪڏهن لينڪس ۾ ڪوڊ يا سسٽم يوٽيلٽيز سان تجربو ڪيو آهي بغير ڪنهن بنيادي سسٽم جي باري ۾ پريشان ٿيڻ ۽ ڪوڊ ۾ غلطي جي صورت ۾ هر شي کي ٽوڙي ڇڏيو جيڪو روٽ استحقاق سان هلڻو آهي؟
پر حقيقت جي باري ۾ ڇا چئو ته توهان کي هڪ مشين تي مختلف مائڪرو سروسز جي مڪمل ڪلستر کي جانچڻ يا هلائڻ جي ضرورت آهي؟ هڪ سئو يا هڪ هزار؟
هڪ هائپر ويزر پاران منظم ڪيل ورچوئل مشينن سان، اهڙا مسئلا حل ٿي سگهن ٿا ۽ ٿي ويندا، پر ڪهڙي قيمت تي؟ مثال طور، LXD ۾ هڪ ڪنٽينر صرف الپائن لينڪس جي تقسيم تي ٻڌل آهي 7.60MB
رام، ۽ جتي روٽ ورهاڱي شروع ٿيڻ کان پوء قبضو ڪري ٿو 9.5MB
! توهان اهو ڪيئن پسند ڪيو، ايلون مسڪ؟ مان چيڪ ڪرڻ جي صلاح ڏيان ٿو LXD جي بنيادي صلاحيتون - لينڪس ۾ هڪ ڪنٽينر سسٽم
ان کان پوءِ عام طور تي واضح ٿي ويو ته LXD ڪنٽينر ڇا آهن، اچو ته اڳتي وڃو ۽ سوچيو، ڇا هجي ها جيڪڏهن ڪو اهڙو هارويسٽر پليٽ فارم هجي جتي توهان ميزبان لاءِ محفوظ طريقي سان ڪوڊ هلائي سگهو ٿا، گراف ٺاهي سگهو ٿا، متحرڪ (انٽرايڪٽو) لنڪ UI- ويجيٽس توهان جي ڪوڊ سان، ڪوڊ کي بليڪ جيڪ سان ٽيڪسٽ سان گڏ ڪريو... فارميٽنگ؟ ڪجهه قسم جو انٽرويو بلاگ؟ واهه... مان چاهيان ٿو! چاهيو! 🙂
ٻلي جي هيٺان ڏسو جتي اسان هڪ ڪنٽينر ۾ لانچ ڪنداسين jupyter ليبارٽري - ايندڙ نسل جي يوزر انٽرفيس جي بدران پراڻي Jupyter نوٽ بڪ، ۽ اسان پڻ Python ماڊلز کي انسٽال ڪنداسين جهڙوڪ نياپي, پنڌ, matplotlib, IPyWidgets جيڪو توهان کي اجازت ڏيندو ته مٿي ڏنل سڀ ڪم ڪرڻ ۽ اهو سڀ ڪجهه خاص فائل ۾ محفوظ ڪريو - هڪ IPython ليپ ٽاپ.
چريو
- آربيٽل ٽيڪ آف پلان
- انسٽاليشن ۽ بنيادي نظام جي تشڪيل
- بنيادي سافٽ ويئر انسٽال ڪرڻ ۽ سسٽم کي ترتيب ڏيڻ
- انسٽال ڪرڻ ۽ ترتيب ڏيڻ JupyterLab
- ميزبان سان ڊيٽا حصيداري ڪريو
- هيلو، دنيا!
- پٿون جي صلاحيتن کي وڌايو
- JupyterLab ۾ ٽيسٽنگ ماڊلز
- ٻيو ڇا؟
آربيٽل ٽيڪ آف پلان ^
اچو ته هڪ مختصر ايڪشن پلان جو خاڪو ڏيون ته جيئن اسان لاءِ مٿي ڏنل اسڪيم تي عمل ڪرڻ آسان بڻائي سگهجي:
- اچو ته ورهائڻ واري کٽ جي بنياد تي هڪ ڪنٽينر کي انسٽال ۽ لانچ ڪريون الپائن لينڪس. اسان هن تقسيم کي استعمال ڪنداسين ڇاڪاڻ ته اهو مقصد آهي 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 ليبارٽري ۽ ان کي ڪنٽينر ۾ رکو ته جيئن ٽئين پارٽي جي ايڪسٽينشن جيڪي ضرورت ۽ استعمال ڪن ٿيون 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 ۽ هيٺ ڏنل تصوير ۾ ڏيکاريل صفحي تي بٽڻ تي ڪلڪ ڪري پنهنجو پهريون ليپ ٽاپ ٺاهيو:
پوء، صفحي تي فيلڊ ۾، پٿون ڪوڊ داخل ڪريو جيڪو کلاسک ڏيکاريندو Hello World!
. جڏهن توهان داخل ٿيڻ مڪمل ڪيو، دٻايو CTRL+ENTER
يا ٽول بار تي ”راند“ بٽڻ کي مٿي تي JupyterLab ڪرڻ لاءِ هي ڪريو:
هن نقطي تي، لڳ ڀڳ هر شيءِ استعمال لاءِ تيار آهي، پر اهو غير دلچسپ ٿيندو جيڪڏهن اسان اضافي پٿون ماڊلز (مڪمل ايپليڪيشنون) انسٽال نٿا ڪريون جيڪي پٿون جي معياري صلاحيتن کي خاص طور تي وڌائي سگهن ٿيون. jupyter ليبارٽريتنهن ڪري، اچو ته اڳتي وڌون :)
پي ايس دلچسپ ڳالهه اها آهي ته پراڻي عمل درآمد وِسپَٽُ ڪوڊ جي نالي هيٺ جوپيوٽ نوٽ بڪ پري نه ويو آهي ۽ اهو هڪجهڙائي ۾ موجود آهي jupyter ليبارٽري. پراڻي ورزن ۾ تبديل ڪرڻ لاءِ، ايڊريس ۾ لافڪس شامل ڪندي لنڪ جي پيروي ڪريو/tree
، ۽ نئين ورجن ڏانهن منتقلي لافاني سان ڪئي وئي آهي /lab
، پر ان کي بيان ڪرڻ جي ضرورت ناهي:
- Jupyter نوٽ بڪ - http://10.0.5.5:8888/tree
- Jupyter ليب - http://10.0.5.5:8888/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 ڪوڊ جو نتيجو ڏيکاري ٿو تصوير جي صورت ۾ فنڪشن گراف جي طور تي:
ڪيترائي مثال IPyWidgets توھان ان کي سبق ۾ ڳولي سگھو ٿا هتي
ٻيو ڇا؟ ^
چڱو ٿيو جيڪڏھن توھان رھيا ۽ مضمون جي آخر تائين پھچي. مون جان بوجھ ڪري آرٽيڪل جي آخر ۾ تيار ٿيل اسڪرپٽ پوسٽ نه ڪئي هئي جيڪا انسٽال ٿيندي jupyter ليبارٽري مزدورن جي حوصلا افزائي ڪرڻ لاءِ ”هڪ ڪلڪ“ ۾ :) پر توهان اهو پاڻ ڪري سگهو ٿا، ڇو ته توهان اڳ ۾ ئي ڄاڻو ٿا ته ڪيئن، حڪمن کي گڏ ڪري هڪ بش اسڪرپٽ ۾ :)
توھان پڻ ڪري سگھو ٿا:
- IP پتي جي بدران ڪنٽينر لاءِ نيٽ ورڪ جو نالو سيٽ ڪريو ان کي سادي ۾ لکڻ سان
/etc/hosts
۽ برائوزر ۾ ايڊريس ٽائپ ڪريو http://jupyter.local:8888 - ڪنٽينر لاءِ وسيلن جي حد سان گڏ راند ڪريو، ان لاءِ باب ۾ پڙهو بنيادي LXD صلاحيتون يا 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