Lansio Jupyter i orbit LXD

Ydych chi erioed wedi gorfod arbrofi gyda chod neu gyfleustodau system yn Linux heb boeni am y system sylfaenol a rhwygo popeth i lawr rhag ofn y bydd gwall yn y cod sydd i fod i redeg gyda breintiau gwraidd?

Ond beth am y ffaith y gadewch i ni ddweud bod angen i chi brofi neu redeg clwstwr cyfan o wahanol ficrowasanaethau ar un peiriant? Cant neu hyd yn oed fil?

Gyda pheiriannau rhithwir a reolir gan hypervisor, gellir a bydd problemau o'r fath yn cael eu datrys, ond ar ba gost? Er enghraifft, mae cynhwysydd yn LXD yn seiliedig ar y dosbarthiad Alpine Linux yn bwyta'n unig 7.60MB RAM, a lle mae'r rhaniad gwraidd yn meddiannu ar ôl cychwyn 9.5MB! Sut ydych chi'n hoffi hynny, Elon Musk? Rwy'n argymell gwirio allan galluoedd sylfaenol LXD - system cynhwysydd yn Linux

Ar ôl iddi ddod yn amlwg yn gyffredinol beth yw cynwysyddion LXD, gadewch i ni fynd ymhellach a meddwl, beth os oedd platfform cynaeafu o'r fath lle gallech chi redeg cod yn ddiogel ar gyfer y gwesteiwr, cynhyrchu graffiau, cysylltu UI- widgets yn ddeinamig (yn rhyngweithiol) â'ch cod, ychwanegu testun at y cod gyda blackjack... fformatio? Rhyw fath o flog rhyngweithiol? Waw... dwi ei eisiau! Eisiau! 🙂

Edrychwch o dan y gath lle byddwn yn lansio mewn cynhwysydd labordy jupyter - y genhedlaeth nesaf o ryngwyneb defnyddiwr yn lle Llyfr Nodiadau Jupyter hen ffasiwn, a byddwn hefyd yn gosod modiwlau Python fel nympy, pandas, matplotlib, IPyWidgets a fydd yn caniatáu ichi wneud popeth a restrir uchod a chadw'r cyfan mewn ffeil arbennig - gliniadur IPython.

Lansio Jupyter i orbit LXD

Cynllun esgyn orbitol ^

Lansio Jupyter i orbit LXD

Gadewch i ni amlinellu cynllun gweithredu byr i’w gwneud yn haws i ni roi’r cynllun uchod ar waith:

  • Gadewch i ni osod a lansio cynhwysydd yn seiliedig ar y pecyn dosbarthu Alpaidd Linux. Byddwn yn defnyddio'r dosbarthiad hwn oherwydd ei fod wedi'i anelu at finimaliaeth a byddwn yn gosod y meddalwedd mwyaf angenrheidiol ynddo yn unig, dim byd diangen.
  • Gadewch i ni ychwanegu disg rhithwir ychwanegol yn y cynhwysydd a rhoi enw iddo - hostfs a'i osod ar y system ffeiliau gwraidd. Bydd y ddisg hon yn ei gwneud hi'n bosibl defnyddio ffeiliau ar y gwesteiwr o gyfeiriadur penodol y tu mewn i'r cynhwysydd. Felly, bydd ein data yn annibynnol ar y cynhwysydd. Os caiff y cynhwysydd ei ddileu, bydd y data yn aros ar y gwesteiwr. Hefyd, mae'r cynllun hwn yn ddefnyddiol ar gyfer rhannu'r un data rhwng llawer o gynwysyddion heb ddefnyddio mecanweithiau rhwydwaith safonol y dosbarthiad cynhwysydd.
  • Gadewch i ni osod Bash, sudo, y llyfrgelloedd angenrheidiol, ychwanegu a ffurfweddu defnyddiwr system
  • Gadewch i ni osod Python, modiwlau a llunio dibyniaethau deuaidd ar eu cyfer
  • Gadewch i ni osod a lansio labordy jupyter, addasu'r ymddangosiad, gosod estyniadau ar ei gyfer.

Yn yr erthygl hon, byddwn yn dechrau gyda lansio'r cynhwysydd, ni fyddwn yn ystyried gosod a ffurfweddu LXD, gallwch ddod o hyd i hyn i gyd mewn erthygl arall - Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.

Gosod a chyfluniad y system sylfaenol ^

Rydyn ni'n creu cynhwysydd gyda'r gorchymyn lle rydyn ni'n nodi'r ddelwedd - alpine3, dynodwr ar gyfer y cynhwysydd - jupyterlab ac, os oes angen, proffiliau cyfluniad:

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

Yma rydw i'n defnyddio proffil cyfluniad hddroot sy'n pennu i greu cynhwysydd gyda rhaniad gwraidd yn Pwll Storio wedi'i leoli ar ddisg HDD corfforol:

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

Mae hyn yn rhoi'r cyfle i mi arbrofi gyda chynwysyddion ar y ddisg HDD, gan arbed adnoddau'r ddisg SSD, sydd hefyd ar gael yn fy system 🙂 yr wyf wedi creu proffil cyfluniad ar wahân ar ei gyfer ssdroot.

Ar ôl i'r cynhwysydd gael ei greu, mae yn y cyflwr STOPPED, felly mae angen i ni ei gychwyn trwy redeg y system init ynddo:

lxc start jupyterlab

Gadewch i ni arddangos rhestr o gynwysyddion yn LXD gan ddefnyddio'r allwedd -c sy'n dynodi pa carddangosiad colofnau:

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

Wrth greu'r cynhwysydd, dewiswyd y cyfeiriad IP ar hap, oherwydd i ni ddefnyddio proffil cyfluniad default a gyfluniwyd o'r blaen yn yr erthygl Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.

Byddwn yn newid y cyfeiriad IP hwn i un mwy cofiadwy trwy greu rhyngwyneb rhwydwaith ar lefel y cynhwysydd, ac nid ar lefel y proffil cyfluniad fel y mae ar hyn o bryd yn y ffurfweddiad presennol. Nid oes rhaid i chi wneud hyn, gallwch ei hepgor.

Creu rhyngwyneb rhwydwaith eth0 yr ydym yn cysylltu â'r switsh (pont rhwydwaith) lxdbr0 lle gwnaethom alluogi NAT yn ôl yr erthygl flaenorol a bydd gan y cynhwysydd bellach fynediad i'r Rhyngrwyd, ac rydym hefyd yn aseinio cyfeiriad IP statig i'r rhyngwyneb - 10.0.5.5:

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

Ar ôl ychwanegu dyfais, rhaid ailgychwyn y cynhwysydd:

lxc restart jupyterlab

Gwirio statws y cynhwysydd:

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

Gosod meddalwedd sylfaenol a gosod y system ^

I weinyddu ein cynhwysydd, mae angen i chi osod y meddalwedd canlynol:

pecyn
Disgrifiad

bash
Cragen GNU Bourne Again

bash-cwblhau
Cwblhad rhaglenadwy ar gyfer y gragen bash

sudo
Rhowch y gallu i rai defnyddwyr redeg rhai gorchmynion fel gwraidd

cysgod
Cyfres offer rheoli cyfrineiriau a chyfrifon gyda chefnogaeth ar gyfer ffeiliau cysgodol a PAM

tzdata
Ffynonellau ar gyfer parth amser a data amser arbed golau dydd

nano
Clin golygydd Pico gyda gwelliannau

Yn ogystal, gallwch osod cefnogaeth yn nhudalennau dyn y system trwy osod y pecynnau canlynol − man man-pages mdocml-apropos less

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

Edrychwn ar y gorchmynion a'r allweddi a ddefnyddiwyd gennym:

  • lxc - Ffoniwch gleient LXD
  • exec - Dull cleient LXD sy'n rhedeg gorchymyn yn y cynhwysydd
  • jupyterlab — ID Cynhwysydd
  • -- - Allwedd arbennig sy'n nodi peidio â dehongli allweddi pellach fel allweddi lxc a phasio gweddill y llinyn fel sydd i'r cynhwysydd
  • apk - Rheolwr pecyn dosbarthu Alpaidd Linux
  • add - Dull rheolwr pecyn sy'n gosod pecynnau a nodir ar ôl y gorchymyn

Nesaf, byddwn yn gosod parth amser yn y system Europe/Moscow:

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

Ar ôl gosod y parth amser, y pecyn tzdata nad oes ei angen bellach yn y system, bydd yn cymryd lle, felly gadewch i ni ei ddileu:

lxc exec jupyterlab -- apk del tzdata

Gwirio'r parth amser:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Er mwyn peidio â threulio llawer o amser yn sefydlu Bash ar gyfer defnyddwyr newydd yn y cynhwysydd, yn y camau canlynol byddwn yn copïo ffeiliau skel parod o'r system westeiwr iddo. Bydd hyn yn eich galluogi i harddu Bash mewn cynhwysydd yn rhyngweithiol. Fy system gwesteiwr yw Manjaro Linux a'r ffeiliau sy'n cael eu copïo /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors mewn egwyddor maent yn addas ar gyfer Alpine Linux ac nid ydynt yn achosi problemau critigol, ond efallai y bydd gennych ddosbarthiad gwahanol ac mae angen i chi ddarganfod yn annibynnol a oes gwall wrth redeg Bash yn y cynhwysydd.

Copïwch y ffeiliau skel i'r cynhwysydd. Allwedd --create-dirs yn creu'r cyfeiriaduron angenrheidiol os nad ydynt yn bodoli:

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

Ar gyfer defnyddiwr gwraidd presennol, copïwch y ffeiliau skel sydd newydd eu copïo i'r cynhwysydd i'r cyfeiriadur cartref:

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

Mae Alpine Linux yn gosod cragen system ar gyfer defnyddwyr /bin/sh, byddwn yn ei ddisodli root defnyddiwr yn Bash:

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

Bod root nid oedd y defnyddiwr heb gyfrinair, mae angen iddo osod cyfrinair. Bydd y gorchymyn canlynol yn cynhyrchu ac yn gosod cyfrinair hap newydd iddo, a welwch ar sgrin y consol ar ôl ei weithredu:

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

Hefyd, gadewch i ni greu defnyddiwr system newydd - jupyter y byddwn yn ei ffurfweddu yn ddiweddarach labordy jupyter:

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

Gadewch i ni gynhyrchu a gosod cyfrinair ar ei gyfer:

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

Nesaf, byddwn yn gweithredu dau orchymyn, bydd y cyntaf yn creu grŵp system sudo, a bydd yr ail yn ychwanegu defnyddiwr ato jupyter:

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

Gadewch i ni weld pa grwpiau y mae'r defnyddiwr yn perthyn iddynt jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Mae popeth yn iawn, gadewch i ni symud ymlaen.

Caniatáu i bob defnyddiwr sy'n aelod o'r grŵp sudo defnyddio gorchymyn sudo. I wneud hyn, rhedeg y sgript ganlynol, lle sed uncomments y llinell paramedr yn y ffeil ffurfweddu /etc/sudoers:

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

Gosod a ffurfweddu JupyterLab ^

labordy jupyter yn gymhwysiad Python, felly mae'n rhaid i ni osod y cyfieithydd hwn yn gyntaf. Hefyd, labordy jupyter byddwn yn gosod gan ddefnyddio'r rheolwr pecyn Python pip, ac nid yr un system, oherwydd gall fod yn hen ffasiwn yn ystorfa'r system ac felly, mae'n rhaid i ni ddatrys y dibyniaethau ar ei gyfer â llaw trwy osod y pecynnau canlynol - python3 python3-dev gcc libc-dev zeromq-dev:

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

Gadewch i ni ddiweddaru modiwlau python a rheolwr pecyn pip i'r fersiwn gyfredol:

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

Gosod labordy jupyter trwy'r rheolwr pecyn pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Ers yr estyniadau yn labordy jupyter yn arbrofol ac nid ydynt yn cael eu cludo'n swyddogol gyda'r pecyn jupyterlab, felly mae'n rhaid i ni ei osod a'i ffurfweddu â llaw.

Gadewch i ni osod NodeJS a'r rheolwr pecyn ar ei gyfer - NPM, ers hynny labordy jupyter yn eu defnyddio ar gyfer ei estyniadau:

lxc exec jupyterlab -- apk add nodejs npm

I estyniadau ar gyfer labordy jupyter y byddwn yn eu gosod yn gweithio, mae angen eu gosod yn y cyfeiriadur defnyddwyr gan y bydd y cais yn cael ei lansio gan y defnyddiwr jupyter. Y broblem yw nad oes unrhyw baramedr yn y gorchymyn lansio y gellir ei drosglwyddo i gyfeiriadur; dim ond newidyn amgylchedd y mae'r cais yn ei dderbyn ac felly mae'n rhaid i ni ei ddiffinio. I wneud hyn, byddwn yn ysgrifennu'r gorchymyn allforio newidiol JUPYTERLAB_DIR yn amgylchedd y defnyddiwr jupyter, i ffeilio .bashrcsy'n cael ei weithredu bob tro mae'r defnyddiwr yn mewngofnodi:

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

Bydd y gorchymyn nesaf yn gosod estyniad arbennig - rheolwr estyniad i mewn labordy 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"

Nawr mae popeth yn barod ar gyfer y lansiad cyntaf labordy jupyter, ond gallwn osod ychydig o estyniadau defnyddiol o hyd:

  • toc — Tabl Cynnwys, yn cynhyrchu rhestr o benawdau mewn erthygl/llyfr nodiadau
  • jupyterlab-horizon-theme - Thema UI
  • jupyterlab_neon_theme - Thema UI
  • jupyterlab-ubu-theme - Un arall thema gan yr awdur yr erthygl hon :) Ond yn yr achos hwn, bydd y gosodiad o ystorfa GitHub yn cael ei ddangos

Felly, rhedwch y gorchmynion canlynol yn olynol i osod yr estyniadau hyn:

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"

Ar ôl gosod yr estyniadau, rhaid inni eu llunio, oherwydd yn flaenorol, yn ystod y gosodiad, fe wnaethom nodi'r allwedd --no-build i arbed amser. Nawr byddwn yn cyflymu'n sylweddol trwy eu casglu ynghyd ar yr un pryd:

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

Nawr rhedeg y ddau orchymyn canlynol i'w redeg am y tro cyntaf labordy jupyter. Byddai'n bosibl ei lansio gydag un gorchymyn, ond yn yr achos hwn, bydd y gorchymyn lansio, sy'n anodd ei gofio yn eich meddwl, yn cael ei gofio gan bash yn y cynhwysydd, ac nid ar y gwesteiwr, lle mae digon o orchmynion eisoes i'w cofnodi yn yr hanes :)

Mewngofnodwch i'r cynhwysydd fel defnyddiwr jupyter:

lxc exec jupyterlab -- su -l jupyter

Nesaf, rhedeg labordy jupyter gydag allweddi a pharamedrau fel y nodir:

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

Ewch i'r cyfeiriad yn eich porwr gwe http://10.0.5.5:8888 ac ar y dudalen sy'n agor ewch i mewn tocyn mynediad a welwch yn y consol. Copïwch a gludwch ef ar y dudalen, yna cliciwch Mewngofnodi. Ar ôl mewngofnodi, ewch i'r ddewislen estyniadau ar y chwith, fel y dangosir yn y ffigur isod, lle byddwch yn cael eich annog, wrth actifadu'r rheolwr estyniad, i gymryd risgiau diogelwch trwy osod estyniadau gan drydydd partïon y mae'r gorchymyn ar eu cyfer. Datblygiad JupyterLab ddim yn gyfrifol:

Lansio Jupyter i orbit LXD

Fodd bynnag, rydym yn ynysu’r cyfan labordy jupyter a'i roi mewn cynhwysydd fel na all estyniadau trydydd parti sy'n gofyn am ac yn defnyddio NodeJS o leiaf ddwyn data ar y ddisg ac eithrio'r rhai yr ydym yn eu hagor y tu mewn i'r cynhwysydd. Cyrraedd eich dogfennau preifat ar y gwesteiwr yn /home mae prosesau o'r cynhwysydd yn annhebygol o lwyddo, ac os ydynt, yna mae angen i chi gael breintiau ar ffeiliau ar y system westeiwr, gan ein bod yn rhedeg y cynhwysydd yn modd difreintiedig. Yn seiliedig ar y wybodaeth hon, gallwch asesu'r risg o gynnwys estyniadau i mewn labordy jupyter.

Wedi creu llyfrau nodiadau IPython (tudalennau yn labordy jupyter) nawr yn cael ei greu yng nghyfeirlyfr cartref y defnyddiwr - /home/jupyter, ond ein cynlluniau yw rhannu'r data (rhannu) rhwng y gwesteiwr a'r cynhwysydd, felly dychwelwch i'r consol a stopiwch labordy jupyter trwy weithredu hotkey - CTRL+C ac yn ateb y ar gais. Yna terfynwch sesiwn ryngweithiol y defnyddiwr jupyter cwblhau hotkey CTRL+D.

Rhannu data gyda'r gwesteiwr ^

I rannu data gyda'r gwesteiwr, mae angen i chi greu dyfais yn y cynhwysydd sy'n eich galluogi i wneud hyn ac i wneud hyn, rhedeg y gorchymyn canlynol lle rydym yn nodi'r allweddi canlynol:

  • lxc config device add - Mae'r gorchymyn yn ychwanegu cyfluniad y ddyfais
  • jupyter — ID y cynhwysydd yr ychwanegir y cyfluniad ato
  • hostfs — ID dyfais. Gallwch chi osod unrhyw enw.
  • disk - Nodir y math o ddyfais
  • path — Yn pennu'r llwybr yn y cynhwysydd y bydd LXD yn gosod y ddyfais hon iddo
  • source - Nodwch y ffynhonnell, y llwybr i'r cyfeiriadur ar y gwesteiwr rydych chi am ei rannu gyda'r cynhwysydd. Nodwch y llwybr yn ôl eich dewisiadau
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Ar gyfer y catalog /home/dv/projects/ipython-notebooks rhaid gosod caniatâd i ddefnyddiwr y cynhwysydd sydd â UID cyfartal i SubUID + UID, gweler y bennod Diogelwch. Breintiau Cynhwysydd yn yr erthygl Nodweddion sylfaenol LXD - systemau cynhwysydd Linux.

Gosodwch y caniatâd ar y gwesteiwr, a'r perchennog fydd defnyddiwr y cynhwysydd jupyter, a'r newidyn $USER yn nodi eich defnyddiwr gwesteiwr fel grŵp:

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

Helo Byd! ^

Os oes gennych sesiwn consol o hyd agorwch yn y cynhwysydd gyda labordy jupyter, yna ei ailgychwyn gydag allwedd newydd --notebook-dir trwy osod y gwerth /mnt/hostfs fel y llwybr at wraidd y gliniaduron yn y cynhwysydd ar gyfer y ddyfais a grëwyd gennym yn y cam blaenorol:

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

Yna ewch i'r dudalen http://10.0.5.5:8888 a chreu eich gliniadur cyntaf trwy glicio ar y botwm ar y dudalen fel y dangosir yn y llun isod:

Lansio Jupyter i orbit LXD

Yna, yn y maes ar y dudalen, nodwch y cod Python a fydd yn arddangos y clasurol Hello World!. Pan fyddwch wedi gorffen mynd i mewn, pwyswch CTRL+ENTER neu'r botwm "chwarae" ar y bar offer ar y brig i gael JupyterLab i wneud hyn:

Lansio Jupyter i orbit LXD

Ar y pwynt hwn, mae bron popeth yn barod i'w ddefnyddio, ond bydd yn anniddorol os na fyddwn yn gosod modiwlau Python ychwanegol (cymwysiadau llawn) a all ehangu galluoedd safonol Python yn sylweddol yn labordy jupyter, felly, gadewch i ni symud ymlaen :)

PS Y peth diddorol yw bod y gweithredu hen jupyter dan enw cod Llyfr Nodiadau Jupyter wedi mynd i ffwrdd ac mae'n bodoli ochr yn ochr â labordy jupyter. I newid i'r hen fersiwn, dilynwch y ddolen gan ychwanegu'r ôl-ddodiad yn y cyfeiriad/tree, ac mae'r newid i fersiwn newydd yn cael ei wneud gyda'r ôl-ddodiad /lab, ond nid oes rhaid ei nodi:

Ehangu galluoedd Python ^

Yn yr adran hon, byddwn yn gosod modiwlau iaith Python pwerus fel nympy, pandas, matplotlib, IPyWidgets mae'r canlyniadau wedi'u hintegreiddio i liniaduron labordy jupyter.

Cyn gosod y modiwlau Python rhestredig trwy'r rheolwr pecyn pip rhaid i ni yn gyntaf ddatrys dibyniaethau system yn Alpine Linux:

  • g++ — Angenrheidiol ar gyfer llunio modiwlau, gan fod rhai ohonynt yn cael eu gweithredu yn yr iaith C + + a chysylltu â Python ar amser rhedeg fel modiwlau deuaidd
  • freetype-dev - dibyniaeth ar gyfer modiwl Python matplotlib

Gosod dibyniaethau:

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

Mae un broblem: yng nghyflwr presennol y dosbarthiad Alpine Linux, ni fydd yn bosibl llunio'r fersiwn newydd o NumPy; bydd gwall llunio yn ymddangos na allwn ei ddatrys:

GWALL: Methu adeiladu olwynion ar gyfer numpy sy'n defnyddio PEP 517 ac ni ellir eu gosod yn uniongyrchol

Felly, byddwn yn gosod y modiwl hwn fel pecyn system sy'n dosbarthu fersiwn a luniwyd eisoes, ond ychydig yn hŷn na'r hyn sydd ar gael ar y wefan ar hyn o bryd:

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

Nesaf, gosodwch fodiwlau Python trwy'r rheolwr pecyn pip. Byddwch yn amyneddgar gan y bydd rhai modiwlau yn llunio ac efallai y bydd yn cymryd ychydig funudau. Ar fy mheiriant, cymerodd y casgliad ~15 munud:

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

Clirio caches gosod:

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

Profi modiwlau yn JupyterLab ^

Os ydych yn rhedeg labordy jupyter, ei ailgychwyn fel bod y modiwlau sydd newydd eu gosod yn cael eu gweithredu. I wneud hyn, mewn sesiwn consol, cliciwch CTRL+C lle mae gennych chi'n rhedeg a mynd i mewn y i atal cais ac yna dechrau eto labordy jupyter trwy wasgu'r saeth i fyny ar y bysellfwrdd er mwyn peidio â mynd i mewn i'r gorchymyn eto ac yna Enter i ddechrau:

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

Ewch i'r dudalen http://10.0.5.5:8888/lab neu adnewyddwch y dudalen yn eich porwr, ac yna rhowch y cod canlynol mewn cell llyfr nodiadau newydd:

%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

Dylech gael canlyniad fel yn y llun isod, ble IPyWidgets yn cynhyrchu elfen UI ar y dudalen sy'n rhyngweithio'n rhyngweithiol â'r cod ffynhonnell, a hefyd matplotlib yn dangos canlyniad y cod ar ffurf llun fel graff ffwythiant:

Lansio Jupyter i orbit LXD

Llawer o enghreifftiau IPyWidgets gallwch ddod o hyd iddo mewn tiwtorialau yma

Beth arall? ^

Da iawn os arhosoch chi a chyrraedd diwedd yr erthygl. Nid wyf yn fwriadol yn postio sgript parod ar ddiwedd yr erthygl a fyddai'n gosod labordy jupyter mewn “un clic” i annog gweithwyr :) Ond gallwch chi ei wneud eich hun, gan eich bod eisoes yn gwybod sut, ar ôl casglu'r gorchmynion i mewn i un sgript Bash :)

Gallwch hefyd:

  • Gosodwch enw rhwydwaith ar gyfer y cynhwysydd yn lle cyfeiriad IP trwy ei ysgrifennu mewn syml /etc/hosts a theipiwch y cyfeiriad yn y porwr http://jupyter.local:8888
  • Chwarae o gwmpas gyda'r terfyn adnoddau ar gyfer y cynhwysydd, ar gyfer hyn darllenwch y bennod yn galluoedd LXD sylfaenol neu gael mwy o wybodaeth ar wefan datblygwr LXD.
  • Newidiwch y thema:

Lansio Jupyter i orbit LXD

A llawer mwy y gallwch chi ei wneud! Dyna i gyd. Rwy'n dymuno llwyddiant i chi!

DIWEDDARIAD: 15.04.2020/18/30 XNUMX:XNUMX - Gwallau wedi'u cywiro yn y bennod “Helo, Byd!”
DIWEDDARIAD: 16.04.2020/10/00 XNUMX:XNUMX - Testun wedi'i gywiro a'i ychwanegu yn y disgrifiad o actifadu rheolwr estyniad labordy jupyter
DIWEDDARIAD: 16.04.2020/10/40 XNUMX:XNUMX — Gwallau wedi'u cywiro a ddarganfuwyd yn y testun a newid ychydig er gwell y bennod “Gosod meddalwedd sylfaenol a gosod y system”

Ffynhonnell: hab.com

Ychwanegu sylw