د LXD مدار ته جوپېټر لانچ کول

ایا تاسو کله هم په لینکس کې د کوډ یا سیسټم اسانتیاو تجربه کړې وي ترڅو د بیس سیسټم په اړه اندیښنه ونلري او په کوډ کې د غلطۍ په صورت کې هرڅه له مینځه ویسي چې باید د روټ امتیازاتو سره پرمخ ولاړ شي؟

مګر د دې حقیقت په اړه څه چې راځئ ووایو چې تاسو اړتیا لرئ په یو ماشین کې د مختلف مایکرو خدماتو بشپړ کلستر ازموینه یا چل کړئ؟ سل یا حتی زره؟

د هایپروایزر لخوا اداره شوي مجازی ماشینونو سره ، دا ډول ستونزې حل کیدی شي ، مګر په کوم لګښت؟ د مثال په توګه، په LXD کې یو کانټینر د الپین لینکس ویش پر بنسټ یوازې مصرفوي 7.60MB RAM، او چیرې چې د ریښې برخه د پیل څخه وروسته نیول کیږي 9.5MB! تاسو دا څنګه خوښوی، ایلون مسک؟ زه د چک کولو وړاندیز کوم د LXD اساسي وړتیاوې - په لینکس کې د کانټینر سیسټم

وروسته له دې چې دا په عمومي ډول روښانه شوه چې LXD کانټینرونه څه دي، راځئ چې نور لاړ شو او فکر وکړو، که چیرې داسې د راټولولو پلیټ فارم شتون ولري چیرې چې تاسو کولی شئ په خوندي ډول د کوربه لپاره کوډ چلولی شئ، ګرافونه تولید کړئ، په متحرک ډول (متقابل عمل) لینک UI- ویجټونه ستاسو د کوډ سره، کوډ د متن سره د بلیک جیک ... فارمیټینګ سره ضمیمه کړئ؟ یو ډول متقابل بلاګ؟ واو... زه یې غواړم! غواړې! 🙂

د پیشو لاندې وګورئ چیرې چې موږ به په کانټینر کې پیل کړو jupyter لابراتوار - د زاړه جوپېټر نوټ بوک پرځای د کارونکي انٹرفیس راتلونکی نسل ، او موږ به د Python ماډلونه هم نصب کړو لکه بې حسه, پانډا, matplotlib, IPyWidgets کوم چې تاسو ته اجازه درکوي چې پورته لیست شوي هرڅه ترسره کړئ او دا ټول په ځانګړي فایل کې خوندي کړئ - یو IPython لپ ټاپ.

د LXD مدار ته جوپېټر لانچ کول

د اوربیټل ټیک آف پلان ^

د LXD مدار ته جوپېټر لانچ کول

راځئ چې یو لنډ کاري پلان په ګوته کړو چې زموږ لپاره د پورته سکیم پلي کول اسانه کړي:

  • راځئ چې د توزیع کټ پراساس یو کانټینر نصب او پیل کړو الپائن لینوکس. موږ به دا توزیع وکاروو ځکه چې دا د لږترلږه کولو هدف دی او په دې کې به یوازې خورا اړین سافټویر نصب کړي، هیڅ شی نه.
  • راځئ چې په کانټینر کې یو اضافي مجازی ډیسک اضافه کړو او نوم یې ورکړو - hostfs او د روټ فایل سیسټم ته یې نصب کړئ. دا ډیسک به دا ممکنه کړي چې په کوربه کې د کانټینر دننه د ورکړل شوي لارښود څخه فایلونه وکاروي. په دې توګه، زموږ معلومات به د کانټینر څخه خپلواک وي. که کانټینر حذف شي، معلومات به په کوربه کې پاتې شي. همچنان ، دا سکیم د کانټینر توزیع معیاري شبکې میکانیزمونو کارولو پرته د ډیری کانټینرونو ترمینځ ورته ډیټا شریکولو لپاره ګټور دی.
  • راځئ چې باش، سوډو، اړین کتابتونونه نصب کړو، د سیسټم کاروونکي اضافه او تنظیم کړو
  • راځئ چې 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 ډیسک کې د کانټینرونو سره تجربه وکړم ، د SSD ډیسک سرچینې خوندي کړم ، کوم چې زما په سیسټم کې هم شتون لري 🙂 د کوم لپاره چې ما د ترتیب کولو جلا پروفایل رامینځته کړی 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      |
+------------+---------+------------------+--------------+

د بنسټیز سافټویر نصب کول او د سیسټم تنظیم کول ^

زموږ د کانټینر اداره کولو لپاره، تاسو اړتیا لرئ لاندې سافټویر نصب کړئ:

هګ
Description

بش
د GNU بورن بیا شیل

bash - بشپړول
د باش شیل لپاره د پروګرام وړ بشپړول

سوډو
ځینې ​​کاروونکو ته د روټ په توګه د ځینې کمانډونو چلولو وړتیا ورکړئ

نومول
د سیوري فایلونو او PAM لپاره ملاتړ سره د پټنوم او حساب مدیریت وسیلې سویټ

tzdata
د وخت زون او د ورځې د ر lightا خوندي کولو وخت ډیټا لپاره سرچینې

نانو
د پیکو مدیر کلون د پرمختګونو سره

برسیره پردې، تاسو کولی شئ د لاندې کڅوړو په نصبولو سره د سیسټم مین پاڼې کې ملاتړ نصب کړئ - 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

د دې لپاره چې په کانټینر کې د نوي کاروونکو لپاره د باش په ترتیب کولو کې ډیر وخت ونه لګوئ ، په لاندې مرحلو کې به موږ د کوربه سیسټم څخه چمتو شوي سکیل فایلونه دې ته کاپي کړو. دا به تاسو ته اجازه درکړي چې په متقابل ډول په کانټینر کې باش ښکلی کړئ. زما کوربه سیسټم مانجارو لینکس دی او فایلونه کاپي کیږي /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors په اصولو کې دوی د الپین لینکس لپاره مناسب دي او جدي ستونزې نه رامینځته کوي ، مګر تاسو ممکن مختلف توزیع ولرئ او تاسو اړتیا لرئ په خپلواکه توګه معلومه کړئ چې ایا په کانټینر کې د بش چلولو پرمهال کومه تېروتنه شتون لري.

د سکیل فایلونه کانټینر ته کاپي کړئ. کلید --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 په باش کې کاروونکي:

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 لابراتوار تجربه لرونکي دي او په رسمي ډول د جوپټرلاب کڅوړې سره ندي لیږل شوي ، نو موږ باید دا په لاسي ډول نصب او تنظیم کړو.

راځئ چې د دې لپاره 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 او په هغه پاڼه کې چې خلاصیږي enter نښه لاسرسی چې تاسو به په کنسول کې وګورئ. په پاڼه کې یې کاپي او پیسټ کړئ، بیا کلیک وکړئ د ننه کیدل. د ننوتلو وروسته، په ښي خوا کې د توسیع مینو ته لاړ شئ، لکه څنګه چې په لاندې انځور کې ښودل شوي، چیرې چې تاسو ته به د تمدید مدیر فعالولو په وخت کې هڅول کیږي، د دریمې ډلې څخه د تمدیدونو نصبولو سره امنیتي خطرونه واخلئ کوم چې قومانده. د JupyterLab پراختیا مسؤل نه دی:

د LXD مدار ته جوپېټر لانچ کول

په هرصورت، موږ ټول جلا کوو jupyter لابراتوار او دا په یو کانټینر کې ځای په ځای کړئ ترڅو د دریمې ډلې توسیعونه چې NodeJS ته اړتیا لري او کاروي لږترلږه نشي کولی په ډیسک کې ډیټا غلا کړي پرته لدې چې موږ په کانټینر کې خلاص کړو. په کوربه کې خپل شخصي اسناد ترلاسه کړئ /home د کانټینر څخه پروسې د بریا امکان نلري ، او که دوی وکړي ، نو تاسو اړتیا لرئ په کوربه سیسټم کې فایلونو کې امتیازات ولرئ ، ځکه چې موږ کانټینر په کې چلوو. بې امتیازه حالت. د دې معلوماتو پراساس، تاسو کولی شئ په کې د توسیعونو په شمول د خطر ارزونه وکړئ jupyter لابراتوار.

د IPython نوټ بوکونه جوړ کړل (په jupyter لابراتوار) اوس به د کارونکي کور لارښود کې رامینځته شي - /home/jupyter، مګر زموږ پلانونه د کوربه او کانټینر ترمینځ ډیټا (شریک) ویشل دي ، نو کنسول ته بیرته راشئ او ودریږئ jupyter لابراتوار د هاټکی په اجرا کولو سره - CTRL+C او ځواب ورکول y په غوښتنه. بیا د کارونکي متقابل ناسته پای ته ورسوي jupyter د هټکی بشپړول 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 او په پاڼه کې د تڼۍ په کلیک کولو سره خپل لومړی لپ ټاپ جوړ کړئ لکه څنګه چې په لاندې انځور کې ښودل شوي:

د LXD مدار ته جوپېټر لانچ کول

بیا، د پاڼې په ساحه کې، د Python کوډ داخل کړئ چې کلاسیک به ښکاره کړي Hello World!. کله چې تاسو ننوتل پای ته ورسوئ، فشار ورکړئ CTRL+ENTER یا د "لوبې" تڼۍ په سر کې د وسیلې بار کې د JupyterLab لپاره دا کار وکړئ:

د LXD مدار ته جوپېټر لانچ کول

پدې مرحله کې ، نږدې هرڅه د کارونې لپاره چمتو دي ، مګر دا به په زړه پوري نه وي که موږ د Python اضافي ماډلونه (بشپړ غوښتنلیکونه) نصب نه کړو چې کولی شي د پایتون معیاري وړتیاوې د پام وړ پراخه کړي. jupyter لابراتوارنو، راځئ چې پرمخ لاړ شو :)

PS په زړه پورې خبره دا ده چې زاړه تطبیق جوپایټر د کوډ نوم لاندې د Jupyter نوټ بوک له منځه تللی نه دی او دا سره موازي شتون لري jupyter لابراتوار. پخوانۍ نسخې ته د بدلولو لپاره، په پته کې د ضمیمه اضافه کولو لینک تعقیب کړئ/tree، او نوې نسخې ته لیږد د ضمیمې سره ترسره کیږي /lab، مګر دا باید مشخص نه شي:

د Python وړتیاوې پراخول ^

پدې برخه کې، موږ به د پیتون ژبې داسې پیاوړي ماډلونه نصب کړو لکه بې حسه, پانډا, matplotlib, IPyWidgets د کومې پایلې چې په لپټاپونو کې مدغم شوي jupyter لابراتوار.

د بسته بندۍ مدیر له لارې د لیست شوي پایتون ماډلونو نصبولو دمخه pip موږ باید لومړی په الپین لینکس کې د سیسټم انحصار حل کړو:

  • g++ - د ماډلونو د راټولولو لپاره اړین دی، ځکه چې ځینې یې په ژبه کې پلي کیږي C ++ او د بائنری ماډلونو په توګه د چلولو په وخت کې له Python سره وصل شئ
  • freetype-dev - د Python ماډل لپاره انحصار 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 د کوډ پایله د عکس په شکل کې د فنکشن ګراف په توګه ښیې:

د LXD مدار ته جوپېټر لانچ کول

ډیری مثالونه IPyWidgets تاسو کولی شئ دا په ټیوټوریلونو کې ومومئ دلته

نور څه؟ ^

ښه شوی که تاسو پاتې شئ او د مقالې پای ته ورسیږئ. ما په قصدي ډول د مقالې په پای کې یو چمتو شوی سکریپټ پوسټ نه کړ چې نصب به یې کړي jupyter لابراتوار د کارګرانو هڅولو لپاره په "یو کلیک" کې :) مګر تاسو دا پخپله کولی شئ ، ځکه چې تاسو دمخه پوهیږئ چې څنګه ، په یو واحد بش سکریپټ کې کمانډونه راټول کړي :)

تاسو هم کولی شئ:

  • د IP پتې پرځای د کانټینر لپاره د شبکې نوم په ساده لیکلو سره تنظیم کړئ /etc/hosts او په براوزر کې پته ولیکئ http://jupyter.local:8888
  • د کانټینر لپاره د سرچینې حد سره لوبې وکړئ، د دې لپاره په دې برخه کې ولولئ د LXD اساسي وړتیاوې یا د 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

Add a comment