KĂ€ivitame Jupyter LXD orbiidil

Kas oled katsetanud koodi vĂ”i sĂŒsteemi utiliite Linuxis viisil, et mitte karta pĂ”hiosade purunemist ja mitte hĂ€vitada kĂ”ike, kui kood, mis peaks kĂ€ivituma, on root-privileegidega?

Ent kuidas on selle kahtluse korral, et nĂ€iteks on vaja testida vĂ”i kĂ€ivitada terve klaster erinevaid mikroteenuseid ĂŒhel masinal? Sadakond vĂ”i isegi tuhat?

HĂŒperviisori haldustel on virtuaalmasinate kaudu selliseid ĂŒlesandeid vĂ”imalik tĂ€ita, kuid mis hinnaga? NĂ€iteks LXD konteiner Alpine Linux’i jaotuses tarbib minimaalselt vaid 7.60MB RAM-i, ja kusjuures juurepartitsioon pĂ€rast kĂ€ivitamist hĂ”ivab 9.5MB! Kuidas sulle selline idee meeldib, Elon Musk? Soovitan tutvuda LXD pĂ”hivĂ”imalustega — konteinerite sĂŒsteem Linuxis.

Kui ĂŒldiselt on selge, mis on LXD konteinerid, liigume edasi ja mĂ”tleme, mis siis, kui oleks olemas selline platvorm-kombain, kus saaks ohutult kĂ€ivitada hosti jaoks koodi, genereerida graafikuid, dĂŒnaamiliselt (interaktiivselt) siduda UI-vidinaid oma koodiga, tĂ€iendada koodi tekstiga mustade kasino
 vormindamisega? Midagi nagu interaktiivne blogi? Vau
 Tahaks! Tahaks! 🙂

Vaata allpool, kus me kĂ€ivitame konteineris JupyterLab — jĂ€rgmise pĂ”lvkonna kasutajaliidese, mis asendab vananenud Jupyter Notebook'i, ning paigaldame ka sellised Python'i moodulid nagu NumPy, Pandas, Matplotlib, IPyWidgets mis vĂ”imaldavad teha kĂ”ike ĂŒlaltoodut ja salvestada selle kĂ”ik spetsiaalsesse faili — IPython'i mĂ€rkmikus.

KĂ€ivitame Jupyter LXD orbiidil

Orbitaalne tÔusuplaan ^

KĂ€ivitame Jupyter LXD orbiidil

Koostame lĂŒhikese tegevusplaani, et meil oleks lihtsam ĂŒlaltoodud skeemi teostada:

  • Paigaldame ja kĂ€ivitame konteineri Alpine Linux'i jaotusel Alpine Linux. Kasutame seda jaotust, kuna see on suunatud minimalismile ja paigaldame sinna ainult kĂ”ige vajalikuma tarkvara, mitte midagi ĂŒleliigset.
  • Lisame konteiners ĂŒhe tĂ€iendava virtuaalse kĂ”vaketta, millele anname nime — hostfs ja paigaldame selle juurdete vĂ€itĂ€le. See ketas annab vĂ”imaluse kasutada faile hostis antud kataloogist konteineris. Sellega on meie andmed konteinerist sĂ”ltumatud. Kui konteiner eemaldatakse, jÀÀvad andmed hostisse. Samuti on see skeem kasulik, et jagada andmeid mitme konteineri vahel, kasutamata konteineri vĂ€ljastpoolne vĂ”rgu mehhanisme.
  • Paigaldame Bash'i, sudo, vajalikke teeke, lisame ja seadistame sĂŒsteemikasutaja.
  • Paigaldame Python'i, moodulid ja kompileerime nende jaoks binaarset sĂ”ltuvust.
  • Paigaldame ja kĂ€ivitame. JupyterLab, seadistame vĂ€limust, paigaldame laiendusi selle jaoks.

Selles artiklis alustame konteineri kĂ€ivitamisest, me ei kĂ€sitle LXD seadistamist ja paigaldamist, seda vĂ”ite leida teises artiklis - LXD pĂ”hifunktsioonid — konteinerisĂŒsteem Linuxis.

AlgsĂŒsteemi paigaldamine ja seadistamine ^

Loome konteineri kÀsuga, kus mÀÀrame pildi - alpine3, konteineri ID - jupyterlab ja vajadusel konfiguratsiooniprofiilid:

lxc init alpine3 jupyterlab --profile=default --profile=hddroot

Siin kasutan konfiguratsiooniprofiili hddroot mis nĂ€itab, et konteiner luuakse root-partitsiooniga SĂ€ilitustorn mis asub fĂŒĂŒsilisel HDD kettal:

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

See annab mulle vĂ”imaluse katsetada konteineri HDD kettal, sÀÀstes SSD ketta ressursse, mis samuti minu sĂŒsteemis on 🙂, mille jaoks mul on loodud eraldi konfiguratsiooniprofiil. ssdroot.

PĂ€rast konteineri loomist on see seisundis STOPPIND, seega peame selle kĂ€ivitama, kolmendades initsĂŒsteemi:

lxc start jupyterlab

Kuvame LXD konteinerite nimekirja, kasutades vÔtme -c mis mÀÀrab, millised cveergud kuvada ekraanile:

lxc list -c ns4b
+------------+---------+-------------------+--------------+
|    NAME    |  STATE  |       IPV4        | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool      |
+------------+---------+-------------------+--------------+

Konteineri loomisel valiti IP aadress juhuslikult, kuna kasutasime konfiguratsiooniprofiili SeejĂ€rel kĂ€ivitame exec kĂ€su ja ootame 5000 sekundit, et jĂ€tkata jĂ€lgimist: mis oli eelnevalt seadistatud artiklis LXD pĂ”hifunktsioonid — konteinerisĂŒsteem Linuxis.

Muudame selle IP aadressi kergemini meeldejÀÀvaks, luues vÔrgu liidese konteineri tasemel, mitte konfiguratsiooniprofiili tasemel nagu see praeguses konfiguratsioonis on. See ei ole tingimata vajalik, saate selle vahele jÀtta.

Loome vĂ”rgu liidese eth0 mille ĂŒhendame lĂŒlitiga (vĂ”rgusilla) lxdbr0 kus me lubasime NAT eelnevas artiklis ja konteineril on nĂŒĂŒd juurdepÀÀs internetile, samuti mÀÀrame liidesele staatilise IP aadressi — 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

PÀrast seadme lisamist tuleb konteiner taaskÀivitada:

lxc restart jupyterlab

Kontrollime konteineri staatust:

lxc list -c ns4b
+------------+---------+------------------+--------------+
|    NAME    |  STATE  |       IPV4       | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0)  | hddpool      |
+------------+---------+------------------+--------------+

Baassofti paigaldamine ja seadistamine ^

Konteineri haldamiseks tuleb installida jÀrgmised tarkvarad:

Package
Kirjeldus

bash
GNU Bourne Again shell

bash-completion
Programmable completion for the bash shell

sudo
Anna teatud kasutajatele vÔimalus kÀitada mÔned kÀsud rootina

shadow
Parooli- ja konto haldustööriistade komplekt, mis toetab shadow-failide ja PAM-i kasutamist

tzdata
Allikad ajavööndi ja suveaja andmete jaoks

nano
Pico redaktori kloon tÀiendustega

Lisaks vĂ”ite sĂŒsteemis man-pages toe installimiseks paigaldada jĂ€rgmised paketid — man man-pages mdocml-apropos less

lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano

Vaatame kÀske ja vÔtmeid, mida kasutasime:

  • lxc — LXD kliendi kutse
  • exec — LXD kliendi meetod, mis kĂ€ivitab kĂ€su konteineris
  • jupyterlab — Konteineri identifikaator
  • -- — Erakordne vĂ”ti, mis nĂ€itab, et vĂ”tmeid ei tĂ”lgendata enam vĂ”tmetena lxc ja edastab kogu ĂŒlejÀÀnud reas, nagu see on, konteinerile
  • apk — Alpine Linuxi jaotise paketihaldur
  • add — Paketihalduri meetod, mis installib kĂ€su jĂ€rel nĂ€idatud paketid

Edasi, seadistame sĂŒsteemis ajavööndi Europe/Moscow:

lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

PĂ€rast ajavööndi seadmist, on pakett tzdata sĂŒsteemis enam vajalik, see vĂ”tab ruumi, seega eemaldame selle:

lxc exec jupyterlab -- apk del tzdata

Kontrollime ajavööndit:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Et mitte raisata palju aega Bash'i seadistamisele uutele kasutajatele konteineris, jĂ€rgnevate toimingutega kopeerime sinna host-sĂŒsteemist juba valmis skel-failid. See vĂ”imaldab muuta Bash'i konteineris interaktiivses reĆŸiimis. Minu host-sĂŒsteem on Manjaro Linux ja kopeeritavad failid /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors sobivad pĂ”himĂ”tteliselt ka Alpine Linuxile ja ei tekita kriitilisi probleeme, kuid teil vĂ”ib olla erinev jaotamine ja peate ise tegelema probleemiga, kui kĂ€ivitatav Bash konteineris ei tööta.

Kopeerime skel-failid konteinerisse. VÔti --create-dirs loob vajalikud kaustad, kui need ei eksisteeri:

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

Kuna root-kasutaja eksisteerib, kopeerime just konteinerisse kopeeritud skel-failid tema kodu kausta:

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 Linuxis on kasutajatele installitud sĂŒsteemi shell /bin/sh, me vahetame selle root kasutaja jaoks Bash-iga:

lxc exec jupyterlab -- usermod --shell=/bin/bash root

Et root kui kasutaja ei olnud paroolita, peab ta parooli seadma. JÀrgmine kÀsk genereerib ja seadistab talle uue juhusliku parooli, mille nÀete konsooli ekraanil pÀrast selle tÀitmist:

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

Samuti loome uue sĂŒsteemi kasutaja — jupyter kellele seadistame hiljem JupyterLab:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

Genereerime ja seadistame talle parooli:

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

SeejĂ€rel tĂ€idame kaks kĂ€sku, esimene loob sĂŒsteemi rĂŒhma sudo, ja teine lisab kasutaja sellesse jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

Kontrollime, millistesse rĂŒhmadesse kasutaja kuulub jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

KÔik on korras, liigume edasi.

Lubame kĂ”igil kasutajatel, kes kuuluvad rĂŒhma sudo kasutada kĂ€sku sudo. Selleks tĂ€itke jĂ€rgmine skript, mis sed kommenteerib konfiguratsioonifaili parameetrit: /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

JupyterLab'i paigaldamine ja seadistamine ^

JupyterLab — see on Pythoni rakendus, seega peame esmalt installima selle tĂ”lgendi. Samuti, JupyterLab me kavatseme installida Pythonipakettide halduri kaudu pip, mitte sĂŒsteemi kaudu, kuna sĂŒsteemide registris vĂ”ib see olla aegunud, ja seetĂ”ttu peame kĂ€sitsi lubama selle sĂ”ltuvused, installides jĂ€rgmised paketid — python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

Uuendame Pythonimoodulid ja pakettide halduri pip ajaloolise versioonini:

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

Paigaldame JupyterLab pakettide halduri kaudu pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Kuna laiendused on JupyterLab on eksperimentaalsed ega tule neid ametlikult jupyterlab paketiga, seega peame nad kÀsitsi installima ja seadistama.

Installime NodeJS-i ja selle paketihalduri NPM, kuna JupyterLab kasutab neid oma laiendustes:

lxc exec jupyterlab -- apk add nodejs npm

Kuna laiendused, JupyterLab mida me installime, peavad töötama, tuleb need installida kasutajadiriktiivi, kuna rakendus kĂ€ivitatakse kasutaja alt. jupyterProbleem on selles, et kĂ€ivituskomandis pole parameetrit, mille kaudu saaks kausta edastada; rakendus tunnustab ainult keskkonnamuutujat ja seetĂ”ttu peame selle mÀÀrama. Selleks kirjutame keskkonnamuutujate ekspordi kĂ€su. JUPYTERLAB_DIR kasutaja keskkonnas jupyter, faili .bashrc, mis tĂ€idetakse iga kord, kui kasutaja sĂŒsteemi siseneb:

lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"

JÀrgmisel kÀsul installime spetsiaalse laienduse - laienduste halduri 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"

NĂŒĂŒd on kĂ”ik valmis esimeseks kĂ€ivitamiseks, JupyterLabaga saame installida veel mĂ”ned kasulikud laiendused:

  • toc — Sisukord, genereerib artiklis/notebookis pealkirjade loendi
  • jupyterlab-horizon-theme — UI kujundus
  • jupyterlab_neon_theme — UI kujundus
  • jupyterlab-ubu-theme — Veel ĂŒks kujundus autori poolt selle artikli 🙂 Kuid selles juhtumis nĂ€idatakse, et installimine toimub GitHubi kaudu.

Seega tÀitke jÀrjestikku jÀrgmised kÀsud, et installida need laiendused:

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"

PĂ€rast laienduste installimist peame need kompileerima, kuna varem, installimisel, mÀÀrasime vĂ”tme --no-build aega sÀÀsta. NĂŒĂŒd kiirendame oluliselt nende koos kompileerimist.

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"

NĂŒĂŒd tĂ€itke jĂ€rgmised kaks kĂ€sku esmakordseks kĂ€ivitamiseks. JupyterLabSeda oleks vĂ”imalik kĂ€ivitada ĂŒhe kĂ€suga, kuid sel juhul jÀÀb kĂ€ivitamise kĂ€sk, mida me mĂ”ttes hoiame, bash'i konteinerisse, mitte hostisse, kus kĂ€ske on juba piisavalt, et neid ajaloos salvestada 🙂

Logime end konteinerisse sisse kui kasutaja jupyter:

lxc exec jupyterlab -- su -l jupyter

JÀtkake koos JupyterLab vÔtmete ja parameetritega nagu on nÀidatud:

[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser

Avage veebibrauseris aadress http://10.0.5.5:8888 ja avanenud lehele sisestage token juurdepÀÀsu, mida nĂ€ete konsoolis. Kopeerige see ja kleepige lehele, seejĂ€rel klĂ”psake Logi sisse. PĂ€rast sisse logimist minge vasakpoolse menĂŒĂŒ laienditesse, nagu on nĂ€idatud alloleval pildil, kus teile pakutakse laiendihalduri aktiveerimisel vĂ”tta enda kanda turvariskid, installides kolmandate osapoolte laiendeid, mille eest JupyterLabi arendus ei vastuta:

KĂ€ivitame Jupyter LXD orbiidil

Kuid me isolatsioonime tĂ€ielikult JupyterLab ja paigutame selle konteinerisse, nii et kolmandad osapooled, kes vajavad ja kasutavad NodeJS-i, ei saaks vĂ€hemalt andmeid kettalt varastada, vĂ€lja arvatud need, mille me avame konteineri sees. Teie privaatsetele dokumentidele hostis /home konteinerist protsessidele ligipÀÀs tĂ”enĂ€oliselt ei Ă”nnestu, ja kui see juhtub, siis peavad selleks olema failide privileegid hostsĂŒsteemis, kuna me kĂ€ivitame konteineri privileegideta reĆŸiimis. Selle teabe pĂ”hjal vĂ”ite hinnata laiendite lubamise riski JupyterLab.

Loodud IPython-i notebukid (lehed JupyterLab) luuakse nĂŒĂŒd kasutaja kodu direktorisse — /home/jupyter, kuid meie plaanides on andmete jagamine (jagamine) hosti ja konteineri vahel, seega minge tagasi konsooli ja peatage JupyterLab kasutades kuumklahvi — CTRL+C ja vastates y pĂ€ringule. SeejĂ€rel katkestage kasutaja interaktiivne sessioon jupyter tehes kuumklahvi CTRL+D.

Andmete jagamine hostiga ^

Hostiga andmete jagamiseks tuleb konteinerisse luua seade, mis seda vÔimaldab ja selleks tÀitke jÀrgmine kÀsk, kus me mÀÀrame jÀrgmised vÔtmed:

  • lxc config device add — KĂ€sk lisab seadme konfiguratsiooni
  • jupyter — Konteinerite identifikaator, kuhu seadme konfiguratsioon lisatakse
  • hostfs — Seadmestiku identifikaator. VĂ”ite mÀÀrata mistahes nime.
  • disk — MÀÀratakse seadme tĂŒĂŒp
  • path — MÀÀratakse tee konteineris, kuhu LXD selle seadme monteerib
  • source — MÀÀrake allikas, tee katalooge hostis, mida soovite konteineriga jagada. MÀÀrake tee vastavalt oma eelistustele.
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Kataloogile /home/dv/projects/ipython-notebooks peab olema seatud konteineri kasutaja Ă”igused, kellel on praegu UID, mis on vĂ”rdne SubUID + UID, vaadake peatĂŒkki Turvalisus. Konteinerite Ă”igused artiklis LXD pĂ”hifunktsioonid — konteinerisĂŒsteem Linuxis.

SĂ€tet Ă”iguste hostis, kus konteineri kasutaja on omanik. jupyter, ja muutuja $USER mÀÀrab teie hosti kasutaja rĂŒhmaks:

sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks

Tere, maailm! ^

Kui teil on veel avatud konsooli sessioon konteineris koos JupyterLab, kĂ€ivitage see uuesti uue vĂ”tmega --notebook-dir mÀÀrates vÀÀrtuse /mnt/hostfs konteineri sĂŒgisel, mille me lĂ”ikes varem lĂ”ime:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

SeejĂ€rel minge lehele http://10.0.5.5:8888 ja looge oma esimene sĂŒlearvuti, klĂ”psates alloleval pildil nĂ€idatud nuppu:

KĂ€ivitame Jupyter LXD orbiidil

SeejĂ€rel sisestage lehe vĂ€lja Python koodi, mis vĂ€ljastab klassikalise Tere maailm!. Sisestamise lĂ”petamisel vajutage CTRL+ENTER vĂ”i nuppu „play” ĂŒlemise tööriistariba peal, et JupyterLab seda teeks:

KĂ€ivitame Jupyter LXD orbiidil

Peaaegu kĂ”ik on nĂŒĂŒd kasutamiseks valmis, kuid ei oleks huvitav, kui me ei installiks tĂ€iendavaid Python-mooduleid (tĂ€israkendusi), mis oluliselt laiendavad Python'i standardseid vĂ”imalusi JupyterLab, seega liigume edasi 🙂

P.S. Huvi pĂ€rast, vana versioon Jupyter koodinimega Jupyter Notebook ei ole kuskile kadunud ja see eksisteerib paralleelselt JupyterLab. Vanale versioonile ĂŒleminekuks minge lingile, lisades aadressile sufiksi/tree, ja uuele versioonile ĂŒleminek toimub sufiksiga /lab, kuid seda ei pea tingimata mÀÀrama:

Python'i vÔimaluste laiendamine ^

Selles jaotises installime vĂ”imsad Python'i moodulid, mille tulemused integreeritakse sĂŒlearvutitesse NumPy, Pandas, Matplotlib, IPyWidgets Enne kui installime ĂŒlaltoodud Python'i moodulid paketihalduri kaudu JupyterLab.

peame esmalt lubama sĂŒsteemi sĂ”ltuvused Alpine Linuxis: pip — Vajalik moodulite kompileerimiseks, kuna mĂ”ned neist on rakendatud keeles

  • g++ ja need ĂŒhendatakse Python'iga kĂ€itamisel kui binaarsed moodulid C++ freetype-dev
  • — sĂ”ltuvus Python mooduli jaoks lxc exec jupyterlab -- apk add g++ freetype-dev Matplotlib

Paigaldame sÔltuvused:

lxc exec jupyterlab -- apk add g++ freetype-dev

Alpine Linux'i praeguses versioonis on ĂŒks probleem, et uut NumPy versiooni ei Ă”nnestu kompileerida, ilmneb kompileerimisviga, mida mul ei Ă”nnestunud lahendada:

VIGA: Ei Ônnestunud luua wheel'e numpy jaoks, mis kasutavad PEP 517 ja mida ei saa otse installida

SeetĂ”ttu installime selle mooduli kui sĂŒsteemipaketi, mis sisaldab juba kompileeritud versiooni, kuid see on veidi vanem kui see, mis on praegu veebilehel saadaval:

lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev

SeejÀrel installime Python moodulid pakihalduri kaudu pip. Ole kannatlik, kuna mÔned moodulid kompileeritakse ja see vÔtab mitu minutit. Minu masinas vÔttis kompileerimine umbes 15 minutit:

lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib

Kustutame installatsioonide vahemÀed:

lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*

Moodulite testimine JupyterLab'is ^

Kui sul on kĂ€ivitamine JupyterLab, taaskĂ€ivita see, et uued installitud moodulid aktiveeruksid. Selle jaoks vajutage CTRL+C seal, kus see on kĂ€ivitatud ja sisestage y peatamise pĂ€ringule, ja siis kĂ€ivita uuesti JupyterLab vajutades klaviatuuril 'ĂŒles' noolt, et mitte kĂ€sku uuesti sisestada ja seejĂ€rel Enter et kĂ€ivitada:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

Mine lehele http://10.0.5.5:8888/lab vÔi vÀrskenda brauseris lehte, seejÀrel sisestage jÀrgmine kood uude mÀrkmiku lahtrisse:

%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

Sul peaks olema tulemuseks pilt allpool, kus IPyWidgets genereerib lehekĂŒlje UI-elemendi, mis toimub interaktiivselt algkoodiga, samuti Matplotlib vĂ€ljastab koodi tulemuse pildina nagu funktsiooni graafik:

KĂ€ivitame Jupyter LXD orbiidil

Palju nÀiteid IPyWidgets vÔid leida Ôpetustes siin

Mis veel? ^

Oled suurepĂ€rased, kui jĂ€id ja jĂ”udsid artikli lĂ”puni. Ma tahtsin teadlikult mitte jagada artikli lĂ”pus valmis skripti, mis installiks JupyterLab ĂŒhe klĂ”psuga, et julgustada töötajaid 🙂 Kuid sa saad seda ise teha, kuna juba tead, kuidas, kogudes kĂ€sud ĂŒheks Bash skriptiks 🙂

Samuti saad:

  • MÀÀrata konteineri jaoks vĂ”rgunime IP-aadressi asemel, kirjutades see lihtsasse /etc/hosts ja brauseris kirjutada aadress http://jupyter.local:8888
  • MĂ€ngida ressursi piirangutega konteineris, selle jaoks loe peatĂŒkki LXD pĂ”hilistes vĂ”imalustes vĂ”i saa rohkem teavet LXD arendaja veebilehelt.
  • Kujunda ĂŒmberkujundus:

KĂ€ivitame Jupyter LXD orbiidil

Ja palju muud saate! Sellega on kÔik. Soovin teile edu!

UUENDUS: 15.04.2020 18:30 — Parandasin vead peatĂŒkis „Tere, maailm!”
UUENDUS: 16.04.2020 10:00 — Kohandasin ja lisasin teksti laienduste halduri aktiveerimise kirjelduse juurde JupyterLab
UUENDUS: 16.04.2020 10:40 — Parandasin leitud vead tekstis ja muutsin natuke paremaks peatĂŒki „PĂ”hjaliku tarkvara installimine ja sĂŒsteemi seadistamine”

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster