A keni eksperementuar ndonjëherë me kodin ose utilitat sistemike në Linux, në mënyrë që të mos shqetësoheni për sistemin bazë dhe të mos fshini gjithçka në rast të një gabimi në kodin që duhet të ekzekutohet me privilegje root?
ĂfarĂ« ndodh nĂ«se Ă«shtĂ« e nevojshme tĂ« testi ose tĂ« filloni njĂ« klaster tĂ« tĂ«rĂ« tĂ« mikrosherbimeve nĂ« njĂ« makinĂ«? NjĂ«qind ose madje njĂ« mijĂ«?
Me makinat virtuale tĂ« menaxhuara nga hipervizori, ndoshta mund t'u zgjidhni kĂ«to probleme, por me çfarĂ« çmimi? PĂ«r shembull, njĂ« kontejner nĂ« LXD, bazuar nĂ« distribucionin Alpine Linux, minimalisht konsumon vetĂ«m 7.60MB RAM, dhe ku pasta e rrugĂ«s themelore pas nisjes zĂ« 9.5MB! Si tĂ« duket kjo, Elon Musk? Rekomandoj tĂ« shqyrtoni mundĂ«sitĂ« bazike tĂ« LXD â sistemin e kontejnerĂ«ve nĂ« Linux
Pasi kuptuam se çfarĂ« janĂ« kontejnerĂ«t LXD, le tĂ« vazhdojmĂ« dhe tĂ« mendojmĂ«, çfarĂ« nĂ«se do tĂ« kishte njĂ« platformĂ« kombinoj qĂ« do tĂ« lejonte tĂ« ekzekutonit kod pĂ«r hostin, tĂ« gjeneronit grafikĂ«, tĂ« lidhnit nĂ« mĂ«nyrĂ« dinamike (interaktive) widgetet e UI me kodin tuaj, tĂ« shtonit kod me tekst tĂ« ndriçuar... formatim? Diçka si njĂ« blog interaktiv? Wow... Dua! Dua! đ
Hidh njĂ« sy nĂ«n kat ku ne do tĂ« nisnim nĂ« kontejnerin JupyterLab â ndĂ«rfaqja e pĂ«rdoruesit e brezit tĂ« ardhshĂ«m nĂ« vend tĂ« Jupyter Notebook tĂ« vjetruar, si dhe tĂ« instalonim module tĂ« tilla Python si NumPy, Pandas, Matplotlib, IPyWidgets tĂ« cilat do tĂ« lejojnĂ« tĂ« bĂ«ni gjithçka tĂ« pĂ«rmendur mĂ« lart dhe ta ruani atĂ« nĂ« njĂ« skedar tĂ« veçantĂ« â IPython-notebook.

Navigimi
- Plani për fluturim në orbitë
- Instalimi dhe konfigurimi i sistemit bazë
- Instalimi i softuerit bazik dhe konfigurimi i sistemit
- Instalimi dhe konfigurimi i JupyterLab
- Ndajmë të dhënat me hostin
- Përshëndetje, Botë!
- Shkallëzojmë mundësitë e Python
- Testojmë modulat në JupyterLab
- ĂfarĂ« tjetĂ«r?
Plani për fluturim në orbitë ^

Të hartojmë një plan të shkurtër veprimi, në mënyrë që të kemi më të lehtë realizimin e skemës më sipër:
- Do të instalojmë dhe fillojmë një kontejner të bazuar në distribucionin Alpine Linux. Ne do të përdorim këtë distribucion pasi është i orientuar drejt minimalizmit dhe do të instalojmë vetëm softuerin më të nevojshëm, asgjë më shumë.
- Do tĂ« shtojmĂ« njĂ« disk virtual shtesĂ« nĂ« kontejner, tĂ« cilit do tâi japim emrin â
hostfsdhe do ta montojmë në sistemin e dosjeve themelore. Ky disk do të sigurojë mundësinë për të përdorur skedarët në host nga një katalog i caktuar brenda kontejnerit. Kështu, të dhënat do të jenë të pavarura nga kontejneri. Në rast se kontejneri fshihet, të dhënat do të mbesin në host. Gjithashtu, kjo skemë është e dobishme për ndarjen e disa të dhënave mes shumë kontejnerëve pa përdorur mekanizmat e zakonshëm të rrjetit të distribucionit të kontejnerit. - Do të instalojmë Bash, sudo, bibliotekat e nevojshme, do të shtojmë dhe konfigurim përdoruesit sistemor
- Do të instalojmë Python, modulat dhe do të kompilohemi për varësitë e tyre binare
- Do të instalojmë dhe fillojmë JupyterLab, do ta konfiguroni pamjen, do të instaloni zgjerime për të.
NĂ« kĂ«tĂ« artikull ne do tĂ« fillojmĂ« me nisjen e kontejnerit, nuk do tĂ« shqyrtojmĂ« instalimin dhe konfigurimin e LXD; gjithçka qĂ« mund tĂ« gjeni nĂ« njĂ« artikull tjetĂ«r â Funksionalitetet e bazĂ«s LXD - sistemet e kontejnerĂ«ve nĂ« Linux.
Instalimi dhe konfigurimi i sistemit bazë ^
KrijojmĂ« kontejnerin me komandĂ«n ku specifikojmĂ« imazhin â alpine3, identifikuesin pĂ«r kontejnerin â jupyterlab dhe, sipas nevojĂ«s, profilin e konfigurimit:
lxc init alpine3 jupyterlab --profile=default --profile=hddrootKëtu po përdor një profil konfigurimi hddroot që tregon të krijojë një kontejner me pjesën rrënjore në Storage Pool të vendosur në diskun e fizik:
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:
- noneKjo mĂ« jep mundĂ«sinĂ« tĂ« eksperimentohem me kontejnerĂ«t nĂ« diskun HDD, duke kursyer burime nga disku SSD qĂ« gjithashtu Ă«shtĂ« nĂ« sistemin tim đ pĂ«r tĂ« cilin kam krijuar njĂ« profil konfigurimi tĂ« veçantĂ«. nĂ« tĂ« cilin do tĂ« shtojmĂ« njĂ« pajisje tĂ« tipit.
Pas krijimit të kontejnerit, ai është në gjendjen NDALUR, kështu që na nevojitet ta nisim duke nisur sistemin init në të:
lxc start jupyterlabDo të nxjerrim një listë kontejnerësh në LXD duke përdorur çelësin -c i cili tregon se cilat mekolona do të shfaqen në ekran:
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+Kur krijuam kontejnerin, adresa IP u zgjodh rastësisht, pasi përdorëm profilin e konfigurimit default që ishte konfiguruar më parë në artikullin Funksionalitetet e bazës LXD - sistemet e kontejnerëve në Linux.
Do ta ndryshojmë këtë adresë IP në një më të lehtë për t'u mbajtur mend, duke krijuar një ndërfaqe rrjeti në nivelin e kontejnerit, jo në nivelin e profilit të konfigurimit siç është tani në konfigurimin aktual. Kjo nuk është e nevojshme të bëhet, mund ta anashkaloni.
KrijojmĂ« njĂ« ndĂ«rfaqe rrjeti eth0 e cila lidhet me ndĂ«rruesin (shtĂ«pija e rrjetit) lxdbr0 ku pĂ«rfshimĂ« NAT sipas artikullit tĂ« kaluar dhe tani kontejneri do tĂ« ketĂ« qasje nĂ« Internet, si dhe do tâi caktojmĂ« njĂ« adresĂ« IP statike â 10.0.5.5:
lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5Pasi tĂ« keni shtuar pajisjen, kontajneri duhet tĂ« rindezŃt:
lxc restart jupyterlabPo kontrollojmë statusin e kontajnerit:
lxc list -c ns4b
+------------+---------+------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0) | hddpool |
+------------+---------+------------------+--------------+Instalimi i softuerit bazik dhe konfigurimi i sistemit ^
Për administrimin e kontajnerit tonë, duhet të instaloni softin e mëposhtëm:
Package
Përshkrimi
bash
GNU Bourne Again shell
bash-completion
Përfundimi i programueshëm për shell-in bash
sudo
Jepni disa përdoruesve mundësinë për të ekzekutuar disa komanda si root
shadow
Paketa e menaxhimit të fjalëkalimeve dhe llogarive me mbështetje për skedarët shadow dhe PAM
tzdata
Burimeve për zonën kohore dhe të dhënat e kursimeve të ditës
nano
Kloni i editorit Pico me përmirësime
ShtesĂ«, mund tĂ« instaloni mbĂ«shtetje nĂ« sistemin man-pages duke instaluar paketat e mĂ«poshtme â man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nanoTë shohim komandat dhe çelësat që kemi përdorur:
lxcâ Thirrja e klientit LXDexecâ Metoda e klientit LXD qĂ« ekzekuton komandĂ«n nĂ« kontainerjupyterlabâ Identifikuesi i kontainerit--â ĂelĂ«si ndihmĂ«s, i cili tregon tĂ« mos interpretohen mĂ« tej çelĂ«sat siç janĂ« pĂ«rlxcdhe tĂ« kalojmĂ« tĂ« gjithĂ« stringun e mbetur siç Ă«shtĂ« nĂ« kontainerapkâ Menaxheri i paketave tĂ« distribucionit Alpine Linuxshtoâ Metoda e menaxherit tĂ« paketave qĂ« instalon paketat e pĂ«rmendura pas komandĂ«s
Më pas, do të vendosim zonën kohore në sistem Europe/Moscow:
lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtimePasi të jetë vendosur zona kohore, paketa tzdata në sistem nuk është më e nevojshme, do të zërë vend, kështu që do ta fshijmë atë:
lxc exec jupyterlab -- apk del tzdataPo kontrollojmë zonën kohore:
lxc exec jupyterlab -- date
Wed Apr 15 10:49:56 MSK 2020Për të mos humbur shumë kohë në konfigurimin e Bash për përdoruesit e rinj në kontainer, me veprimet në vijim do të kopjojmë skel-fajlët e gatshëm nga sistemi host. Kjo do të lejojë të pasurojmë Bash në kontainer në modalitetin interaktiv. Sistemi im host është Manjaro Linux dhe skel-fajlët e kopjuar /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors në parim janë të përshtatshëm për Alpine Linux dhe nuk shkaktojnë probleme kritike, por ju mund të keni një distribucion tjetër dhe ndoshta do t'ju duhet të zbuloni vetë në rast të një gabimi të ekzekutimit të Bash në kontainer.
KopjojmĂ« skel-fajlĂ«t nĂ« kontainer. ĂelĂ«si --create-dirs do tĂ« krijojĂ« direktorĂ«t e nevojshme, nĂ«se ato nuk ekzistojnĂ«:
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_colorsPër përdoruesin root të ekzistuese, do të kopjojmë në drejtorinë e shtëpisë skel-fajlët e sapokopjuar në kontainer:
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_colorsNë Alpine Linux për përdoruesit, emërohet shqisa e sistemit /bin/sh, ne do ta zëvendësojmë atë te root përdoruesi me Bash:
lxc exec jupyterlab -- usermod --shell=/bin/bash rootPër root përdoruesi nuk ishte pa fjalëkalim, ai duhet të vendosë një fjalëkalim. Komanda e mëposhtme do të gjenerojë dhe vendosë një fjalëkalim të ri rastësor që do ta shihni në ekran pas ekzekutimit të saj:
lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "root:$PASSWD" | chpasswd && echo "Fjalëkalimi i ri: $PASSWD""
FjalĂ«kalimi i ri: sFiXEvBswuWAGjithashtu, do tĂ« krijojmĂ« njĂ« pĂ«rdorues tĂ« ri sistemor â jupyter pĂ«r tĂ« cilin do tĂ« konfiguroni mĂ« vonĂ« JupyterLab:
lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyterDo të gjenerojmë dhe vendosim një fjalëkalim për të:
lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "jupyter:$PASSWD" | chpasswd && echo "Fjalëkalimi i ri: $PASSWD""
Fjalëkalimi i ri: ZIcbzWrF8tkiMë pas do të ekzekutojmë dy komanda, e para do të krijojë grupin sistemor sudo, e dyta do të shtojë përdoruesin jupyter:
lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyterLe të shikojmë në cilat grupe është përdoruesi jupyter:
lxc exec jupyterlab -- id -Gn jupyter
jupyter sudoGjithçka â Ă«shtĂ« ok, le tĂ« vazhdojmĂ«.
Le të më lejohet çdo përdorues që është në grupin sudo të përdorë komandën sudo. Për këtë ekzekutoni skriptin e mëposhtëm, i cili sed komenton linjën e parametrave në skedarin e konfigurimit /etc/sudoers:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*// ' /etc/sudoers"Instalimi dhe konfigurimi i JupyterLab ^
JupyterLab â Ky Ă«shtĂ« njĂ« aplikacion Python, kĂ«shtu qĂ« duhĂ«t sĂ« pari tĂ« instalojmĂ« kĂ«tĂ« interpreter. Gjithashtu, JupyterLab do tĂ« instalojmĂ« pĂ«rmes menaxherit tĂ« paketave python pip, dhe jo sistemor, sepse nĂ« depozitat e sistemit mund tĂ« jetĂ« e pĂ«rkohshme, dhe prandaj, duhet tĂ« lejojmĂ« manualisht varĂ«sitĂ« e tij duke instaluar paketat e mĂ«poshtme â python3 python3-dev gcc libc-dev zeromq-dev:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-devDo të azhurnojmë modulet python dhe menaxherin e paketave pip në versionin aktual:
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheelInstalojmë JupyterLab përmes menaxherit të paketave pip:
lxc exec jupyterlab -- python3 -m pip install jupyterlabDuke qenë se shtesat në JupyterLab janë eksperimentale dhe nuk shpërndahen zyrtarisht me paketën jupyterlab, prandaj, duhet t'i instaloni dhe konfiguroni ato manualisht.
Do tĂ« instalojmĂ« NodeJS dhe menaxherin e paketave pĂ«r tĂ« â NPM, sepse JupyterLab i pĂ«rdorin ato pĂ«r zgjerimet e tij:
lxc exec jupyterlab -- apk add nodejs npmPër zgjerimet për JupyterLab që ne do të instalojmë të funksionojnë, ato duhet të instalohen në direktorinë e përdoruesit pasi aplikacioni do të nisë nga përdoruesi jupyter. Problemi është se nuk ka parametrin në komandën e nisjes që mund të kalojmë një katalog, aplikacioni percepon vetëm variablin e mjedisit dhe për këtë arsye ne duhet ta përcaktojmë atë. Për këtë, ne do të shkruajmë komandën e eksportimit të variablit JUPYTERLAB_DIR në mjedisin e përdoruesit jupyter, në skedarin .bashrc, i cili ekzekutohet gjithmonë kur përdoruesi futet në sistem:
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"Me komandĂ«n tjetĂ«r do tĂ« instalojmĂ« njĂ« zgjerim tĂ« veçantĂ« â menaxhuesi i zgjerimeve nĂ« JupyterLab:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"Tanë njërë gjithçka është gati për nisjen e parë JupyterLab, por ne mund të instalojmë edhe disa zgjerime të dobishme:
tocâ Lista e TĂ« DhĂ«nave, gjeneron njĂ« listĂ« titujsh nĂ« artikullin/notebookjupyterlab-horizon-themeâ Tema e ndĂ«rfaqes sĂ« pĂ«rdoruesitjupyterlab_neon_themeâ Tema e ndĂ«rfaqes sĂ« pĂ«rdoruesitjupyterlab-ubu-themeâ NjĂ« tjetĂ«r temĂ« nga autori i kĂ«tij artikulli đ Por nĂ« kĂ«tĂ« rast, do tĂ« tregohet instalimi nga repository GitHub
Pra, kryeni radhazi komandat e mëposhtme për të instaluar këto zgjerime:
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"Pas instalimit të zgjerimeve ne duhet t'i kompilohemi, pasi më parë, gjatë instalimit shenuam çelësin --no-build për të kursyer kohë. Tani ne do të përshpejtojmë ndjeshëm duke i kompaktuar së bashku një herë:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"Tani kryeni dy komandat e mĂ«poshtme pĂ«r nisjen e parĂ« JupyterLab. Mund tĂ« ishte nisur me njĂ« komandĂ«, por nĂ« kĂ«tĂ« rast, komanda e nisjes, qĂ« duhet mbajtur nĂ« mend, do tĂ« ruhej nga bash nĂ« kontener, e jo nĂ« host, ku ka mjaft komanda pĂ«r t'u shkruar nĂ« histori đ
Këtu identifikohemi në kontenier si përdorues jupyter:
lxc exec jupyterlab -- su -l jupyterMë pas nisni JupyterLab me çelësat dhe parametrat siç është e shënuar:
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browserShkoni në shfletuesin web në adresën http://10.0.5.5:8888 dhe në faqen e hapur shkruani token e aksesit që do të shihni në konsolë. Kopjoni atë dhe ngjitni në faqen, pastaj klikoni Identifikohu. Pas hyrjes, shkoni në menunë e zgjerimeve majtas, siç është treguar në imazhin më poshtë, ku do t'ju kërkohet, kur të aktivizoni menaxhuesin e zgjerimeve, të pranoni rreziqet e sigurisë duke instaluar zgjerime nga palë të treta për të cilat ekipi Zhvillimi i JupyterLab nuk merr përsipër përgjegjësinë:

Megjithatë, ne e izolojmë plotësisht JupyterLab dhe e vendosim në kontenier, kështu që zgjerim mbi kërkesat dhe përdorimin e NodeJS nuk mund të vjedhin të dhëna në disk përveç atyre që ne do të hapim brenda kontenierit. Nuk ka shumë gjasa që të arrijnë në dokumentet tuaja private në host nga /home proceset e brendshme të kontenierit, dhe nëse do të arrijnë, atëherë do të duhet të kenë privilegje mbi skedarët në sistemin host, pasi ne e nisëm kontenierin në modalitetin e pa privilegjuar. Duke marrë parasysh këtë informacion, mund të vlerësoni rrezikun e aktivizimit të zgjerimeve në JupyterLab.
Notebook-Ă«t IPython tĂ« krijuar (faqet nĂ« JupyterLab) tani do tĂ« krijohen nĂ« direktorinĂ« e shtĂ«pisĂ« sĂ« pĂ«rdoruesit â /home/jupyter, por nĂ« planet tona Ă«shtĂ« qĂ« tĂ« ndajmĂ« tĂ« dhĂ«nat (t'i ndajmĂ«) mes hostit dhe kontenierit, prandaj, kthehuni nĂ« konsolĂ« dhe ndaloni JupyterLab duke kryer hotkey â CTRL+C dhe duke u pĂ«rgjigjur y nĂ« kĂ«rkesĂ«. MĂ« pas, ndaloni sesionin interaktiv tĂ« pĂ«rdoruesit jupyter duke kryer hotkey CTRL+D.
Ndajmë të dhënat me hostin ^
Për të ndarë të dhënat me hostin, duhet të krijoni në kontenier një pajisje të tillë që e lejon këtë dhe për këtë kryeni komandën e mëposhtme ku ne specifikojmë çelësat e mëposhtëm:
lxc config device addâ Komanda shton konfigurimin e pajisjesjupyterâ Identifikuesi i kontenierit nĂ« tĂ« cilin shtohet konfigurimihostfsâ Identifikuesi i pajisjes. Mund tĂ« caktoni çdo emĂ«r.diskâ Specifikohet lloji i pajisjespathâ Specifikohet rruga brenda kontenierit nĂ« tĂ« cilĂ«n LXD do tĂ« montojĂ« kĂ«tĂ« pajisjesourceâ Specifikohet burimi, rruga ndaj direktorive nĂ« host qĂ« dĂ«shironi tĂ« ndani me kontenierin. Specifikoni rrugĂ«n sipas preferencave tuaja
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooksPër direktorine /home/dv/projects/ipython-notebooks duhet të jetë e vendosur leja për përdoruesin e kontenierit i cili tani ka UID të barabartë SubUID + UID, shihni kapitullin Siguria. Privilegjet e kontejnerëve në artikull Funksionalitetet e bazës LXD - sistemet e kontejnerëve në Linux.
Vendosim lejen në host, ku pronari do të jetë përdoruesi i kontejnerit jupyter, dhe variabli $USER do të tregojë përdoruesin tuaj të host-it si grup:
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooksPërshëndetje, Botë! ^
Nëse keni ende një sesion konsolë të hapur në kontejner me JupyterLab, duhet ta rikreuani atë me çelësin e ri --notebook-dir duke caktuar vlerën /mnt/hostfs si rrugë deri në koren e notebook-ëve në kontejner për pajisjen që krijuam në hapin e mëparshëm:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfsPastaj shkoni në faqen http://10.0.5.5:8888 dhe krijoni notebook-un tuaj të parë duke klikuar butonin në faqe siç tregohet në imazhin më poshtë:

Pastaj në fushën në faqe shkruani kodin në gjuhën Python që do të sjellë klasiken Përshëndetje Botë!. Pas përfundimit të hyrjes, shtypni CTRL+ENTER ose butonin 'play' në panelin e mjetëve lart që JupyterLab ta ekzekutojë këtë:

Kjo Ă«shtĂ« thuajse e gjitha pĂ«r t'u pĂ«rdorur, por do tĂ« ishte e mĂ«rzitshme nĂ«se nuk do tĂ« instalonim module tĂ« tjera Python (aplikacione gjithĂ«pĂ«rfshirĂ«se) qĂ« lejojnĂ« zgjerimin e mundĂ«sive standarde tĂ« Python nĂ« JupyterLab, prandaj, le tĂ« vazhdojmĂ« đ
P.S. E veçanta është se implementimi i vjetër Jupyter me emrin kodik Jupyter Notebook nuk ka humbur dhe ekziston paralelisht me JupyterLab. Për të kaluar në versionin e vjetër, vizitoni lidhjen duke shtuar sufiksin/tree, dhe kalimi në versionin e ri bëhet me sufiksin /lab, por nuk është e nevojshme ta specifikoni:
- Jupyter Notebook â http://10.0.5.5:8888/tree
- Jupyter Lab â http://10.0.5.5:8888/lab
Shkallëzojmë mundësitë e Python ^
Në këtë kapitull ne do të instalojmë module të fuqishme të gjuhës Python si NumPy, Pandas, Matplotlib, IPyWidgets rezultatet e të cilave do të integrohen në notebook-e JupyterLab.
Para se të instalojmë modulet e përmendura të Python përmes menaxherit të paketave pip duhet fillimisht të lejojmë varësitë sistemore në Alpine Linux:
g++â Nevojiten pĂ«r kompilimin e moduleve, pasi disa prej tyre janĂ« implementuar nĂ« gjuhĂ«n C++ dhe lidhen me Python nĂ« runtime si module binarĂ«freetype-devâ varĂ«si pĂ«r modul Python Matplotlib
Instalojmë varësitë:
lxc exec jupyterlab -- apk add g++ freetype-devKa një problem, në gjendjen aktuale të distribucionit Alpine Linux nuk do të mund të kompilohet versioni i ri i NumPy, do të ndodhi një gabim kompilimi që nuk kam arritur ta zgjidh:
ERROR: Nuk mund të krijohet rrotull për numpy që përdor PEP 517 dhe nuk mund të instalohet drejtpërdrejt
Prandaj, këtë modul do ta instalojmë si një paketë sistemore që shpërndan një version të kompiluara, por pak më të vjetër se sa është aktualisht në faqen:
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-devMë pas instalojmë modulet Python përmes menaxherit të paketave pip. Kërko patience, pasi disa module do të kompilohet dhe do të zgjasë disa minuta. Në makinën time kompilimi ka zgjatur ~15 minuta:
lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlibPastaj pastroni cache-in e instalimeve:
lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*Testojmë modulat në JupyterLab ^
Nëse keni aktivizuar JupyterLab, riaktivizoni atë në mënyrë që modulet e reja të instaluara të aktivizohen. Për ta bërë këtë, në sesionin e konsolës shtypni CTRL+C në vendin ku është aktivizuar dhe shkruani y në pyetjen për ndalimin, pastaj rilidhni duke JupyterLab shtypur butonin 'lart' në tastierë, në mënyrë që të mos duhet të shkruani komandën përsëri dhe pastaj Enter për të ekzekutuar:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfsShkoni në faqen http://10.0.5.5:8888/lab ose rifreskoni faqen në shfletues, pastaj shkruani kodin e mëposhtëm në një qelizë të re notebook-u:
%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_plotJu duhet të merrni një rezultat si në imazhin më poshtë, ku IPyWidgets gjen UI-elementin në faqe i cili ndërvepron në mënyrë interaktive me kodin burimor dhe gjithashtu Matplotlib jep rezultatin e kodit në formën e një grafiku si grafik funksioni:

Shumë shembuj IPyWidgets mund të gjenden në tutoriale këtu
ĂfarĂ« tjetĂ«r? ^
Jeni tĂ« mrekullueshĂ«m, nĂ«se qĂ«ndruat dhe arritĂ«t nĂ« fund tĂ« artikullit. QĂ«llimi im ishte qĂ« tĂ« mos publikoj njĂ« skenar tĂ« gatshĂ«m nĂ« fund tĂ« artikullit qĂ« do tĂ« instalonte JupyterLab nĂ« 'njĂ« klik', pĂ«r tĂ« inkurajuar punĂ«torĂ«t đ Por ju mund ta bĂ«ni vetĂ«, pasi tashmĂ« e dini si, duke e mbledhur komandat nĂ« njĂ« skenar tĂ« vetĂ«m Bash đ
Gjithashtu, mund të:
- Caktoni një emër rrjeti për kontejnerin në vend të adresës IP duke e shkruar atë në thjesht
/etc/hostsdhe në shfletues të shkruani adresën http://jupyter.local:8888 - Eksperimentoni me kufizimin e burimeve për kontejnerin, për këtë lexoni kapitullin mbi mundësitë themelore të LXD ose merrni më shumë informacion në faqen e zhvilluesit të LXD.
- Ndryshoni temën:

Dhe shumë gjëra të tjera që mund të bëni! Kjo është gjithçka. Ju uroj suksese!
UPDATE: 15.04.2020 18:30 â Korrigjova gabimet nĂ« kapitullin 'Hello, World!'
UPDATE: 16.04.2020 10:00 â Rregullova dhe shtova tekst nĂ« pĂ«rshkrimin e aktivizimit tĂ« menaxherit tĂ« shtesave JupyterLab
UPDATE: 16.04.2020 10:40 â Korrigjova gabimet e gjetura nĂ« tekst dhe pak ndĂ«rova pĂ«r tĂ« mirĂ«n kapitullin 'Instalimi i softuerit bazĂ« dhe konfigurimi i sistemit'
Burimi: habr.com
