Inazindua Jupyter kwenye obiti ya LXD

Umewahi kujaribu na nambari au huduma za mfumo katika Linux ili usiwe na wasiwasi juu ya mfumo wa msingi na sio kubomoa kila kitu ikiwa kuna hitilafu katika nambari ambayo inapaswa kuendeshwa na marupurupu ya mizizi?

Lakini vipi kuhusu ukweli kwamba hebu sema unahitaji kupima au kuendesha kikundi kizima cha huduma ndogo ndogo kwenye mashine moja? Mia au hata elfu?

Na mashine za kawaida zinazosimamiwa na hypervisor, shida kama hizo zinaweza na zitatatuliwa, lakini kwa gharama gani? Kwa mfano, kontena katika LXD kulingana na usambazaji wa Linux ya Alpine hutumia pekee 7.60MB RAM, na ambapo kizigeu cha mizizi kinachukua baada ya kuanza 9.5MB! Unapendaje hii, Elon Musk? Ninapendekeza kuangalia uwezo wa kimsingi wa LXD - mfumo wa kontena katika Linux

Baada ya kuwa wazi kwa ujumla vyombo vya LXD ni nini, wacha tuende mbali zaidi na tufikirie, vipi ikiwa kungekuwa na jukwaa la uvunaji ambapo unaweza kuendesha msimbo salama kwa mwenyeji, kutoa grafu, kuunganisha wijeti za UI- kwa njia ya msimbo na nambari yako, kuongeza msimbo kwa maandishi na blackjack... umbizo? Aina fulani ya blogu shirikishi? Wow ... nataka! Unataka! πŸ™‚

Angalia chini ya paka ambapo tutazindua kwenye chombo maabara ya jupyter - kizazi kijacho cha kiolesura cha mtumiaji badala ya Daftari ya Jupyter iliyopitwa na wakati, na pia tutasakinisha moduli za Python kama vile Nambari ya Pili, Panda, matplotlib, IPyWidgets ambayo itawawezesha kufanya kila kitu kilichoorodheshwa hapo juu na kuhifadhi yote katika faili maalum - kompyuta ya mkononi ya IPython.

Inazindua Jupyter kwenye obiti ya LXD

Mpango wa kuondoka kwa Orbital ^

Inazindua Jupyter kwenye obiti ya LXD

Hebu tuangazie mpango mfupi wa utekelezaji ili kurahisisha utekelezaji wa mpango ulio hapo juu:

  • Hebu tusakinishe na kuzindua chombo kulingana na kit usambazaji Alpine Linux. Tutatumia usambazaji huu kwa sababu unalenga minimalism na tutaweka tu programu muhimu zaidi ndani yake, hakuna kitu kikubwa.
  • Wacha tuongeze diski ya ziada kwenye chombo na tupe jina - hostfs na kuiweka kwenye mfumo wa faili ya mizizi. Diski hii itafanya uwezekano wa kutumia faili kwenye mwenyeji kutoka kwa saraka fulani ndani ya chombo. Kwa hivyo, data yetu itakuwa huru na chombo. Chombo kikifutwa, data itasalia kwenye seva pangishi. Pia, mpango huu ni muhimu kwa kushiriki data sawa kati ya vyombo vingi bila kutumia mifumo ya kawaida ya mtandao wa usambazaji wa chombo.
  • Wacha tusakinishe Bash, sudo, maktaba muhimu, ongeza na usanidi mtumiaji wa mfumo
  • Wacha tusakinishe Python, moduli na tukusanye utegemezi wa binary kwao
  • Hebu tusakinishe na kuzindua maabara ya jupyter, kubinafsisha mwonekano, sakinisha viendelezi kwa ajili yake.

Katika makala hii tutaanza na kuzindua chombo, hatutazingatia kusanikisha na kusanidi LXD, unaweza kupata haya yote katika nakala nyingine - Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux.

Ufungaji na usanidi wa mfumo wa msingi ^

Tunaunda chombo na amri ambayo tunataja picha - alpine3, kitambulisho cha kontena - jupyterlab na, ikiwa ni lazima, wasifu wa usanidi:

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

Hapa ninatumia wasifu wa usanidi hddroot ambayo inabainisha kuunda kontena iliyo na kizigeu cha mizizi ndani Dimbwi la Kuhifadhi iko kwenye diski ya HDD ya kimwili:

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

Hii inanipa fursa ya kujaribu vyombo kwenye diski ya HDD, kuokoa rasilimali za diski ya SSD, ambayo inapatikana pia kwenye mfumo wangu πŸ™‚ ambao nimeunda wasifu tofauti wa usanidi. ssdroot.

Baada ya chombo kuundwa, iko katika hali STOPPED, kwa hivyo tunahitaji kuianzisha kwa kuendesha mfumo wa init ndani yake:

lxc start jupyterlab

Wacha tuonyeshe orodha ya vyombo katika LXD kwa kutumia kitufe -c ambayo inaonyesha ni ipi columns onyesho:

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

Wakati wa kuunda chombo, anwani ya IP ilichaguliwa kwa nasibu, kwani tulitumia wasifu wa usanidi default ambayo hapo awali iliundwa katika makala Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux.

Tutabadilisha anwani hii ya IP kuwa ya kukumbukwa zaidi kwa kuunda kiolesura cha mtandao katika kiwango cha kontena, na si katika kiwango cha wasifu wa usanidi kama ilivyo sasa katika usanidi wa sasa. Sio lazima ufanye hivi, unaweza kuruka.

Kuunda kiolesura cha mtandao eth0 ambayo tunaunganisha kwenye swichi (daraja la mtandao) lxdbr0 ambayo tuliwezesha NAT kulingana na kifungu kilichopita na kontena sasa itakuwa na ufikiaji wa Mtandao, na pia tunapeana anwani ya IP tuli kwenye kiolesura - 10.0.5.5:

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

Baada ya kuongeza kifaa, chombo lazima kiwashwe upya:

lxc restart jupyterlab

Kuangalia hali ya chombo:

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

Kuweka programu ya msingi na kuanzisha mfumo ^

Ili kudhibiti chombo chetu, unahitaji kusakinisha programu ifuatayo:

mfuko
Maelezo

bash
Ganda la GNU Bourne Again

bash-kukamilika
Kukamilika kwa programu kwa ganda la bash

sudo
Wape watumiaji fulani uwezo wa kutekeleza baadhi ya amri kama mzizi

kivuli
Nywila na zana ya kudhibiti akaunti yenye usaidizi wa faili za vivuli na PAM

tzdata
Vyanzo vya data ya saa za eneo na saa za kuokoa mchana

nano
Mhariri wa Pico aliye na viboreshaji

Zaidi ya hayo, unaweza kusakinisha usaidizi katika kurasa za watu za mfumo kwa kusakinisha vifurushi vifuatavyo - man man-pages mdocml-apropos less

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

Wacha tuangalie amri na funguo tulizotumia:

  • lxc - Piga mteja wa LXD
  • exec - Mbinu ya mteja ya LXD inayotumia amri kwenye kontena
  • jupyterlab - Kitambulisho cha chombo
  • -- - Kitufe maalum ambacho kinabainisha kutotafsiri funguo zaidi kama funguo za lxc na kupitisha kamba iliyobaki kama ilivyo kwa chombo
  • apk - Meneja wa kifurushi cha usambazaji wa Alpine Linux
  • add - Njia ya kidhibiti cha kifurushi ambacho husakinisha vifurushi vilivyoainishwa baada ya amri

Ifuatayo, tutaweka eneo la saa katika mfumo. Europe/Moscow:

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

Baada ya kufunga eneo la wakati, kifurushi tzdata haihitajiki tena kwenye mfumo, itachukua nafasi, kwa hivyo wacha tuifute:

lxc exec jupyterlab -- apk del tzdata

Kuangalia saa za eneo:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Ili usitumie muda mwingi kusanidi Bash kwa watumiaji wapya kwenye chombo, katika hatua zifuatazo tutanakili faili za skel zilizotengenezwa tayari kutoka kwa mfumo wa mwenyeji kwake. Hii itakuruhusu kupamba Bash kwenye chombo kwa maingiliano. Mfumo wangu wa mwenyeji ni Manjaro Linux na faili zinanakiliwa /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors kimsingi zinafaa kwa Alpine Linux na hazisababishi shida kubwa, lakini unaweza kuwa na usambazaji tofauti na unahitaji kufikiria kwa uhuru ikiwa kuna hitilafu wakati wa kuendesha Bash kwenye chombo.

Nakili faili za skel kwenye chombo. Ufunguo --create-dirs itaunda saraka zinazohitajika ikiwa hazipo:

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

Kwa mtumiaji wa mizizi tayari, nakili faili za skel zilizonakiliwa kwenye kontena hadi saraka ya nyumbani:

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 husakinisha ganda la mfumo kwa watumiaji /bin/sh, tutaibadilisha na root mtumiaji katika Bash:

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

Hiyo root mtumiaji hakuwa na nenosiri, anahitaji kuweka nenosiri. Amri ifuatayo itatoa na kuweka nenosiri mpya la nasibu kwake, ambalo utaona kwenye skrini ya koni baada ya utekelezaji wake:

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

Pia, wacha tuunde mtumiaji mpya wa mfumo - jupyter ambayo tutaisanidi baadaye maabara ya jupyter:

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

Wacha tutengeneze na tuweke nenosiri lake:

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

Ifuatayo, tutafanya amri mbili, ya kwanza itaunda kikundi cha mfumo sudo, na ya pili itaongeza mtumiaji kwake jupyter:

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

Wacha tuone mtumiaji ni wa vikundi gani jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Kila kitu kiko sawa, wacha tuendelee.

Ruhusu watumiaji wote ambao ni washiriki wa kikundi sudo tumia amri sudo. Ili kufanya hivyo, endesha hati ifuatayo, wapi sed uncomments mstari wa parameta katika faili ya usanidi /etc/sudoers:

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

Kufunga na kusanidi JupyterLab ^

maabara ya jupyter ni programu ya Python, kwa hivyo lazima kwanza tusakinishe mkalimani huyu. Pia, maabara ya jupyter tutasakinisha kwa kutumia meneja wa kifurushi cha Python pip, na sio mfumo wa kwanza, kwa sababu unaweza kuwa umepitwa na wakati kwenye hazina ya mfumo na kwa hivyo, lazima tusuluhishe utegemezi wake kwa kusakinisha vifurushi vifuatavyo - python3 python3-dev gcc libc-dev zeromq-dev:

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

Wacha tusasishe moduli za python na msimamizi wa kifurushi pip kwa toleo la sasa:

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

Weka maabara ya jupyter kupitia meneja wa kifurushi pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Tangu upanuzi katika maabara ya jupyter ni za majaribio na hazisafirishwi rasmi na kifurushi cha jupyterlab, kwa hivyo inatubidi kukisakinisha na kukisanidi mwenyewe.

Wacha tusakinishe NodeJS na meneja wa kifurushi chake - NPM, tangu maabara ya jupyter inazitumia kwa upanuzi wake:

lxc exec jupyterlab -- apk add nodejs npm

Kwa viendelezi vya maabara ya jupyter ambayo tutasakinisha ilifanya kazi, zinahitaji kusanikishwa kwenye saraka ya watumiaji kwani programu itazinduliwa kutoka kwa mtumiaji jupyter. Shida ni kwamba hakuna kigezo katika amri ya uzinduzi ambacho kinaweza kupitishwa kwa saraka; programu tumizi inakubali kutofautisha kwa mazingira na kwa hivyo lazima tufafanue. Ili kufanya hivyo, tutaandika amri ya kuuza nje ya kutofautiana JUPYTERLAB_DIR katika mazingira ya mtumiaji jupyter, kwa faili .bashrcambayo inatekelezwa kila wakati mtumiaji anapoingia:

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

Amri inayofuata itasakinisha kiendelezi maalum - meneja wa ugani ndani maabara ya 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"

Sasa kila kitu kiko tayari kwa uzinduzi wa kwanza maabara ya jupyter, lakini bado tunaweza kusakinisha viendelezi vichache muhimu:

  • toc - Jedwali la Yaliyomo, hutoa orodha ya vichwa katika makala/daftari
  • jupyterlab-horizon-theme - Mandhari ya UI
  • jupyterlab_neon_theme - Mandhari ya UI
  • jupyterlab-ubu-theme - Mwingine mandhari kutoka kwa mwandishi makala hii :) Lakini katika kesi hii, usakinishaji kutoka kwa hazina ya GitHub utaonyeshwa

Kwa hivyo, endesha amri zifuatazo kwa mpangilio ili kusakinisha viendelezi hivi:

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"

Baada ya kufunga upanuzi, lazima tuwakusanye, tangu hapo awali, wakati wa ufungaji, tulielezea ufunguo --no-build kuokoa muda. Sasa tutaharakisha sana kwa kuzikusanya pamoja kwa kwenda moja:

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

Sasa endesha amri mbili zifuatazo ili kuiendesha kwa mara ya kwanza maabara ya jupyter. Itawezekana kuizindua kwa amri moja, lakini katika kesi hii, amri ya uzinduzi, ambayo ni ngumu kukumbuka katika akili yako, itakumbukwa na bash kwenye chombo, na sio kwa mwenyeji, ambapo tayari kuna amri za kutosha. kuwarekodi katika historia :)

Ingia kwenye kontena kama mtumiaji jupyter:

lxc exec jupyterlab -- su -l jupyter

Ifuatayo, kukimbia maabara ya jupyter na funguo na vigezo kama ilivyoonyeshwa:

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

Nenda kwa anwani katika kivinjari chako cha wavuti http://10.0.5.5:8888 na kwenye ukurasa unaofungua ingiza ishara ufikiaji ambao utaona kwenye koni. Nakili na ubandike kwenye ukurasa, kisha ubofye Ingia. Baada ya kuingia, nenda kwenye menyu ya upanuzi upande wa kushoto, kama inavyoonyeshwa kwenye takwimu hapa chini, ambapo utahamasishwa, wakati wa kuamsha meneja wa ugani, kuchukua hatari za usalama kwa kusakinisha viendelezi kutoka kwa wahusika wengine ambao amri hiyo imetolewa. Maendeleo ya JupyterLab sio kuwajibika:

Inazindua Jupyter kwenye obiti ya LXD

Walakini, tunatenga nzima maabara ya jupyter na kuiweka kwenye chombo ili viendelezi vya wahusika wengine vinavyohitaji na kutumia NodeJS visiweze angalau kuiba data kwenye diski isipokuwa zile tunazofungua ndani ya kontena. Pata hati zako za kibinafsi kwenye mwenyeji /home michakato kutoka kwa chombo haiwezekani kufanikiwa, na ikiwa itafanya, basi unahitaji kuwa na marupurupu kwenye faili kwenye mfumo wa mwenyeji, kwani tunaendesha chombo ndani. hali isiyo na upendeleo. Kulingana na maelezo haya, unaweza kutathmini hatari ya kujumuisha viendelezi ndani maabara ya jupyter.

Imeunda daftari za IPython (kurasa ndani maabara ya jupyter) sasa itaundwa kwenye saraka ya nyumbani ya mtumiaji - /home/jupyter, lakini mipango yetu ni kugawanya data (kushiriki) kati ya seva pangishi na kontena, kwa hivyo rudi kwenye kiweko na usimamishe maabara ya jupyter kwa kutekeleza hotkey - CTRL+C na kujibu y kwa ombi. Kisha sitisha kipindi cha mwingiliano cha mtumiaji jupyter kukamilisha hotkey CTRL+D.

Kushiriki data na mwenyeji ^

Ili kushiriki data na mwenyeji, unahitaji kuunda kifaa kwenye chombo kinachokuwezesha kufanya hivyo na kufanya hivyo, endesha amri ifuatayo ambapo tunabainisha funguo zifuatazo:

  • lxc config device add β€” Amri huongeza usanidi wa kifaa
  • jupyter - Kitambulisho cha chombo ambacho usanidi umeongezwa
  • hostfs - Kitambulisho cha Kifaa. Unaweza kuweka jina lolote.
  • disk - Aina ya kifaa imeonyeshwa
  • path β€” Hubainisha njia katika chombo ambacho LXD itapachika kifaa hiki
  • source - Bainisha chanzo, njia ya saraka kwenye seva pangishi ambayo ungependa kushiriki na kontena. Taja njia kulingana na upendeleo wako
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Kwa katalogi /home/dv/projects/ipython-notebooks ruhusa lazima iwekwe kwa mtumiaji wa kontena ambaye kwa sasa ana UID sawa na SubUID + UID, tazama sura Usalama. Haki za Vyombo katika makala Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux.

Weka ruhusa kwa seva pangishi, ambapo mmiliki atakuwa mtumiaji wa kontena jupyter, na kutofautiana $USER itabainisha mtumiaji mwenyeji wako kama kikundi:

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

Salamu, Dunia! ^

Ikiwa bado unayo kikao cha koni iliyofunguliwa kwenye chombo na maabara ya jupyter, kisha uanzishe upya kwa ufunguo mpya --notebook-dir kwa kuweka thamani /mnt/hostfs kama njia ya mzizi wa kompyuta ndogo kwenye chombo cha kifaa ambacho tumeunda katika hatua ya awali:

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

Kisha nenda kwenye ukurasa http://10.0.5.5:8888 na uunde kompyuta yako ndogo ya kwanza kwa kubofya kitufe kwenye ukurasa kama inavyoonekana kwenye picha hapa chini:

Inazindua Jupyter kwenye obiti ya LXD

Kisha, kwenye uwanja kwenye ukurasa, ingiza msimbo wa Python ambao utaonyesha classic Hello World!. Unapomaliza kuingiza, bonyeza CTRL+ENTER au kitufe cha "cheza" kwenye upau wa vidhibiti hapo juu ili JupyterLab ifanye hivi:

Inazindua Jupyter kwenye obiti ya LXD

Kwa wakati huu, karibu kila kitu kiko tayari kutumika, lakini itakuwa haipendezi ikiwa hatutasakinisha moduli za ziada za Python (programu kamili) ambazo zinaweza kupanua kwa kiasi kikubwa uwezo wa kawaida wa Python. maabara ya jupyter, kwa hivyo, wacha tuendelee :)

PS Jambo la kuvutia ni kwamba utekelezaji wa zamani jupyter chini ya jina la kificho Jupyter Daftari haijaondoka na ipo sambamba na maabara ya jupyter. Ili kubadilisha hadi toleo la zamani, fuata kiungo cha kuongeza kiambishi katika anwani/tree, na mpito kwa toleo jipya unafanywa na kiambishi tamati /lab, lakini sio lazima kubainishwa:

Kupanua uwezo wa Python ^

Katika sehemu hii, tutasakinisha moduli zenye nguvu za lugha ya Python kama Nambari ya Pili, Panda, matplotlib, IPyWidgets matokeo ambayo yanaunganishwa kwenye kompyuta za mkononi maabara ya jupyter.

Kabla ya kusanidi moduli zilizoorodheshwa za Python kupitia meneja wa kifurushi pip lazima kwanza tusuluhishe utegemezi wa mfumo katika Alpine Linux:

  • g++ - Inahitajika kwa kuunda moduli, kwani zingine zinatekelezwa katika lugha C + + na unganisha kwa Python wakati wa kukimbia kama moduli za binary
  • freetype-dev - utegemezi wa moduli ya Python matplotlib

Kufunga tegemezi:

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

Kuna shida moja: katika hali ya sasa ya usambazaji wa Alpine Linux, haitawezekana kuunda toleo jipya la NumPy; hitilafu ya mkusanyiko itaonekana ambayo sikuweza kutatua:

ERROR: Haikuweza kutengeneza magurudumu ya numpy ambayo yanatumia PEP 517 na hayawezi kusakinishwa moja kwa moja

Kwa hivyo, tutasakinisha moduli hii kama kifurushi cha mfumo ambacho kinasambaza toleo lililokusanywa tayari, lakini la zamani kidogo kuliko lile linalopatikana sasa kwenye tovuti:

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

Ifuatayo, sasisha moduli za Python kupitia meneja wa kifurushi pip. Tafadhali kuwa na subira kwani baadhi ya moduli zitaundwa na huenda zikachukua dakika chache. Kwenye mashine yangu, mkusanyiko ulichukua ~ dakika 15:

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

Kufuta akiba ya usakinishaji:

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

Moduli za majaribio katika JupyterLab ^

Ikiwa unakimbia maabara ya jupyter, iwashe upya ili moduli mpya zilizowekwa zimeamilishwa. Ili kufanya hivyo, katika kikao cha console, bofya CTRL+C ambapo una kukimbia na kuingia y kusimamisha ombi na kisha kuanza tena maabara ya jupyter kwa kushinikiza mshale wa juu kwenye kibodi ili usiingie amri tena na kisha Enter ili kuianzisha:

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

Nenda kwenye ukurasa http://10.0.5.5:8888/lab au onyesha upya ukurasa katika kivinjari chako, na kisha ingiza msimbo ufuatao katika kisanduku kipya cha daftari:

%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

Unapaswa kupata matokeo kama kwenye picha hapa chini, wapi IPyWidgets hutengeneza kipengee cha UI kwenye ukurasa ambacho huingiliana na msimbo wa chanzo, na pia matplotlib inaonyesha matokeo ya msimbo katika mfumo wa picha kama grafu ya kazi:

Inazindua Jupyter kwenye obiti ya LXD

Mifano mingi IPyWidgets unaweza kuipata kwenye mafunzo hapa

Nini kingine? ^

Umefanya vizuri ikiwa ulikaa na kufikia mwisho wa makala. Kwa makusudi sikuchapisha hati iliyotengenezwa tayari mwishoni mwa kifungu ambacho kingesakinisha maabara ya jupyter kwa "bofyo moja" ili kuhimiza wafanyikazi :) Lakini unaweza kuifanya mwenyewe, kwani tayari unajua jinsi, baada ya kukusanya amri kwenye hati moja ya Bash :)

Unaweza pia:

  • Weka jina la mtandao kwa kontena badala ya anwani ya IP kwa kuandika kwa njia rahisi /etc/hosts na uandike anwani kwenye kivinjari http://jupyter.local:8888
  • Cheza ukitumia kikomo cha rasilimali kwa kontena, kwa hili soma sura ndani uwezo wa msingi wa LXD au upate maelezo zaidi kwenye tovuti ya msanidi wa LXD.
  • Badilisha mada:

Inazindua Jupyter kwenye obiti ya LXD

Na mengi zaidi unaweza kufanya! Ni hayo tu. Nakutakia mafanikio!

HII SASA: 15.04.2020/18/30 XNUMX:XNUMX - Makosa yaliyosahihishwa katika sura ya "Hujambo, Ulimwengu!"
HABARI: 16.04.2020/10/00 XNUMX:XNUMX - Maandishi yaliyosahihishwa na kuongezwa katika maelezo ya kuwezesha meneja wa ugani maabara ya jupyter
HABARI: 16.04.2020/10/40 XNUMX:XNUMX - Hitilafu zilizosahihishwa zilizopatikana katika maandishi na kubadilisha kidogo sura bora "Kusakinisha programu ya msingi na kusanidi mfumo"

Chanzo: mapenzi.com

Kuongeza maoni