Jupyter palaiŔana LXD orbītā

Vai jums kādreiz ir nācies eksperimentēt ar kodu vai sistēmas utilÄ«tprogrammām operētājsistēmā Linux, neuztraucoties par pamatā esoÅ”o sistēmu un nenojaucot visu, ja rodas kļūda kodā, kuram vajadzētu darboties ar root tiesÄ«bām?

Bet kā ir ar to, ka pieņemsim, ka vienā maŔīnā ir jāpārbauda vai jāpalaiž vesela dažādu mikropakalpojumu kopa? Simts vai pat tÅ«kstotis?

Ar virtuālajām maŔīnām, kuras pārvalda hipervizors, Ŕādas problēmas var un tiks atrisinātas, bet par kādu cenu? Piemēram, konteiners LXD, kura pamatā ir Alpine Linux izplatÄ«Å”ana, patērē tikai 7.60MB RAM un vieta, kur pēc palaiÅ”anas atrodas saknes nodalÄ«jums 9.5MB! Kā tev tas patÄ«k, ÄŖlons Masks? Iesaku pārbaudÄ«t pamata iespējas LXD - konteineru sistēma Linux

Pēc tam, kad kopumā kļuva skaidrs, kas ir LXD konteineri, dosimies tālāk un padomāsim, kā bÅ«tu, ja bÅ«tu tāda harvestera platforma, kurā varētu droÅ”i palaist resursdatora kodu, Ä£enerēt grafikus, dinamiski (interaktÄ«vi) saistÄ«t UI logrÄ«kus ar savu kodu, papildināt kodu ar tekstu ar blekdžeku... formatējumu? Kaut kāds interaktÄ«vs emuārs? Oho... es to gribu! Gribi! šŸ™‚

Paskaties zem kaÄ·a, kur mēs palaidÄ«sim konteinerā jupyter laboratorija - nākamās paaudzes lietotāja interfeiss novecojuŔā Jupyter piezÄ«mjdatora vietā, un mēs arÄ« instalēsim Python moduļus, piemēram, nejutÄ«gs, Pandas, matplotlib, IPyWidgets kas ļaus izdarÄ«t visu iepriekÅ” minēto un to visu saglabāt Ä«paŔā failā ā€“ IPython klēpjdatorā.

Jupyter palaiŔana LXD orbītā

Orbitālās pacelŔanās plāns ^

Jupyter palaiŔana LXD orbītā

Ieskicēsim Ä«su rÄ«cÄ«bas plānu, lai mums bÅ«tu vieglāk Ä«stenot iepriekÅ” minēto shēmu:

  • Instalēsim un palaidÄ«sim konteineru, pamatojoties uz izplatÄ«Å”anas komplektu Alpine Linux. Mēs izmantosim Å”o izplatÄ«Å”anu, jo tas ir vērsts uz minimālismu un tajā instalēs tikai paÅ”u nepiecieÅ”amāko programmatÅ«ru, nekas nav lieks.
  • Pievienosim konteinerā papildu virtuālo disku un pieŔķirsim tam nosaukumu - hostfs un pievienojiet to saknes failu sistēmai. Å is disks ļaus izmantot resursdatorā esoÅ”os failus no dotā direktorija konteinera iekÅ”pusē. Tādējādi mÅ«su dati bÅ«s neatkarÄ«gi no konteinera. Ja konteiners tiek dzēsts, dati paliks resursdatorā. Å Ä« shēma ir noderÄ«ga arÄ« to paÅ”u datu koplietoÅ”anai starp daudziem konteineriem, neizmantojot konteineru izplatÄ«Å”anas standarta tÄ«kla mehānismus.
  • Instalēsim Bash, sudo, nepiecieÅ”amās bibliotēkas, pievienosim un konfigurēsim sistēmas lietotāju
  • Instalēsim Python, moduļus un apkoposim tiem binārās atkarÄ«bas
  • Instalēsim un palaidÄ«sim jupyter laboratorija, pielāgojiet izskatu, instalējiet tam paplaÅ”inājumus.

Å ajā rakstā mēs sāksim ar konteinera palaiÅ”anu, mēs neapsvērsim LXD instalÄ“Å”anu un konfigurÄ“Å”anu, to visu varat atrast citā rakstā - LXD - Linux konteineru sistēmu pamatfunkcijas.

Pamatsistēmas uzstādÄ«Å”ana un konfigurÄ“Å”ana ^

Mēs izveidojam konteineru ar komandu, kurā norādām attēlu - alpine3, konteinera identifikators - jupyterlab un, ja nepiecieÅ”ams, konfigurācijas profili:

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

Šeit es izmantoju konfigurācijas profilu hddroot kas nosaka izveidot konteineru ar saknes nodalījumu UzglabāŔanas baseins atrodas fiziskajā HDD diskā:

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

Tas dod man iespēju eksperimentēt ar konteineriem HDD diskā, ietaupot SSD diska resursus, kas ir pieejams arÄ« manā sistēmā šŸ™‚ kuram esmu izveidojis atseviŔķu konfigurācijas profilu ssdroot.

Pēc konteinera izveides tas ir stāvoklī STOPPED, tāpēc mums tas jāsāk, palaižot tajā init sistēmu:

lxc start jupyterlab

Parādīsim konteineru sarakstu LXD, izmantojot taustiņu -c kas norāda uz kuru ckolonnu displejs:

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

Veidojot konteineru, IP adrese tika izvēlēta nejauÅ”i, jo mēs izmantojām konfigurācijas profilu default kas iepriekÅ” tika konfigurēts rakstā LXD - Linux konteineru sistēmu pamatfunkcijas.

Mēs mainÄ«sim Å”o IP adresi uz neaizmirstamāku, izveidojot tÄ«kla saskarni konteinera lÄ«menÄ«, nevis konfigurācijas profila lÄ«menÄ«, kā tas tagad ir paÅ”reizējā konfigurācijā. Jums tas nav jādara, varat to izlaist.

TÄ«kla interfeisa izveide eth0 kuru mēs saistām ar slēdzi (tÄ«kla tilts) lxdbr0 kurā mēs iespējojām NAT saskaņā ar iepriekŔējo rakstu, un konteineram tagad bÅ«s piekļuve internetam, kā arÄ« interfeisam pieŔķiram statisku IP adresi - 10.0.5.5:

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

Pēc ierÄ«ces pievienoÅ”anas konteiners ir jāpārstartē:

lxc restart jupyterlab

Konteinera statusa pārbaude:

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

PamatprogrammatÅ«ras instalÄ“Å”ana un sistēmas iestatÄ«Å”ana ^

Lai administrētu mÅ«su konteineru, jums jāinstalē Ŕāda programmatÅ«ra:

Pakete
Apraksts

stipri iesist
GNU Bourne Again apvalks

bash-pabeigŔana
Programmējama bash čaulas pabeigÅ”ana

sudo
Dodiet dažiem lietotājiem iespēju palaist dažas komandas kā root

ēna
Paroles un konta pārvaldības rīku komplekts ar atbalstu ēnu failiem un PAM

tzdata
Laika joslas un vasaras laika datu avoti

nano
Pico redaktora klons ar uzlabojumiem

Turklāt jÅ«s varat instalēt atbalstu sistēmas man-lapās, instalējot Ŕādas pakotnes āˆ’ man man-pages mdocml-apropos less

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

Apskatīsim izmantotās komandas un taustiņus:

  • lxc ā€” Zvaniet LXD klientam
  • exec - LXD klienta metode, kas palaiž komandu konteinerā
  • jupyterlab ā€” Konteinera ID
  • -- - ÄŖpaÅ”a atslēga, kas nosaka turpmākās atslēgas neinterpretēt kā atslēgas priekÅ” lxc un nodot pārējo virkni, kā tas ir konteinerā
  • apk ā€” Alpine Linux izplatÄ«Å”anas pakotņu pārvaldnieks
  • add ā€” pakotņu pārvaldnieka metode, kas instalē pakotnes, kas norādÄ«tas pēc komandas

Tālāk mēs sistēmā iestatīsim laika joslu Europe/Moscow:

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

Pēc laika joslas instalÄ“Å”anas pakotne tzdata sistēmā vairs nav nepiecieÅ”ams, tas aizņems vietu, tāpēc izdzēsÄ«sim to:

lxc exec jupyterlab -- apk del tzdata

Laika joslas pārbaude:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Lai netērētu daudz laika, iestatot Bash jaunajiem lietotājiem konteinerā, turpmākajās darbÄ«bās no resursdatora sistēmas uz to kopēsim gatavus skel failus. Tas ļaus interaktÄ«vi izrotāt BaÅ”u konteinerā. Mana resursdatora sistēma ir Manjaro Linux, un faili tiek kopēti /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors principā tie ir piemēroti Alpine Linux un nerada kritiskas problēmas, taču jums var bÅ«t atŔķirÄ«gs sadalÄ«jums, un jums ir patstāvÄ«gi jānoskaidro, vai, palaižot Bash konteinerā, ir radusies kļūda.

Kopējiet skel failus konteinerā. Atslēga --create-dirs izveidos nepiecieÅ”amos direktorijus, ja tie neeksistē:

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

EsoÅ”am root lietotājam kopējiet skel failus, kas tikko iekopēti konteinerā, uz mājas direktoriju:

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 instalē lietotājiem sistēmas apvalku /bin/sh, mēs to aizstāsim ar root lietotājs Bash:

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

Ka root lietotājs nebija bezparoles, viņam jāiestata parole. Å Ä« komanda Ä£enerēs un iestatÄ«s viņam jaunu nejauÅ”u paroli, kuru pēc tās izpildes redzēsit konsoles ekrānā:

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

Tāpat izveidosim jaunu sistēmas lietotāju - jupyter kuru mēs konfigurēsim vēlāk jupyter laboratorija:

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

Izveidosim un iestatīsim tam paroli:

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

Tālāk mēs izpildīsim divas komandas, no kurām pirmā izveidos sistēmas grupu sudo, un otrais tam pievienos lietotāju jupyter:

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

Apskatīsim, kurām grupām lietotājs pieder jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Viss kārtībā, ejam tālāk.

Atļaut visiem lietotājiem, kas ir grupas dalÄ«bnieki sudo izmantot komandu sudo. Lai to izdarÄ«tu, palaidiet Ŕādu skriptu, kur sed atceļ parametru rindiņas komentārus konfigurācijas failā /etc/sudoers:

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

JupyterLab instalēŔana un konfigurēŔana ^

jupyter laboratorija ir Python lietojumprogramma, tāpēc mums vispirms ir jāinstalē Å”is tulks. Tāpat jupyter laboratorija mēs instalēsim, izmantojot Python pakotņu pārvaldnieku pip, nevis sistēmas, jo tas var bÅ«t novecojis sistēmas repozitorijā, un tāpēc mums ir manuāli jāatrisina tās atkarÄ«bas, instalējot Ŕādas pakotnes - python3 python3-dev gcc libc-dev zeromq-dev:

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

Atjaunināsim python moduļus un pakotņu pārvaldnieku pip uz paÅ”reizējo versiju:

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

Komplekts jupyter laboratorija caur pakotņu pārvaldnieku pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

KopÅ” paplaÅ”inājumiem jupyter laboratorija ir eksperimentāli un netiek oficiāli piegādāti kopā ar jupyterlab pakotni, tāpēc mums tā ir jāinstalē un jākonfigurē manuāli.

Instalēsim NodeJS un tam paredzēto pakotņu pārvaldnieku - NPM, kopÅ” jupyter laboratorija izmanto tos saviem paplaÅ”inājumiem:

lxc exec jupyterlab -- apk add nodejs npm

Uz paplaÅ”inājumiem for jupyter laboratorija kurus mēs instalēsim, tie ir jāinstalē lietotāja direktorijā, jo lietojumprogramma tiks palaista no lietotāja jupyter. Problēma ir tāda, ka palaiÅ”anas komandā nav parametru, ko varētu nodot direktorijai; lietojumprogramma pieņem tikai vides mainÄ«go, un tāpēc mums tas ir jādefinē. Lai to izdarÄ«tu, mēs uzrakstÄ«sim mainÄ«gā eksporta komandu JUPYTERLAB_DIR lietotāja vidē jupyter, uz failu .bashrckas tiek izpildÄ«ts katru reizi, kad lietotājs piesakās:

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

Nākamā komanda instalēs Ä«paÅ”u paplaÅ”inājumu - paplaÅ”inājumu pārvaldnieku jupyter laboratorija:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"

Tagad viss ir gatavs pirmajai palaiÅ”anai jupyter laboratorija, taču mēs joprojām varam instalēt dažus noderÄ«gus paplaÅ”inājumus:

  • toc ā€” Satura rādÄ«tājs, Ä£enerē raksta/piezÄ«mju grāmatiņas virsrakstu sarakstu
  • jupyterlab-horizon-theme ā€” UI tēma
  • jupyterlab_neon_theme ā€” UI tēma
  • jupyterlab-ubu-theme - Vēl viens tēma no autora Å”o rakstu :) Bet Å”ajā gadÄ«jumā tiks rādÄ«ta instalācija no GitHub repozitorija

Tātad, lai instalētu Å”os paplaÅ”inājumus, secÄ«gi palaidiet Ŕādas komandas:

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ēc paplaÅ”inājumu instalÄ“Å”anas mums tie ir jāapkopo, jo iepriekÅ” instalÄ“Å”anas laikā mēs norādÄ«jām atslēgu --no-build lai ietaupÄ«tu laiku. Tagad mēs ievērojami paātrināsim, apkopojot tos kopā vienā piegājienā:

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

Tagad palaidiet Ŕīs divas komandas, lai to palaistu pirmo reizi jupyter laboratorija. To varētu palaist ar vienu komandu, taču Å”ajā gadÄ«jumā palaiÅ”anas komandu, kuru prātā grÅ«ti atcerēties, atcerēsies bash konteinerā, nevis resursdatorā, kur komandu jau ir pietiekami daudz. ierakstÄ«t tos vēsturē :)

Piesakieties konteinerā kā lietotājs jupyter:

lxc exec jupyterlab -- su -l jupyter

Tālāk, skrien jupyter laboratorija ar taustiņiem un parametriem, kā norādīts:

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

Pārejiet uz adresi savā tÄ«mekļa pārlÅ«kprogrammā http://10.0.5.5:8888 un atvērtajā lapā ievadiet žetons piekļuvi, ko redzēsit konsolē. Kopējiet un ielÄ«mējiet to lapā, pēc tam noklikŔķiniet uz Pieslēgties. Pēc pieteikÅ”anās dodieties uz paplaÅ”inājumu izvēlni kreisajā pusē, kā parādÄ«ts attēlā zemāk, kur, aktivizējot paplaÅ”inājumu pārvaldnieku, jums tiks piedāvāts uzņemties droŔības risku, instalējot treÅ”o puÅ”u paplaÅ”inājumus, kuriem tiek veikta komanda JupyterLab izstrāde nav atbildÄ«gs:

Jupyter palaiŔana LXD orbītā

Tomēr mēs izolējam visu jupyter laboratorija un ievietojiet to konteinerā, lai treÅ”o puÅ”u paplaÅ”inājumi, kuriem nepiecieÅ”ams un izmanto NodeJS, nevarētu vismaz nozagt datus diskā, izņemot tos, kurus mēs atveram konteinerā. Piekļūstiet saviem privātajiem dokumentiem resursdatorā /home procesi no konteinera, visticamāk, neizdosies, un, ja tā izdodas, jums ir jābÅ«t privilēģijām uz failiem resursdatora sistēmā, jo mēs palaižam konteineru nepievilcÄ«gs režīms. Pamatojoties uz Å”o informāciju, varat novērtēt paplaÅ”inājumu iekļauÅ”anas risku jupyter laboratorija.

Izveidotas IPython piezÄ«mju grāmatiņas (lapas iekŔā jupyter laboratorija) tagad tiks izveidots lietotāja mājas direktorijā - /home/jupyter, taču mÅ«su plāni ir sadalÄ«t datus (koplietot) starp resursdatoru un konteineru, tāpēc atgriezieties konsolē un pārtraucam jupyter laboratorija izpildot karsto taustiņu - CTRL+C un atbildot y pēc pieprasÄ«juma. Pēc tam pārtrauciet lietotāja interaktÄ«vo sesiju jupyter aizpildot karsto taustiņu CTRL+D.

Datu koplietoŔana ar saimniekdatoru ^

Lai koplietotu datus ar resursdatoru, konteinerā ir jāizveido ierÄ«ce, kas ļauj to izdarÄ«t, un, lai to izdarÄ«tu, palaidiet Ŕādu komandu, kurā norādām Ŕādas atslēgas:

  • lxc config device add ā€” komanda pievieno ierÄ«ces konfigurāciju
  • jupyter ā€” konteinera ID, kuram pievienota konfigurācija
  • hostfs ā€” IerÄ«ces ID. Varat iestatÄ«t jebkuru nosaukumu.
  • disk ā€” Ir norādÄ«ts ierÄ«ces veids
  • path ā€” norāda ceļu konteinerā, kuram LXD pievienos Å”o ierÄ«ci
  • source ā€” Norādiet avotu, ceļu uz resursdatora direktoriju, kuru vēlaties koplietot ar konteineru. Norādiet ceļu atbilstoÅ”i savām vēlmēm
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Par katalogu /home/dv/projects/ipython-notebooks atļauja ir jāiestata konteinera lietotājam, kuram paÅ”laik ir vienāds ar UID SubUID + UID, skatiet nodaļu DroŔība. Konteinera privilēģijas rakstā LXD - Linux konteineru sistēmu pamatfunkcijas.

Iestatiet resursdatora atļauju, kur īpaŔnieks būs konteinera lietotājs jupyter, un mainīgais $USER norādīs jūsu resursdatora lietotāju kā grupu:

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

Sveika pasaule! ^

Ja jums joprojām ir atvērta konsoles sesija konteinerā ar jupyter laboratorija, pēc tam restartējiet to ar jaunu atslēgu --notebook-dir iestatot vērtÄ«bu /mnt/hostfs kā ceļŔ uz klēpjdatoru sakni ierÄ«ces konteinerā, kuru izveidojām iepriekŔējā darbÄ«bā:

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

Pēc tam dodieties uz lapu http://10.0.5.5:8888 un izveidojiet savu pirmo klēpjdatoru, noklikŔķinot uz pogas lapā, kā parādÄ«ts attēlā zemāk:

Jupyter palaiŔana LXD orbītā

Pēc tam lapas laukā ievadiet Python kodu, kas parādÄ«s klasisko Hello World!. Kad esat pabeidzis ievadÄ«Å”anu, nospiediet CTRL+ENTER vai pogu "Atskaņot" rÄ«kjoslā augÅ”pusē, lai JupyterLab veiktu Ŕādas darbÄ«bas:

Jupyter palaiŔana LXD orbītā

Å obrÄ«d gandrÄ«z viss ir gatavs lietoÅ”anai, taču bÅ«s neinteresanti, ja mēs neinstalēsim papildu Python moduļus (pilnvērtÄ«gas lietojumprogrammas), kas var ievērojami paplaÅ”ināt Python standarta iespējas jupyter laboratorija, tāpēc ejam tālāk :)

P.S. Interesanti ir tas, ka vecā ievieÅ”ana Jupters zem koda nosaukuma Jupyter piezÄ«mju grāmatiņa nav pazudis un pastāv paralēli jupyter laboratorija. Lai pārslēgtos uz veco versiju, sekojiet saitei, pievienojot adresē sufiksu/tree, un pāreja uz jauno versiju tiek veikta ar sufiksu /lab, bet tas nav jānorāda:

Python iespēju paplaÅ”ināŔana ^

Šajā sadaļā mēs instalēsim tādus jaudīgus Python valodas moduļus kā nejutīgs, Pandas, matplotlib, IPyWidgets kuru rezultāti tiek integrēti klēpjdatoros jupyter laboratorija.

Pirms uzskaitÄ«to Python moduļu instalÄ“Å”anas, izmantojot pakotņu pārvaldnieku pip vispirms mums ir jāatrisina sistēmas atkarÄ«bas Alpine Linux:

  • g++ ā€” NepiecieÅ”ams moduļu kompilÄ“Å”anai, jo daži no tiem ir ieviesti valodā C + + un izveidojiet savienojumu ar Python izpildlaikā kā bināri moduļi
  • freetype-dev - atkarÄ«ba no Python moduļa matplotlib

Atkarību instalēŔana:

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

Ir viena problēma: paÅ”reizējā Alpine Linux izplatÄ«Å”anas stāvoklÄ« nebÅ«s iespējams apkopot jauno NumPy versiju; parādÄ«sies kompilācijas kļūda, kuru nevarēju novērst:

KÄ»ÅŖDA: Nevar izveidot riteņus, kas izmanto PEP 517 un kurus nevar uzstādÄ«t tieÅ”i

Tāpēc mēs instalēsim Å”o moduli kā sistēmas pakotni, kas izplata jau kompilētu versiju, bet nedaudz vecāku par to, kas paÅ”laik ir pieejama vietnē:

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

Pēc tam instalējiet Python moduļus, izmantojot pakotņu pārvaldnieku pip. LÅ«dzu, esiet pacietÄ«gs, jo daži moduļi tiks apkopoti un var aizņemt dažas minÅ«tes. Manā maŔīnā kompilācija aizņēma ~15 minÅ«tes:

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

Instalācijas keÅ”atmiņas notÄ«rÄ«Å”ana:

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

Moduļu testÄ“Å”ana programmā JupyterLab ^

Ja jÅ«s skrienat jupyter laboratorija, restartējiet to, lai tiktu aktivizēti tikko instalētie moduļi. Lai to izdarÄ«tu, konsoles sesijā noklikŔķiniet uz CTRL+C kur tas darbojas, un ievadiet y lai apturētu pieprasÄ«jumu un pēc tam sāktu no jauna jupyter laboratorija nospiežot tastatÅ«ras augÅ”upvērsto bultiņu, lai neievadÄ«tu komandu vēlreiz un pēc tam Enter lai to sāktu:

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

Dodieties uz lapu http://10.0.5.5:8888/lab vai atsvaidziniet lapu savā pārlÅ«kprogrammā un pēc tam ievadiet Ŕādu kodu jaunā piezÄ«mju grāmatiņas Ŕūnā:

%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

Jums vajadzētu iegūt rezultātu, piemēram, attēlā zemāk, kur IPyWidgets ģenerē UI elementu lapā, kas interaktīvi mijiedarbojas ar avota kodu, kā arī matplotlib parāda koda rezultātu attēla veidā kā funkciju grafiku:

Jupyter palaiŔana LXD orbītā

Daudz piemēru IPyWidgets to var atrast pamācÄ«bās Å”eit

Kas vēl? ^

Labi darÄ«ts, ja palikāt un sasniedzāt paÅ”as raksta beigas. Es apzināti neievietoju raksta beigās gatavu skriptu, kas instalētu jupyter laboratorija ar ā€œvienu klikŔķiā€, lai iedroÅ”inātu strādniekus :) Bet jÅ«s to varat izdarÄ«t pats, jo jÅ«s jau zināt, kā, apkopojot komandas vienā Bash skriptā :)

Jūs varat arī:

  • Iestatiet konteineram tÄ«kla nosaukumu, nevis IP adresi, ierakstot to vienkārŔā veidā /etc/hosts un pārlÅ«kprogrammā ierakstiet adresi http://jupyter.local:8888
  • Apskatiet konteinera resursu ierobežojumu, lai to uzzinātu, izlasiet nodaļu pamata LXD iespējas vai iegÅ«stiet vairāk informācijas LXD izstrādātāju vietnē.
  • Mainiet tēmu:

Jupyter palaiŔana LXD orbītā

Un vēl daudz vairāk jūs varat darīt! Tas ir viss. Es novēlu jums panākumus!

ATJAUNINĀJUMS: 15.04.2020 18:30 - Izlabotas kļūdas sadaļā ā€œSveika, pasaule!ā€
ATJAUNINĀJUMS: 16.04.2020 10:00 ā€” Izlabots un pievienots teksts paplaÅ”inājumu pārvaldnieka aktivizācijas aprakstā jupyter laboratorija
ATJAUNINĀJUMS: 16.04.2020 10:40 ā€” Tekstā atrastas izlabotas kļūdas un nedaudz izmainÄ«tas uz labo pusi nodaļā ā€œPamata programmatÅ«ras instalÄ“Å”ana un sistēmas iestatÄ«Å”anaā€

Avots: www.habr.com

Pievieno komentāru