Tnedija ta' Jupyter fl-orbita LXD

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.

Tnedija ta' Jupyter fl-orbita LXD

Pjan tat-tlugħ orbitali ^

Tnedija ta' Jupyter fl-orbita LXD

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 LXD
  • exec - Metodu tal-klijent LXD li jmexxi kmand fil-kontenitur
  • jupyterlab — ID tal-kontenitur
  • -- - Ċavetta speċjali li tispeċifika li ma tinterpretax aktar ċwievet bħala ċwievet għal lxc u għaddi l-bqija tas-sekwenza kif inhu mal-kontenitur
  • apk — Maniġer tal-pakkett tad-distribuzzjoni Alpine Linux
  • add — 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 .bashrcli 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/notebook
  • jupyterlab-horizon-theme — Tema UI
  • jupyterlab_neon_theme — Tema UI
  • jupyterlab-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:

Tnedija ta' Jupyter fl-orbita LXD

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-apparat
  • jupyter — ID tal-kontenitur li miegħu hija miżjuda l-konfigurazzjoni
  • hostfs — ID tal-apparat. Tista 'tissettja kwalunkwe isem.
  • disk — It-tip ta' apparat huwa indikat
  • path — Jispeċifika l-mogħdija fil-kontenitur li fih LXD se jwaħħal dan l-apparat
  • source — 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:

Tnedija ta' Jupyter fl-orbita LXD

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:

Tnedija ta' Jupyter fl-orbita LXD

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:

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 binarji
  • freetype-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:

Tnedija ta' Jupyter fl-orbita LXD

Ħ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:

Tnedija ta' Jupyter fl-orbita LXD

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

Żid kumment