Qatt kellek tesperimenta bil-kodiċi jew l-utilitajiet tas-sistema fil-Linux sabiex ma tinkwietax dwar is-sistema bażi u ma twaqqax kollox f'każ ta 'żball fil-kodiċi li għandu jaħdem bi privileġġi tal-għeruq?
Imma xi ngħidu dwar il-fatt li ejja ngħidu li għandek bżonn tittestja jew tħaddem grupp sħiħ ta 'diversi mikroservizzi fuq magna waħda? Mitt jew saħansitra elf?
B'magni virtwali ġestiti minn hypervisor, problemi bħal dawn jistgħu u se jiġu solvuti, iżda b'liema prezz? Pereżempju, kontenitur f'LXD ibbażat fuq id-distribuzzjoni Alpine Linux jikkonsma biss 7.60MB
RAM, u fejn il-partizzjoni tal-għeruq tokkupa wara l-istartjar 9.5MB
! Kif tixtieq dan, Elon Musk? Nirrakkomanda li tiċċekkja kapaċitajiet bażiċi ta 'LXD - sistema ta' kontenitur fil-Linux
Wara li deher ċar b'mod ġenerali x'inhuma l-kontenituri LXD, ejja mmorru aktar 'il quddiem u naħsbu, x'jiġri kieku kien hemm tali pjattaforma tal-ħsad fejn tista' tmexxi b'mod sikur il-kodiċi għall-host, tiġġenera graffs, torbot b'mod dinamiku (interattiv) UI- widgets mal-kodiċi tiegħek, jissupplimenta l-kodiċi bit-test bil-blackjack... ifformattjar? Xi tip ta' blog interattiv? Ara naqra... irrid! Trid! 🙂
Ħares taħt il-qattus fejn ser inniedu f'kontenitur Jupyter lab - il-ġenerazzjoni li jmiss tal-interface tal-utent minflok il-Jupyter Notebook skadut, u aħna se ninstallaw ukoll moduli Python bħal numpy, pandas, matplotlib, IPyWidgets li se jippermettilek tagħmel dak kollu elenkat hawn fuq u ssalvah kollu f'fajl speċjali - laptop IPython.
Навигация
- Pjan tat-tlugħ orbitali
- Installazzjoni u konfigurazzjoni tas-sistema bażika
- Installazzjoni ta 'softwer bażiku u twaqqif tas-sistema
- L-installazzjoni u l-konfigurazzjoni ta' JupyterLab
- Qsim tad-dejta mal-host
- Hello dinja!
- Tespandi l-kapaċitajiet ta 'Python
- Moduli tal-ittestjar f'JupyterLab
- X'iktar?
Pjan tat-tlugħ orbitali ^
Ejja niddeskrivu pjan ta' azzjoni fil-qosor biex jagħmilha aktar faċli għalina biex nimplimentaw l-iskema hawn fuq:
- Ejja ninstallaw u nniedu kontenitur ibbażat fuq il-kit tad-distribuzzjoni Alpina Linux. Se nużaw din id-distribuzzjoni għax hija mmirata lejn il-minimaliżmu u se tinstalla fiha biss l-aktar softwer meħtieġ, xejn superfluwu.
- Ejja nżidu disk virtwali addizzjonali fil-kontenitur u nagħtu isem -
hostfs
u mmuntah fis-sistema tal-fajls tal-għeruq. Din id-diska tagħmilha possibbli li jintużaw fajls fuq il-host minn direttorju partikolari ġewwa l-kontenitur. Għalhekk, id-dejta tagħna tkun indipendenti mill-kontenitur. Jekk il-kontenitur jitħassar, id-dejta tibqa' fuq l-host. Ukoll, din l-iskema hija utli biex taqsam l-istess data bejn ħafna kontenituri mingħajr ma tuża l-mekkaniżmi standard tan-netwerk tad-distribuzzjoni tal-kontejners. - Ejja ninstallaw Bash, sudo, il-libreriji meħtieġa, żid u kkonfigurat utent tas-sistema
- Ejja ninstallaw Python, moduli u niġbru d-dipendenzi binarji għalihom
- Ejja ninstallaw u nniedu Jupyter lab, Ippersonalizza d-dehra, tinstalla estensjonijiet għaliha.
F'dan l-artikolu ser nibdew bit-tnedija tal-kontenitur, mhux se nikkunsidraw l-installazzjoni u l-konfigurazzjoni ta 'LXD, tista' ssib dan kollu f'artiklu ieħor - Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux.
Installazzjoni u konfigurazzjoni tas-sistema bażika ^
Aħna noħolqu kontenitur bil-kmand li fih nispeċifikaw l-immaġni - alpine3
, identifikatur għall-kontenitur - jupyterlab
u, jekk meħtieġ, profili ta' konfigurazzjoni:
lxc init alpine3 jupyterlab --profile=default --profile=hddroot
Hawnhekk qed nuża profil ta 'konfigurazzjoni hddroot
li jispeċifika li jinħoloq kontenitur b'diviżorju ta' l-għeruq Pool tal-Ħażna jinsab fuq disk HDD fiżiku:
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
Dan jagħtini l-opportunità li nesperimenta b'kontenituri fuq id-diska HDD, billi niffrankaw ir-riżorsi tad-diska SSD, li hija wkoll disponibbli fis-sistema tiegħi 🙂 li għaliha ħloqt profil ta' konfigurazzjoni separat ssdroot
.
Wara li jinħoloq il-kontenitur, ikun fl-istat STOPPED
, għalhekk irridu nibdewha billi nħaddmu s-sistema init fiha:
lxc start jupyterlab
Ejja nuru lista ta' kontenituri f'LXD billi tuża ċ-ċavetta -c
li jindika liema cdisplay tal-kolonni:
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+
Meta ħoloq il-kontenitur, l-indirizz IP intgħażel b'mod każwali, peress li użajna profil ta 'konfigurazzjoni default
li kien ikkonfigurat qabel fl-artikolu Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux.
Se nibdlu dan l-indirizz IP għal wieħed aktar memorabbli billi noħolqu interface tan-netwerk fil-livell tal-kontejner, u mhux fil-livell tal-profil tal-konfigurazzjoni kif inhi issa fil-konfigurazzjoni attwali. M'għandekx għalfejn tagħmel dan, tista' taqbeżha.
Ħolqien ta 'interface tan-netwerk eth0
li aħna norbtu mal-iswiċċ (pont tan-netwerk) lxdbr0
li fiha ppermettejna NAT skont l-artikolu preċedenti u l-kontenitur issa se jkollu aċċess għall-Internet, u aħna wkoll nassenjaw indirizz IP statiku għall-interface - 10.0.5.5
:
lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Wara li żżid apparat, il-kontenitur għandu jerġa 'jibda:
lxc restart jupyterlab
Iċċekkja l-istatus tal-kontenitur:
lxc list -c ns4b
+------------+---------+------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0) | hddpool |
+------------+---------+------------------+--------------+
Installazzjoni ta 'softwer bażiku u twaqqif tas-sistema ^
Biex tamministra l-kontenitur tagħna, għandek bżonn tinstalla s-softwer li ġej:
Pakkett
deskrizzjoni
bash
Il-qoxra GNU Bourne Again
bash-tlestija
Tlestija programmabbli għall-qoxra bash
sudo
Agħti lil ċerti utenti l-abbiltà li jmexxu xi kmandi bħala root
dell
Suite ta 'għodda ta' ġestjoni tal-password u tal-kont b'appoġġ għal shadow files u PAM
tzdata
Sorsi għal data taż-żona tal-ħin u tal-ħin tas-sajf
nano
Pico editur klonu b'titjib
Barra minn hekk, tista' tinstalla l-appoġġ fil-paġni man tas-sistema billi tinstalla l-pakketti li ġejjin - man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano
Ejja nħarsu lejn il-kmandi u ċ-ċwievet li użajna:
lxc
— Ċempel lill-klijent LXDexec
- Metodu tal-klijent LXD li jmexxi kmand fil-konteniturjupyterlab
— ID tal-kontenitur--
- Ċavetta speċjali li tispeċifika li ma tinterpretax aktar ċwievet bħala ċwievet għallxc
u għaddi l-bqija tas-sekwenza kif inhu mal-konteniturapk
— Maniġer tal-pakkett tad-distribuzzjoni Alpine Linuxadd
— Metodu ta' maniġer tal-pakketti li jinstalla pakketti speċifikati wara l-kmand
Sussegwentement, se nissettjaw żona tal-ħin fis-sistema Europe/Moscow
:
lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Wara l-installazzjoni taż-żona tal-ħin, il-pakkett tzdata
m'għadhiex meħtieġa fis-sistema, se tieħu spazju, allura ejja nħassruh:
lxc exec jupyterlab -- apk del tzdata
Iċċekkja ż-żona tal-ħin:
lxc exec jupyterlab -- date
Wed Apr 15 10:49:56 MSK 2020
Sabiex ma tqattax ħafna ħin twaqqaf Bash għal utenti ġodda fil-kontenitur, fil-passi li ġejjin aħna se nikkupjaw fajls skel lesti mis-sistema ospitanti għaliha. Dan se jippermetti li inti prettify Bash f'kontenitur b'mod interattiv. Is-sistema ospitanti tiegħi hija Manjaro Linux u l-fajls li qed jiġu kkupjati /etc/skel/.bash_profile
, /etc/skel/.bashrc
, /etc/skel/.dir_colors
fil-prinċipju huma adattati għal Alpine Linux u ma jikkawżawx problemi kritiċi, iżda jista 'jkollok distribuzzjoni differenti u għandek bżonn tara b'mod indipendenti jekk hemmx żball meta tħaddem Bash fil-kontenitur.
Ikkopja l-fajls skel fil-kontenitur. Ewlenin --create-dirs
se joħloq id-direttorji meħtieġa jekk ma jeżistux:
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
Għal utent għerq eżistenti, ikkopja l-fajls skel li għadhom kemm ġew ikkupjati fil-kontenitur fid-direttorju tad-dar:
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
Alpine Linux jinstalla qoxra tas-sistema għall-utenti /bin/sh
, aħna se tibdilha bi root
utent f'Bash:
lxc exec jupyterlab -- usermod --shell=/bin/bash root
Li root
l-utent ma kienx mingħajr password, jeħtieġ li jistabbilixxi password. Il-kmand li ġej se jiġġenera u jistabbilixxi password każwali ġdida għalih, li se tara fuq l-iskrin tal-console wara l-eżekuzzjoni tagħha:
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
Ukoll, ejja noħolqu utent tas-sistema ġdida - jupyter
li għaliha se nikkonfiguraw aktar tard Jupyter lab:
lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter
Ejja niġġeneraw u nissettjaw password għaliha:
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
Sussegwentement, se nwettqu żewġ kmandi, l-ewwel se toħloq grupp tas-sistema sudo
, u t-tieni se żżid utent miegħu jupyter
:
lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter
Ejja naraw liema gruppi jappartjeni l-utent jupyter
:
lxc exec jupyterlab -- id -Gn jupyter
jupyter sudo
Kollox ok, ejja nkomplu.
Ħalli l-utenti kollha li huma membri tal-grupp sudo
uża kmand sudo
. Biex tagħmel dan, mexxi l-iskrittura li ġejja, fejn sed
tneħħi l-kummenti tal-linja tal-parametru fil-fajl tal-konfigurazzjoni /etc/sudoers
:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"
L-installazzjoni u l-konfigurazzjoni ta' JupyterLab ^
Jupyter lab hija applikazzjoni Python, għalhekk l-ewwel irridu ninstallaw dan l-interpretu. Ukoll, Jupyter lab aħna se ninstallaw bl-użu tal-maniġer tal-pakketti Python pip
, u mhux dik tas-sistema, minħabba li jista 'jkun skadut fir-repożitorju tas-sistema u għalhekk, irridu nsolvu manwalment id-dipendenzi għaliha billi ninstallaw il-pakketti li ġejjin - python3 python3-dev gcc libc-dev zeromq-dev
:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev
Ejja naġġornaw il-moduli python u l-maniġer tal-pakketti pip
għall-verżjoni attwali:
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel
Installa Jupyter lab permezz tal-maniġer tal-pakketti pip
:
lxc exec jupyterlab -- python3 -m pip install jupyterlab
Peress li l-estensjonijiet fi Jupyter lab huma sperimentali u mhumiex mibgħuta uffiċjalment mal-pakkett jupyterlab, għalhekk irridu ninstallaw u kkonfigurawh manwalment.
Ejja ninstallaw NodeJS u l-maniġer tal-pakkett għalih - NPM, peress Jupyter lab jużahom għall-estensjonijiet tiegħu:
lxc exec jupyterlab -- apk add nodejs npm
Għal estensjonijiet għal Jupyter lab li aħna se jinstallaw ħadem, jeħtieġ li jiġu installati fid-direttorju tal-utent peress li l-applikazzjoni se titnieda mill-utent jupyter
. Il-problema hija li m'hemm l-ebda parametru fil-kmand tat-tnedija li jista 'jiġi mgħoddi lil direttorju; l-applikazzjoni taċċetta biss varjabbli ambjentali u għalhekk irridu niddefinixxuha. Biex tagħmel dan, aħna se niktbu l-kmand tal-esportazzjoni varjabbli JUPYTERLAB_DIR
fl-ambjent tal-utent jupyter
, għall-fajl .bashrc
li jiġi esegwit kull darba li l-utent jidħol:
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"
Il-kmand li jmiss se jinstalla estensjoni speċjali - maniġer tal-estensjoni fi Jupyter lab:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"
Issa kollox lest għall-ewwel tnedija Jupyter lab, iżda xorta nistgħu ninstallaw ftit estensjonijiet utli:
toc
— Werrej, tiġġenera lista ta' intestaturi f'artiklu/notebookjupyterlab-horizon-theme
— Tema UIjupyterlab_neon_theme
— Tema UIjupyterlab-ubu-theme
- Oħra tema mill-awtur dan l-artikolu :) Iżda f'dan il-każ, l-installazzjoni mir-repożitorju GitHub se tintwera
Allura, mexxi l-kmandi li ġejjin b'mod sekwenzjali biex tinstalla dawn l-estensjonijiet:
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"
Wara l-installazzjoni tal-estensjonijiet, irridu niġbruhom, peress li qabel, waqt l-installazzjoni, speċifikajna ċ-ċavetta --no-build
biex tiffranka l-ħin. Issa se nħaffu b'mod sinifikanti billi niġbruhom flimkien f'daqqa waħda:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"
Issa mexxi ż-żewġ kmandi li ġejjin biex tħaddem għall-ewwel darba Jupyter lab. Ikun possibbli li tniedi b'kmand wieħed, iżda f'dan il-każ, il-kmand tat-tnedija, li huwa diffiċli li tiftakar f'moħħok, jiġi mfakkar b'bash fil-kontenitur, u mhux fuq l-ospitant, fejn diġà hemm biżżejjed kmandi biex nirreġistrahom fl-istorja :)
Idħol fil-kontenitur bħala utent jupyter
:
lxc exec jupyterlab -- su -l jupyter
Sussegwentement, run Jupyter lab biċ-ċwievet u l-parametri kif indikati:
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser
Mur fl-indirizz fil-web browser tiegħek http://10.0.5.5:8888 u fil-paġna li tiftaħ idħol token aċċess li se tara fil-console. Ikkopja u waħħalha fuq il-paġna, imbagħad ikklikkja Idħol. Wara li tidħol, mur fil-menu tal-estensjonijiet fuq ix-xellug, kif muri fil-figura hawn taħt, fejn tkun imħeġġeġ, meta tattiva l-maniġer tal-estensjoni, tieħu riskji għas-sigurtà billi tinstalla estensjonijiet minn partijiet terzi li għalihom il-kmand Żvilupp JupyterLab mhuwiex responsabbli:
Madankollu, qed niżolaw l-intier Jupyter lab u poġġiha f'kontenitur sabiex l-estensjonijiet ta 'partijiet terzi li jeħtieġu u jużaw NodeJS ma jkunux jistgħu għall-inqas jisirqu dejta fuq id-diska għajr dawk li niftħu ġewwa l-kontenitur. Ikseb id-dokumenti privati tiegħek fuq il-host in /home
proċessi mill-kontenitur x'aktarx li ma jirnexxux, u jekk jagħmlu hekk, allura jeħtieġ li jkollok privileġġi fuq fajls fuq is-sistema ospitanti, peress li nħaddmu l-kontenitur f' mod mhux privileġġjat. Abbażi ta’ din l-informazzjoni, tista’ tivvaluta r-riskju li tinkludi estensjonijiet fi Jupyter lab.
Ħoloq notebooks IPython (paġni fi Jupyter lab) issa se tinħoloq fid-direttorju tad-dar tal-utent - /home/jupyter
, iżda l-pjanijiet tagħna huma li naqsmu d-dejta (sehem) bejn l-ospitant u l-kontenitur, għalhekk erġa lura lejn il-console u waqqaf Jupyter lab billi tesegwixxi hotkey - CTRL+C
u jwieġbu y
fuq talba. Imbagħad ittemm is-sessjoni interattiva tal-utent jupyter
timla hotkey CTRL+D
.
Qsim tad-dejta mal-host ^
Biex taqsam id-dejta mal-host, għandek bżonn toħloq apparat fil-kontenitur li jippermettilek tagħmel dan u biex tagħmel dan, mexxi l-kmand li ġej fejn aħna nispeċifikaw iċ-ċwievet li ġejjin:
lxc config device add
— Il-kmand iżid il-konfigurazzjoni tal-apparatjupyter
— ID tal-kontenitur li miegħu hija miżjuda l-konfigurazzjonihostfs
— ID tal-apparat. Tista 'tissettja kwalunkwe isem.disk
— It-tip ta' apparat huwa indikatpath
— Jispeċifika l-mogħdija fil-kontenitur li fih LXD se jwaħħal dan l-apparatsource
— Speċifika s-sors, il-mogħdija għad-direttorju fuq il-host li trid taqsam mal-kontenitur. Speċifika t-triq skond il-preferenzi tiegħek
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks
Għall-katalgu /home/dv/projects/ipython-notebooks
permess għandu jkun issettjat għall-utent tal-kontenitur li bħalissa għandu UID ugwali għal SubUID + UID
, ara l-kapitlu Sigurtà. Privileġġi tal-Kontenitur fl-artiklu Karatteristiċi bażiċi ta 'LXD - sistemi ta' kontenituri Linux.
Issettja l-permess fuq il-host, fejn is-sid se jkun l-utent tal-kontenitur jupyter
, u l-varjabbli $USER
se jispeċifika l-utent ospitanti tiegħek bħala grupp:
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks
Hello dinja! ^
Jekk għad għandek sessjoni console miftuħa fil-kontenitur bil Jupyter lab, imbagħad terġa 'tibda b'ċavetta ġdida --notebook-dir
billi tistabbilixxi l-valur /mnt/hostfs
bħala l-mogħdija għall-għerq tal-laptops fil-kontenitur għall-apparat li ħloqna fil-pass preċedenti:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Imbagħad mur fil-paġna http://10.0.5.5:8888 u oħloq l-ewwel laptop tiegħek billi tikklikkja l-buttuna fuq il-paġna kif muri fl-istampa hawn taħt:
Imbagħad, fil-qasam fuq il-paġna, daħħal il-kodiċi Python li se juri l-klassika Hello World!
. Meta tkun spiċċajt iddaħħal, agħfas CTRL+ENTER
jew il-buttuna "play" fuq il-toolbar fil-quċċata biex JupyterLab jagħmel dan:
F'dan il-punt, kważi kollox huwa lest għall-użu, iżda ma jkunx interessanti jekk ma ninstallawx moduli Python addizzjonali (applikazzjonijiet sħaħ) li jistgħu jespandu b'mod sinifikanti l-kapaċitajiet standard ta 'Python f'dan il-punt. Jupyter lab, għalhekk, ejja nkomplu :)
PS Il-ħaġa interessanti hija li l-implimentazzjoni l-antika jupyter taħt l-isem tal-kodiċi Notebook Jupyter ma marretx u teżisti b’mod parallel ma’ Jupyter lab. Biex taqleb għall-verżjoni l-antika, segwi l-link u żżid is-suffiss fl-indirizz/tree
, u t-tranżizzjoni għall-verżjoni l-ġdida titwettaq bis-suffiss /lab
, iżda m'għandux għalfejn jiġi speċifikat:
- Jupyter Notebook - http://10.0.5.5:8888/tree
- Jupyter Lab - http://10.0.5.5:8888/lab
Tespandi l-kapaċitajiet ta 'Python ^
F'din it-taqsima, se ninstallaw moduli tal-lingwa Python b'saħħithom bħal numpy, pandas, matplotlib, IPyWidgets li r-riżultati tagħhom huma integrati fil-laptops Jupyter lab.
Qabel ma tinstalla l-moduli Python elenkati permezz tal-maniġer tal-pakketti pip
l-ewwel irridu nsolvu d-dipendenzi tas-sistema f'Alpine Linux:
g++
— Meħtieġa għall-kompilazzjoni ta' moduli, peress li xi wħud minnhom huma implimentati fil-lingwa C ++ u qabbad ma 'Python waqt ir-runtime bħala moduli binarjifreetype-dev
- dipendenza għall-modulu Python matplotlib
Installazzjoni tad-dipendenzi:
lxc exec jupyterlab -- apk add g++ freetype-dev
Hemm problema waħda: fl-istat attwali tad-distribuzzjoni Alpine Linux, mhux se jkun possibbli li tiġi kkumpilata l-verżjoni l-ġdida ta 'NumPy; se jidher żball ta' kumpilazzjoni li ma stajtx insolvi:
ERROR: Ma setgħetx tibni roti għal numpy li jużaw PEP 517 u ma jistgħux jiġu installati direttament
Għalhekk, aħna se ninstallaw dan il-modulu bħala pakkett tas-sistema li jqassam verżjoni diġà kkumpilata, iżda ftit eqdem minn dak li huwa disponibbli bħalissa fuq is-sit:
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev
Sussegwentement, installa moduli Python permezz tal-maniġer tal-pakketti pip
. Jekk jogħġbok kun pazjent peress li xi moduli se jikkompilaw u jistgħu jieħdu ftit minuti. Fuq il-magna tiegħi, il-kumpilazzjoni ħadet ~15-il minuta:
lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib
Tneħħija tal-caches tal-installazzjoni:
lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*
Moduli tal-ittestjar f'JupyterLab ^
Jekk qed taħdem Jupyter lab, terġa 'tibda sabiex il-moduli li għadhom kif ġew installati jiġu attivati. Biex tagħmel dan, f'sessjoni tal-console, ikklikkja CTRL+C
fejn għandek taħdem u tidħol y
biex twaqqaf it-talba u mbagħad terġa’ tibda Jupyter lab billi tagħfas il-vleġġa 'l fuq fuq it-tastiera sabiex ma terġax tidħol fil-kmand u mbagħad Enter
biex tibdaha:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Mur fil-paġna http://10.0.5.5:8888/lab jew aġġorna l-paġna fil-browser tiegħek, u mbagħad daħħal il-kodiċi li ġej f'ċellula ġdida ta' notebook:
%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
Għandek tikseb riżultat bħal fl-istampa hawn taħt, fejn IPyWidgets jiġġenera element UI fuq il-paġna li jinteraġixxi b'mod interattiv mal-kodiċi tas-sors, u wkoll matplotlib juri r-riżultat tal-kodiċi fil-forma ta' stampa bħala graff tal-funzjoni:
Ħafna eżempji IPyWidgets tista' ssibha fit-tutorials hawn
X'iktar? ^
Tajjeb jekk bqajt u wasalt sal-aħħar nett tal-artiklu. Deliberatament ma ppubblikajtx skript lest fl-aħħar tal-artiklu li jinstalla Jupyter lab fi "klikk waħda" biex tħeġġeġ lill-ħaddiema :) Imma tista 'tagħmel it yourself, peress li diġà taf kif, wara li ġabar il-kmandi f'kitba waħda ta' Bash :)
Tista' wkoll:
- Issettja isem tan-netwerk għall-kontenitur minflok indirizz IP billi tiktebha b'mod sempliċi
/etc/hosts
u ittajpja l-indirizz fil-browser http://jupyter.local:8888 - Ilgħab bil-limitu tar-riżorsi għall-kontenitur, għal dan aqra l-kapitolu fi kapaċitajiet bażiċi LXD jew ikseb aktar informazzjoni fuq is-sit tal-iżviluppatur LXD.
- Ibdel it-tema:
U ħafna aktar inti tista 'tagħmel! Dak kollox. Nawguralkom suċċess!
AĠĠORNAMENT: 15.04.2020/18/30 XNUMX:XNUMX - Żbalji kkoreġuti fil-kapitolu "Hello, World!"
AĠĠORNAMENT: 16.04.2020/10/00 XNUMX:XNUMX — Test ikkoreġut u miżjud fid-deskrizzjoni tal-attivazzjoni tal-maniġer tal-estensjoni Jupyter lab
AĠĠORNAMENT: 16.04.2020/10/40 XNUMX:XNUMX — Żbalji kkoreġuti li nstabu fit-test u kemmxejn mibdula għall-aħjar il-kapitolu “Installazzjoni tas-softwer bażiku u t-twaqqif tas-sistema”
Sors: www.habr.com