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.
Navkirin
- Plana avêtina orbital
- Sazkirin û veavakirina pergala bingehîn
- Sazkirina nermalava bingehîn û sazkirina pergalê
- Sazkirin û mîhengkirina JupyterLab
- Parvekirina daneyan bi mêvandar re
- Silav, cîhan!
- Berfirehkirina kapasîteyên Python
- Modulên ceribandinê li JupyterLab
- Êdî çi?
Plana avêtina orbital ^
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
sî
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 bikinexec
- Rêbaza xerîdar LXD ku di konteynerê de fermanek dimeşînejupyterlab
- Nasnameya konteynerê--
- Mifteyek taybetî ya ku diyar dike ku bişkokên din wekî mifteyên ji bo şîrove nekinlxc
û têlê mayî jî wek konteynerê derbas bikinapk
- Rêvebirê pakêta belavkirina Alpine Linuxadd
- 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ê .bashrc
ku 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 çêdikejupyterlab-horizon-theme
- Mijara UIjupyterlab_neon_theme
- Mijara UIjupyterlab-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:
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 dikejupyter
- Nasnameya konteynera ku veavakirin lê tê zêdekirinhostfs
- Nasnameya cîhazê. Hûn dikarin her navekî destnîşan bikin.disk
- Cureyê amûrê tê destnîşan kirinpath
- Rêya di konteynerê de ku LXD dê vê cîhazê lê siwar bike diyar dikesource
- Ç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:
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:
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:
- Notebook Jupyter - http://10.0.5.5:8888/tree
- Jupyter Lab - http://10.0.5.5:8888/lab
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êdinfreetype-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:
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:
Û 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