Destpêkirina Jupyter li orbita LXD

Ma we carî neçar ma ku di Linux-ê de kod an karûbarên pergalê biceribînin da ku hûn ji pergala bingehîn xeman nebin û di bûyera xeletiyek kodê de ku divê bi îmtiyazên root ve were xebitandin de her tiştî hilweşînin?

Lê li ser vê yekê ku em bibêjin hûn hewce ne ku li ser yek makîneyek komek mîkroxizmetên cihêreng ceribandin an bimeşînin çi ye? Sed an jî hezar?

Bi makîneyên virtual ku ji hêla hypervisor ve têne rêve kirin, pirsgirêkên weha dikarin û dê bêne çareser kirin, lê bi çi lêçûn? Mînakî, konteynirek di LXD de ku li ser bingeha belavkirina Alpine Linux-ê ye, tenê dixwe 7.60MB RAM, û cihê ku dabeşkirina root piştî destpêkirinê dagir dike 9.5MB! Tu çawa jê hez dikî, Elon Musk? Ez pêşniyar dikim ku kontrol bikin kapasîteyên bingehîn ên LXD - pergalek konteynerê di Linux de

Piştî ku bi gelemperî eşkere bû ku konteynerên LXD çi ne, em pêşde biçin û bifikirin, ma heke platformek berhevkarek wusa hebûya ku hûn bi ewlehî kodê ji bo mêvandar bişopînin, grafîkan biafirînin, bi dînamîk (înteraktîf) widgetên UI-yê bi koda xwe ve girêdin, koda bi nivîsê bi blackjackê ve zêde bike... formatkirin? Hin cûreyek blogek înteraktîf? Wow ... ez dixwazim! Xwestin! 🙂

Li binê pisîka ku em ê di konteynirê de biavêjin binêre laboratûara jupyter - Li şûna Jupyter Notebook-ya kevnar, nifşa paşîn a navbeynkariya bikarhêner, û em ê modulên Python-ê jî saz bikin. numpy, pandas, matplotlib, IPyWidgets ku dê dihêle hûn her tiştê ku li jor hatî destnîşan kirin bikin û hemî di pelek taybetî de hilînin - laptopek IPython.

Destpêkirina Jupyter li orbita LXD

Plana avêtina orbital ^

Destpêkirina Jupyter li orbita LXD

Werin em plansaziyek çalakiyê ya kurt diyar bikin da ku ji me re pêkanîna pilana jorîn hêsantir bike:

  • Ka em li ser bingeha kîtê belavkirinê konteynir saz bikin û bidin destpêkirin Alpine Linux. Em ê vê belavkirinê bikar bînin ji ber ku ew bi mînîmalîzmê ve tê armanc kirin û dê tenê nermalava herî pêwîst tê de saz bike, ne tiştek zêde.
  • Ka em di konteynerê de dîskek virtual ya din lê zêde bikin û navek lê bidin - hostfs û wê li pergala pelê root-ê siwar bikin. Ev dîsk dê gengaz bike ku hûn pelên li ser mêvandarê ji pelrêça diyarkirî di hundurê konteynerê de bikar bînin. Bi vî rengî, daneyên me dê ji konteynerê serbixwe bin. Ger konteynir were jêbirin, dê data li ser mêvandar bimîne. Di heman demê de, ev nexşe ji bo parvekirina heman daneyan di navbera gelek konteyneran de bêyî karanîna mekanîzmayên torê yên standard ên belavkirina konteyneran bikêr e.
  • Ka em Bash, sudo, pirtûkxaneyên pêwîst saz bikin, bikarhênerek pergalê lê zêde bikin û mîheng bikin
  • Ka em Python, modulan saz bikin û ji wan re girêdayiyên binary berhev bikin
  • Werin em saz bikin û bidin destpêkirin laboratûara jupyter, xuyangê xweş bikin, ji bo wê pêvekan saz bikin.

Di vê gotarê de em ê bi destpêkirina konteynerê dest pê bikin, em ê sazkirin û mîhengkirina LXD-ê nehesibînin, hûn dikarin van hemî di gotarek din de bibînin - Taybetmendiyên bingehîn ên LXD - pergalên konteynerê Linux.

Sazkirin û veavakirina pergala bingehîn ^

Em bi fermana ku em tê de wêneyê destnîşan dikin konteynirek diafirînin - alpine3, nasnavê konteynerê - jupyterlab û, heke hewce be, profîlên vesazkirinê:

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

Li vir ez profîlek veavakirinê bikar tînim hddroot ku diyar dike ku konteynerek bi dabeşek root tê de çêbikin Storage Pool li ser dîskek HDD-ya fîzîkî ye:

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

Ev fersendê dide min ku ez bi konteynerên li ser dîska HDD-ê biceribînim, çavkaniyên dîska SSD-ê, ku di pergala min de jî heye, hilîne 🙂 ji bo ku min profîlek veavakirinê ya cihêreng çêkiriye. ssdroot.

Piştî ku konteynir tê çêkirin, ew di dewletê de ye STOPPED, ji ber vê yekê divê em wê bi xebitandina pergala destpêkê ya tê de dest pê bikin:

lxc start jupyterlab

Ka em bi karanîna mifteyê navnîşek konteynerên di LXD de nîşan bidin -c ku nîşan dide ku cnîşana stûnan:

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

Dema ku konteynerê diafirîne, ji ber ku me profîlek vesazkirinê bikar anî, navnîşana IP-yê bi rengek bêserûber hate hilbijartin default ku berê di gotarê de hate mîheng kirin Taybetmendiyên bingehîn ên LXD - pergalên konteynerê Linux.

Em ê vê navnîşana IP-yê biguhezînin navnîşek bîranînek bêtir bi afirandina navgînek torê di asta konteynerê de, û ne di asta profîla veavakirinê de wekî ku naha di veavakirina heyî de ye. Hûn ne hewce ne ku hûn vê yekê bikin, hûn dikarin jê berdin.

Afirandina pêwendiya torê eth0 ku em bi veguheztinê ve girêdidin (pira torê) lxdbr0 ku tê de me NAT li gorî gotara berê çalak kir û konteynir dê naha bigihîje Înternetê, û em di heman demê de navnîşanek IP-ya statîk jî ji navbeynê re destnîşan dikin - 10.0.5.5:

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

Piştî lê zêdekirina amûrek, konteynir divê ji nû ve were destpêkirin:

lxc restart jupyterlab

Kontrolkirina rewşa konteynerê:

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

Sazkirina nermalava bingehîn û sazkirina pergalê ^

Ji bo birêvebirina konteynera me, hûn hewce ne ku nermalava jêrîn saz bikin:

Pakêt
Terîf

bash
Şela GNU Bourne Again

bash-temamkirin
Temamkirina bernamekirî ji bo şêlê bash

sudo
Kapasîteya hin bikarhêneran bidin ku hin fermanan wekî root bimeşînin


Komîteya amûra rêveberiya şîfre û hesabê bi piştgirîya pelên siya û PAM-ê

tzdata
Çavkaniyên ji bo daneyên demjimêra demjimêr û ronahiya rojê

nano
Edîtorê Pico bi pêşkeftinan re klon dike

Wekî din, hûn dikarin bi sazkirina pakêtên jêrîn piştgirî di rûpelên mirov-pergalê de saz bikin - man man-pages mdocml-apropos less

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

Ka em li ferman û mifteyên ku me bikar anîne binêrin:

  • lxc - Gazî xerîdar LXD bikin
  • exec - Rêbaza xerîdar LXD ku di konteynerê de fermanek dimeşîne
  • jupyterlab - Nasnameya konteynerê
  • -- - Mifteyek taybetî ya ku diyar dike ku bişkokên din wekî mifteyên ji bo şîrove nekin lxc û têlê mayî jî wek konteynerê derbas bikin
  • apk - Rêvebirê pakêta belavkirina Alpine Linux
  • add - Rêbazek rêveberê pakêtê ku pakêtên ku piştî fermanê hatine destnîşan kirin saz dike

Dûv re, em ê di pergalê de herêmek demjimêrê saz bikin Europe/Moscow:

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

Piştî sazkirina qada demjimêr, pakêtê tzdata êdî di pergalê de ne hewce ye, ew ê cîh bigire, ji ber vê yekê em jêbirin:

lxc exec jupyterlab -- apk del tzdata

Kontrolkirina devera demjimêr:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Ji bo ku hûn gelek dem nexebitin ji bo sazkirina Bash-ê ji bo bikarhênerên nû di konteynerê de, di gavên jêrîn de em ê pelên skelê yên amade ji pergala mêvandar li wê kopî bikin. Ev ê bihêle ku hûn Bash di konteynerek bi înteraktîf xweş bikin. Pergala mêvandarê min Manjaro Linux e û pelên ku têne kopî kirin /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors di prensîbê de ew ji bo Alpine Linux-ê maqûl in û nabin sedema pirsgirêkên krîtîk, lê dibe ku we dabeşek cûda hebe û hûn hewce ne ku bi serbixwe fêhm bikin ka gava ku Bash di konteynerê de dimeşîne gelo xeletiyek heye.

Pelên skelê li konteynerê kopî bikin. Qûfle --create-dirs heke ew nebin dê pelrêktorên pêwîst biafirînin:

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

Ji bo bikarhênerek root ya heyî, pelên skel ên ku tenê di konteynerê de li pelrêça malê hatine kopî kirin:

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 ji bo bikarhêneran şêlek pergalê saz dike /bin/sh, em ê bi şûna wê root bikarhêner li Bash:

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

ku root bikarhêner ne bê şîfre bû, pêdivî ye ku ew şîfreyek destnîşan bike. Fermana jêrîn dê ji bo wî şîfreyek nû ya rasthatî çêbike û saz bike, ku hûn ê piştî darvekirina wê li ser ekrana konsolê bibînin:

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

Di heman demê de, werin em bikarhênerek pergalê nû biafirînin - jupyter ji bo ku em ê paşê mîheng bikin laboratûara jupyter:

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

Ka em jê re şîfreyek çêbikin û saz bikin:

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

Piştre, em ê du fermanan bicîh bikin, ya yekem dê komek pergalê biafirîne sudo, û ya duyemîn dê bikarhênerek lê zêde bike jupyter:

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

Ka em bibînin ka bikarhêner ji kîjan koman e jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Her tişt baş e, em biçin.

Destûrê bide hemî bikarhênerên ku endamên komê ne sudo fermanê bikar bînin sudo. Ji bo vê yekê, skrîpta jêrîn bimeşînin, li ku derê sed rêzika parametreyê di pelê veavakirinê de şîrove dike /etc/sudoers:

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

Sazkirin û mîhengkirina JupyterLab ^

laboratûara jupyter sepanek Python e, ji ber vê yekê divê em pêşî vê wergêr saz bikin. Jî, laboratûara jupyter em ê bi karanîna rêveberê pakêtê Python saz bikin pip, û ne ya pergalê, ji ber ku dibe ku ew di depoya pergalê de kevnar be û ji ber vê yekê, pêdivî ye ku em bi sazkirina pakêtên jêrîn ve girêdayîbûna wê bi destan çareser bikin - python3 python3-dev gcc libc-dev zeromq-dev:

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

Ka em modulên python û rêveberê pakêtê nûve bikin pip ji bo guhertoya heyî:

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

Lêkirin laboratûara jupyter bi rêya rêveberê pakêtê pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Ji ber ku dirêjkirin di laboratûara jupyter ceribandinî ne û bi fermî bi pakêta jupyterlab re nayên şandin, ji ber vê yekê divê em wê bi destan saz bikin û mîheng bikin.

Ka em NodeJS û rêveberê pakêtê ji bo wê saz bikin - NPM, ji ber laboratûara jupyter wan ji bo dirêjkirina xwe bikar tîne:

lxc exec jupyterlab -- apk add nodejs npm

Ji bo dirêjkirinên ji bo laboratûara jupyter ku em ê saz bikin xebitîn, ew hewce ne ku di pelrêça bikarhêner de werin saz kirin ji ber ku serîlêdan dê ji bikarhêner were destpêkirin jupyter. Pirsgirêk ev e ku di fermana destpêkirinê de pîvanek tune ku dikare ji pelrêçekê re were derbas kirin; serîlêdan tenê guhêrbarek jîngehê qebûl dike û ji ber vê yekê divê em wê diyar bikin. Ji bo vê yekê, em ê fermana hinardekirina guhêrbar binivîsin JUPYTERLAB_DIR di hawîrdora bikarhêner de jupyter, pelê .bashrcku her carê ku bikarhêner têkeve tê darve kirin:

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

Fermana paşîn dê pêvekek taybetî saz bike - rêveberê dirêjkirinê tê de laboratûara jupyter:

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

Niha her tişt ji bo destpêkirina yekem amade ye laboratûara jupyter, lê dîsa jî em dikarin çend pêvekên kêrhatî saz bikin:

  • toc - Tabloya naverokê, di gotarek/defterê de navnîşek sernavan çêdike
  • jupyterlab-horizon-theme - Mijara UI
  • jupyterlab_neon_theme - Mijara UI
  • jupyterlab-ubu-theme - Yeka din mijar ji nivîskar vê gotarê :) Lê di vê rewşê de, sazkirina ji depoya GitHub dê were xuyang kirin

Ji ber vê yekê, emrên jêrîn bi rêzdarî bimeşînin da ku van pêvekan saz bikin:

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"

Piştî sazkirina pêvekan, divê em wan berhev bikin, ji ber ku berê, di dema sazkirinê de, me mifteyê diyar kir --no-build ji bo ku dem xilas bike. Naha em ê bi berhevkirina wan di yek gavê de bi girîngî bilezînin:

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

Naha du fermanên jêrîn bimeşînin da ku ew yekem car bimeşînin laboratûara jupyter. Dê mimkun be ku ew bi yek fermanê were destpêkirin, lê di vê rewşê de, fermana destpêkirinê, ku di hişê we de bibîranîn dijwar e, dê bi bashê di konteynerê de, û ne li ser mêvandarê, ku jixwe têr ferman hene, were bîranîn. ku wan di dîrokê de tomar bike :)

Wekî bikarhêner têkevin konteynerê jupyter:

lxc exec jupyterlab -- su -l jupyter

Piştre, birevin laboratûara jupyter bi kilît û pîvanên ku têne destnîşan kirin:

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

Herin navnîşana geroka xweya webê http://10.0.5.5:8888 û li ser rûpela ku vedibe bikeve token gihîştina ku hûn ê di konsolê de bibînin. Wê kopî bikin û li ser rûpelê bişînin, paşê bikirtînin Login. Piştî têketinê, herin menuya pêvekirinê ya li milê çepê, wekî ku di wêneya jêrîn de tê xuyang kirin, li wir ji we were xwestin, dema ku gerînendeyê dirêjkirinê çalak bikin, hûn xetereyên ewlehiyê bigirin bi sazkirina pêvekên ji aliyên sêyemîn ên ku emrê wan e. Pêşveçûna JupyterLab ne berpirsiyar e:

Destpêkirina Jupyter li orbita LXD

Lêbelê, em tevahî tecrîdê dikin laboratûara jupyter û wê di konteynirekê de bi cih bikin da ku pêvekên partiya sêyemîn ên ku NodeJS hewce dikin û bikar tînin nekarin bi kêmî ve daneyên li ser dîskê ji bilî yên ku em di hundurê konteynerê de vedikin bidizin. Li ser mêvandarê xwe bigihînin belgeyên xweyên taybet /home pêvajoyên ji konteynerê ne mimkûn e ku biserkevin, û heke ew biserkevin, wê hingê hûn hewce ne ku li ser pelên li ser pergala mêvandar xwedî îmtiyaz bin, ji ber ku em konteynerê di nav de dimeşînin. moda bê îmtiyaz. Li ser bingeha vê agahiyê, hûn dikarin xetereya tevlêbûna dirêjkirinê di nav de binirxînin laboratûara jupyter.

Notebookên IPython (rûpelên nav laboratûara jupyter) naha dê di pelrêça malê ya bikarhêner de were afirandin - /home/jupyter, lê planên me ew e ku daneyan (parvekirinê) di navbera mêvandar û konteynerê de parve bikin, ji ber vê yekê vegerin konsolê û rawestin laboratûara jupyter bi pêkanîna bişkojka germê - CTRL+C û bersiv dide y li ser daxwazê. Dûv re rûniştina înteraktîf a bikarhêner biqedîne jupyter temamkirina a hotkey CTRL+D.

Parvekirina daneyan bi mêvandar re ^

Ji bo parvekirina daneyan bi mêvandar re, hûn hewce ne ku di konteynerê de amûrek biafirînin ku destûrê dide we ku hûn wiya bikin û ji bo vê yekê, emrê jêrîn bimeşînin ku em bişkojkên jêrîn diyar dikin:

  • lxc config device add - Ferman veavakirina cîhazê zêde dike
  • jupyter - Nasnameya konteynera ku veavakirin lê tê zêdekirin
  • hostfs - Nasnameya cîhazê. Hûn dikarin her navekî destnîşan bikin.
  • disk - Cureyê amûrê tê destnîşan kirin
  • path - Rêya di konteynerê de ku LXD dê vê cîhazê lê siwar bike diyar dike
  • source - Çavkaniyê, riya pelrêça li ser mêvandarê ku hûn dixwazin bi konteynerê re parve bikin diyar bikin. Rê li gor tercîhên xwe diyar bikin
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Ji bo katalogê /home/dv/projects/ipython-notebooks Pêdivî ye ku destûr ji bikarhênerê konteynerê re were danîn ku niha UID-ya wî wekhev e SubUID + UID, li beşê binêre Ewlekarî. Taybetmendiyên Konteynirê di gotara Taybetmendiyên bingehîn ên LXD - pergalên konteynerê Linux.

Destûrê li ser mêvandar bicîh bikin, ku xwediyê wê bikarhênerê konteynerê be jupyter, û guherbar $USER dê bikarhênerê mêvandarê we wekî kom diyar bike:

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

Silav, cîhan! ^

Heke hûn hîn jî rûniştinek konsolê di konteynerê de bi vekirî ye laboratûara jupyter, paşê wê bi mifteyek nû ji nû ve bidin destpêkirin --notebook-dir bi danîna nirxê /mnt/hostfs wekî riya koka laptopên di konteynerê de ji bo cîhaza ku me di gava berê de çêkiriye:

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

Piştre biçin rûpelê http://10.0.5.5:8888 û bi tikandina bişkoja li ser rûpelê wekî ku di wêneya jêrîn de tê xuyang kirin laptopa xweya yekem biafirînin:

Destpêkirina Jupyter li orbita LXD

Dûv re, li qada li ser rûpelê, koda Python-ê ku dê klasîk nîşan bide têkevin Hello World!. Dema ku we têketinê qedand, pêl bikin CTRL+ENTER an jî bişkoja "lîstik"ê ya li ser darika amûrê ya jorîn heye ku JupyterLab vê yekê bike:

Destpêkirina Jupyter li orbita LXD

Di vê nuqteyê de, hema hema her tişt ji bo karanîna amade ye, lê ew ê ne balkêş be ger em modulên Python-ê yên din (sepanên bêkêmasî) saz nekin ku dikarin bi girîngî kapasîteyên standard ên Python-ê di nav de berfireh bikin. laboratûara jupyter, ji ber vê yekê, em biçin :)

PS Tişta balkêş ev e ku pêkanîna kevn e jupyter bin navê kod Jupyter Notebook neçûye û bi hev re heye laboratûara jupyter. Ji bo veguhertina guhertoya kevn, lînka ku paşgira li navnîşanê zêde dike bişopînin/tree, û derbasbûna guhertoya nû bi paşpirtikê tê kirin /lab, lê ne hewce ye ku were diyar kirin:

Berfirehkirina kapasîteyên Python ^

Di vê beşê de, em ê modulên zimanên Python-ê yên wusa bi hêz saz bikin numpy, pandas, matplotlib, IPyWidgets encamên ku di laptopan de têne yek kirin laboratûara jupyter.

Berî ku modulên Python-ê yên navnîşkirî bi navgîniya rêveberê pakêtê ve saz bikin pip Divê em pêşî pêwendiya pergalê di Alpine Linux de çareser bikin:

  • g++ - Ji bo berhevkirina modulan hewce ye, ji ber ku hin ji wan di ziman de têne bicîh kirin C ++ û di dema xebitandinê de wekî modulên binary bi Python ve girêdin
  • freetype-dev - girêdayîbûna ji bo modula Python matplotlib

Sazkirina pêwendiyan:

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

Pirsgirêkek heye: Di rewşa heyî ya belavkirina Alpine Linux de, dê nekare guhertoya nû ya NumPy berhev bike; xeletiyek berhevkirinê dê xuya bibe ku min nekarî çareser bikim:

ŞAŞÎ: Ji bo numpyên ku PEP 517 bikar tînin nekarîn teker ava bikin û rasterast nayên sazkirin

Ji ber vê yekê, em ê vê modulê wekî pakêtek pergalê saz bikin ku guhertoyek jixwe berhevkirî belav dike, lê ji ya ku niha li ser malperê heye hinekî kevntir e:

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

Piştre, modulên Python bi navgîniya rêveberê pakêtê saz bikin pip. Ji kerema xwe sebir bin ji ber ku hin modul dê berhev bikin û dibe ku çend hûrdeman bigirin. Li ser makîneya min, berhevkirin ~ 15 hûrdem girt:

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

Paqijkirina kaşên sazkirinê:

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

Modulên ceribandinê li JupyterLab ^

Ger hûn direvin laboratûara jupyter, wê ji nû ve bidin destpêkirin da ku modulên nû hatine saz kirin werin çalak kirin. Ji bo vê yekê, di danişîna konsolê de, bikirtînin CTRL+C li ku derê we ew diherike û têkevin y ji bo rawestandina daxwazê ​​û paşê dîsa dest pê bikin laboratûara jupyter bi tikandina tîra jor a li ser klavyeyê da ku careke din nekeve fermanê û dûv re Enter ji bo destpêkirina wê:

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

Herin rûpelê http://10.0.5.5:8888/lab an jî rûpelê di geroka xwe de nûve bikin, û dûv re koda jêrîn di hucreyek notebookek nû de têkevin:

%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

Divê hûn encamek mîna di wêneya jêrîn de, li ku derê bistînin IPyWidgets Li ser rûpelê hêmanek UI çêdike ku bi koda çavkaniyê re têkildar e, û her weha matplotlib Encama kodê di forma wêneyê de wekî grafikek fonksiyonê nîşan dide:

Destpêkirina Jupyter li orbita LXD

Gelek nimûne IPyWidgets hûn dikarin wê di dersan de bibînin vir

Êdî çi? ^

Xwezî heke hûn bimînin û gihîştin dawiya gotarê. Min bi zanebûn di dawiya gotara ku dê saz bike de skrîptek amade neşand laboratûara jupyter bi "yek klîk" ji bo teşwîqkirina karkeran :) Lê hûn dikarin bi xwe bikin, ji ber ku hûn jixwe dizanin çawa, fermanan di yek tîpek Bash de kom kirine :)

Hûn jî dikarin:

  • Li şûna navnîşek IP-ê bi nivîsandina wê bi sade navek torê ji bo konteynerê saz bikin /etc/hosts û navnîşana gerokê binivîsin http://jupyter.local:8888
  • Bi sînorê çavkaniyê ji bo konteynerê lîstin, ji bo vê yekê beşa tê de bixwînin kapasîteyên bingehîn ên LXD an bêtir agahdarî li ser malpera pêşdebirê LXD bistînin.
  • Mijarê biguherînin:

Destpêkirina Jupyter li orbita LXD

Û hê bêtir hûn dikarin bikin! Navê pêger. Ez ji we re serkeftinê dixwazim!

NAVENDA NÛÇEYAN: 15.04.2020/18/30 XNUMX:XNUMX - Di beşa "Silav, Cîhan!"
NAVENDA NÛÇEYAN: 16.04.2020/10/00 XNUMX:XNUMX - Di danasîna aktîvkirina rêveberê dirêjkirinê de nivîs rast kirin û zêde kirin laboratûara jupyter
NAVENDA NÛÇEYAN: 16.04.2020/10/40 XNUMX:XNUMX - Çewtiyên ku di nivîsê de hatin dîtin û hinekî ji bo baştir guheztin beşa "Sazkirina nermalava bingehîn û sazkirina pergalê"

Source: www.habr.com

Add a comment