A 'cur air bhog Jupyter gu LXD orbit

An robh agad a-riamh ri deuchainn a dhèanamh air goireasan còd no siostam ann an Linux gus nach biodh dragh ort mun t-siostam bunaiteach agus gun a bhith a’ reubadh a h-uile càil sìos gun fhios nach biodh mearachd sa chòd a bu chòir ruith le sochairean freumha?

Ach dè mu dheidhinn a chanas sinn gum feum thu cruinneachadh iomlan de dhiofar microservices a dhearbhadh no a ruith air aon inneal? Ceud no fiù 's mìle?

Le innealan brìgheil air an riaghladh le hypervisor, faodar agus thèid na duilgheadasan sin fhuasgladh, ach aig dè a ’chosgais? Mar eisimpleir, bidh inneal ann an LXD stèidhichte air cuairteachadh Alpine Linux ag ithe a-mhàin 7.60MB RAM, agus far a bheil an sgaradh freumh a 'fuireach an dèidh tòiseachadh 9.5MB! Ciamar a tha sin a’ còrdadh riut, Elon Musk? Tha mi a’ moladh sgrùdadh a dhèanamh comasan bunaiteach LXD - siostam container ann an Linux

Às deidh dha a bhith soilleir san fharsaingeachd dè a th’ ann an soithichean LXD, rachamaid nas fhaide air adhart agus smaoinich, dè nam biodh an leithid de àrd-ùrlar buain ann far am b ’urrainn dhut còd a ruith gu sàbhailte airson an aoigh, cruthaich grafaichean, ceangal UI-widgets gu dinamach (gu h-eadar-ghnìomhach) leis a’ chòd agad, cuir ris a' chòd le teacsa le blackjack ... cruth? Seòrsa de bhlog eadar-ghnìomhach? Wow... tha mi ga iarraidh! Ag iarraidh! 🙂

Seall fon chat far an cuir sinn air bhog ann an soitheach obair-lann jupyter - an ath ghinealach de eadar-aghaidh luchd-cleachdaidh an àite seann leabhar notaichean Jupyter, agus stàlaidhidh sinn cuideachd modalan Python leithid ÀireamhPy, Bidh pandathan, Mathplotlib, IPyWidgets a leigeas leat a h-uile càil a tha air a liostadh gu h-àrd a dhèanamh agus a shàbhaladh ann am faidhle sònraichte - laptop IPython.

A 'cur air bhog Jupyter gu LXD orbit

Plana airson toirt air falbh orbital ^

A 'cur air bhog Jupyter gu LXD orbit

Bheir sinn cunntas air plana gnìomh goirid gus a dhèanamh nas fhasa dhuinn an sgeama gu h-àrd a bhuileachadh:

  • Nach cuir sinn a-steach agus cuir air bhog soitheach stèidhichte air a’ ghoireas cuairteachaidh Alpach Linux. Cleachdaidh sinn an cuairteachadh seo leis gu bheil e ag amas air minimalism agus cha chuir sinn a-steach ach am bathar-bog as riatanach a-steach dha, gun dad a bharrachd.
  • Nach cuir sinn diosc brìgheil a bharrachd anns a’ ghobhar agus thoir ainm dha - hostfs agus cuir a-steach e don t-siostam faidhle root. Leigidh an diosc seo leat faidhlichean a chleachdadh air an òstair bho eòlaire sònraichte taobh a-staigh an t-soithich. Mar sin, bidh an dàta againn neo-eisimeileach bhon t-soitheach. Ma thèid an soitheach a dhubhadh às, fuirichidh an dàta air an òstair. Cuideachd, tha an sgeama seo feumail airson an aon dàta a cho-roinn eadar mòran shoithichean gun a bhith a’ cleachdadh uidheamachdan lìonra àbhaisteach cuairteachadh nan soithichean.
  • Feuch an stàlaich sinn Bash, sudo, na leabharlannan riatanach, cuir ris agus rèitich sinn cleachdaiche siostam
  • Nach stàlaich sinn Python, modalan agus cuir ri chèile eisimeileachd dà-chànanach dhaibh
  • Leig leinn a stàladh agus a chuir air bhog obair-lann jupyter, gnàthaich an coltas, stàlaich leudachain air a shon.

San artaigil seo tòisichidh sinn le bhith a’ cur air bhog an soitheach, cha bheachdaich sinn air stàladh agus rèiteachadh LXD, gheibh thu seo uile ann an artaigil eile - Feartan bunaiteach LXD - siostaman container Linux.

Stàladh agus rèiteachadh an t-siostam bunaiteach ^

Bidh sinn a’ cruthachadh soitheach leis an àithne anns am bi sinn a’ sònrachadh an ìomhaigh - alpine3, aithnichear airson an t-soithich - jupyterlab agus, ma tha sin riatanach, pròifilean rèiteachaidh:

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

An seo tha mi a’ cleachdadh pròifil rèiteachaidh hddroot a tha a’ sònrachadh soitheach a chruthachadh le sgaradh freumh a-steach Amar stòraidh suidhichte air diosc corporra HDD:

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

Bheir seo an cothrom dhomh feuchainn air soithichean air an diosc HDD, a’ sàbhaladh goireasan an diosc SSD, a tha cuideachd ri fhaighinn san t-siostam agam 🙂 airson a bheil mi air ìomhaigh rèiteachaidh air leth a chruthachadh. ssdroot.

Às deidh an soitheach a chruthachadh, tha e ann an staid STOPPED, mar sin feumaidh sinn a thòiseachadh le bhith a’ ruith an t-siostam init ann:

lxc start jupyterlab

Nach seall sinn liosta de shoithichean ann an LXD a’ cleachdadh an iuchair -c a tha a’ comharrachadh cò ctaisbeanadh olumns:

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

Nuair a chaidh an soitheach a chruthachadh, chaidh an seòladh IP a thaghadh air thuaiream, leis gun do chleachd sinn pròifil rèiteachaidh default a chaidh a rèiteachadh roimhe san artaigil Feartan bunaiteach LXD - siostaman container Linux.

Atharraichidh sinn an seòladh IP seo gu fear nas cuimhneachail le bhith a’ cruthachadh eadar-aghaidh lìonraidh aig ìre an t-soithich, agus chan ann aig ìre pròifil an rèiteachaidh mar a tha e a-nis san rèiteachadh gnàthach. Chan fheum thu seo a dhèanamh, faodaidh tu a sheachnadh.

A 'cruthachadh eadar-aghaidh lìonraidh eth0 a tha sinn a 'ceangal ris an tionndadh (drochaid lìonra) lxdbr0 anns an tug sinn comas do NAT a rèir an artaigil roimhe agus bidh cothrom aig a’ ghobhar a-nis air an eadar-lìn, agus bidh sinn cuideachd a’ sònrachadh seòladh IP statach don eadar-aghaidh - 10.0.5.5:

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

Às deidh inneal a chuir ris, feumar an soitheach ath-thòiseachadh:

lxc restart jupyterlab

A’ sgrùdadh inbhe a’ bhogsa:

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

A 'stàladh bathar-bog bunaiteach agus a' stèidheachadh an t-siostaim ^

Gus an soitheach againn a rianachd, feumaidh tu am bathar-bog a leanas a stàladh:

pasgan
Tuairisgeul

bash
An slige GNU Bourne Again

bash-crìochnachadh
Crìochnachadh prògramaichte airson an t-slige bash

sudo
Thoir comas do chuid de luchd-cleachdaidh cuid de dh’ àitheantan a ruith mar fhreumh

shadow
Sreath inneal stiùireadh facal-faire is cunntais le taic airson faidhlichean sgàil agus PAM

dàta
Stòran airson sòn ùine agus dàta ùine sàbhalaidh solas an latha

Nano
Clone deasaiche Pico le leasachaidhean

A bharrachd air an sin, faodaidh tu taic a chuir a-steach ann an duilleagan fear an t-siostaim le bhith a’ stàladh na pacaidean a leanas - man man-pages mdocml-apropos less

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

Bheir sinn sùil air na h-òrdughan agus na h-iuchraichean a chleachd sinn:

  • lxc - Cuir fios gu neach-dèiligidh LXD
  • exec - Modh teachdaiche LXD a bhios a’ ruith àithne anns a’ ghobhar
  • jupyterlab - ID container
  • -- - Iuchair shònraichte a tha a’ sònrachadh gun a bhith ag eadar-mhìneachadh tuilleadh iuchraichean mar iuchraichean airson lxc agus thoir seachad an còrr den t-sreang mar a tha don ghobhar
  • apk - Manaidsear pacaid cuairteachaidh Alpach Linux
  • add - Modh manaidsear pacaid a stàlaicheas pacaidean a chaidh a shònrachadh às deidh an àithne

An ath rud, suidhichidh sinn sòn ùine san t-siostam Europe/Moscow:

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

Às deidh an sòn ùine a chuir a-steach, am pasgan tzdata chan eil feum air san t-siostam tuilleadh, gabhaidh e àite, mar sin sguabaidh sinn às e:

lxc exec jupyterlab -- apk del tzdata

A’ sgrùdadh an raon ùine:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Gus nach bi sinn a 'caitheamh mòran ùine a' stèidheachadh Bash airson luchd-cleachdaidh ùr anns a 'ghobhar, anns na ceumannan a leanas nì sinn lethbhreac de na faidhlichean skel deiseil bhon t-siostam aoigheachd thuige. Leigidh seo leat Bash a sgeadachadh ann an soitheach gu h-eadar-ghnìomhach. Is e an siostam aoigheachd agam Manjaro Linux agus na faidhlichean gan lethbhreacadh /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors ann am prionnsapal tha iad freagarrach airson Alpine Linux agus chan eil iad ag adhbhrachadh dhuilgheadasan èiginneach, ach is dòcha gu bheil cuairteachadh eadar-dhealaichte agad agus feumaidh tu gu neo-eisimeileach faighinn a-mach a bheil mearachd ann nuair a bhios tu a ’ruith Bash anns a’ ghobhar.

Dèan lethbhreac de na faidhlichean skel dhan ghobhar. iuchair --create-dirs cruthaichidh iad na clàran riatanach mura h-eil iad ann:

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

Airson neach-cleachdaidh freumh a tha ann mar-thà, dèan lethbhreac de na faidhlichean skel dìreach air an lethbhreacadh a-steach don ghobhar chun eòlaire dachaigh:

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

Bidh Alpine Linux a’ stàladh slige siostam dha luchd-cleachdaidh /bin/sh, cuiridh sinn an àite e root neach-cleachdaidh ann am Bash:

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

gu bheil root cha robh an neach-cleachdaidh gun fhacal-faire, feumaidh e facal-faire a shuidheachadh. Ginidh agus suidhichidh an àithne a leanas facal-faire air thuaiream ùr dha, a chì thu air scrion a’ chonsail às deidh a chuir gu bàs:

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

Cuideachd, cruthaichidh sinn cleachdaiche siostam ùr - jupyter airson an rèiteachaidh sinn nas fhaide air adhart obair-lann jupyter:

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

Gineadh agus suidhich sinn facal-faire air a shon:

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

An uairsin, cuiridh sinn dà òrdugh an gnìomh, cruthaichidh a’ chiad fhear buidheann siostam sudo, agus cuiridh an dàrna fear cleachdaiche ris jupyter:

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

Chì sinn dè na buidhnean dham buin an neach-cleachdaidh jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Tha a h-uile dad ceart gu leòr, gluaisidh sinn air adhart.

Leig leis a h-uile neach-cleachdaidh a tha nam buill den bhuidheann sudo cleachd àithne sudo. Gus seo a dhèanamh, ruith an sgriobt a leanas, far a bheil sed a’ toirt a-mach loidhne paramadair san fhaidhle rèiteachaidh /etc/sudoers:

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

A 'stàladh agus a' rèiteachadh JupyterLab ^

obair-lann jupyter 's e aplacaid Python a th' ann, mar sin feumaidh sinn an t-eadar-theangair seo a stàladh an toiseach. Cuideachd, obair-lann jupyter stàlaidhidh sinn a’ cleachdadh manaidsear pacaid Python pip, agus chan e an siostam aon, oir is dòcha gu bheil e seann-fhasanta ann an stòr an t-siostaim agus mar sin, feumaidh sinn na h-eisimeileachd air a shon fhuasgladh le làimh le bhith a’ stàladh na pacaidean a leanas - python3 python3-dev gcc libc-dev zeromq-dev:

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

Nach ùraich sinn modalan python agus manaidsear pacaid pip chun an tionndadh làithreach:

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

Stàlaich obair-lann jupyter tro mhanaidsear pacaid pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Air sgàth na leudachain a-steach obair-lann jupyter tha iad deuchainneach agus chan eil iad air an cur gu h-oifigeil leis a’ phacaid jupyterlab, agus mar sin feumaidh sinn a stàladh agus a rèiteachadh le làimh.

Feuch an stàlaich sinn NodeJS agus am manaidsear pacaid air a shon - NPM, bhon uair sin obair-lann jupyter gan cleachdadh airson a leudachadh:

lxc exec jupyterlab -- apk add nodejs npm

Gu leudachain airson obair-lann jupyter a stàlaicheas sinn ag obair, feumaidh iad a bhith air an stàladh anns an eòlaire cleachdaiche oir thèid an tagradh a chuir air bhog bhon neach-cleachdaidh jupyter. Is e an duilgheadas a th’ ann nach eil paramadair anns an àithne tòiseachaidh a dh’ fhaodar a chuir gu eòlaire; chan eil an tagradh a’ gabhail ach ri caochladair àrainneachd agus mar sin feumaidh sinn a mhìneachadh. Gus seo a dhèanamh, sgrìobhaidh sinn an àithne às-mhalairt caochlaideach JUPYTERLAB_DIR ann an àrainneachd an neach-cleachdaidh jupyter, a faidhleadh .bashrca thèid a chuir gu bàs a h-uile uair a logas an neach-cleachdaidh a-steach:

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

Cuiridh an ath àithne leudachadh sònraichte - manaidsear leudachaidh a-steach obair-lann 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"

A-nis tha a h-uile dad deiseil airson a ’chiad fhoillseachadh obair-lann jupyter, ach is urrainn dhuinn beagan leudachaidhean feumail a stàladh fhathast:

  • toc - Clàr-innse, a’ gineadh liosta de chinn ann an artaigil/leabhar notaichean
  • jupyterlab-horizon-theme - cuspair UI
  • jupyterlab_neon_theme - cuspair UI
  • jupyterlab-ubu-theme — Fear eile cuspair bhon ùghdar an artaigil seo :) Ach anns a 'chùis seo, thèid an stàladh bho stòr GitHub a shealltainn

Mar sin, ruith na h-òrdughan a leanas ann an òrdugh gus na leudachain sin a stàladh:

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"

Às deidh na leudachain a chuir a-steach, feumaidh sinn an cur ri chèile, oir roimhe seo, rè an stàlaidh, shònraich sinn an iuchair --no-build gus ùine a shàbhaladh. A-nis bidh sinn a’ luathachadh gu mòr le bhith gan cur ri chèile ann an aon turas:

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

A-nis ruith an dà àithne a leanas gus a ruith airson a’ chiad uair obair-lann jupyter. Bhiodh e comasach a chuir air bhog le aon àithne, ach anns a ’chùis seo, bidh an àithne cur air bhog, a tha duilich a chuimhneachadh nad inntinn, air a chuimhneachadh le bash anns a’ ghobhar, agus chan ann air an òstair, far a bheil òrdughan gu leòr ann mu thràth airson an clàradh san eachdraidh :)

Log a-steach don bhogsa mar neach-cleachdaidh jupyter:

lxc exec jupyterlab -- su -l jupyter

Air adhart, ruith obair-lann jupyter le iuchraichean agus crìochan mar a chaidh a chomharrachadh:

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

Rach don t-seòladh sa bhrobhsair lìn agad http://10.0.5.5:8888 agus air an duilleag a tha a’ fosgladh cuir a-steach comharradh ruigsinneachd a chì thu sa chonsail. Dèan lethbhreac agus pasg air an duilleag, agus an uairsin cliog login. Às deidh dhut logadh a-steach, rachaibh chun chlàr leudachain air an taobh chlì, mar a chithear san fhigear gu h-ìosal, far an tèid iarraidh ort, nuair a chuireas tu am manaidsear leudachaidh an gnìomh, cunnartan tèarainteachd a ghabhail le bhith a ’stàladh leudachain bho threas phàrtaidhean airson a bheil an àithne Leasachadh JupyterLab chan eil e cunntachail:

A 'cur air bhog Jupyter gu LXD orbit

Ach, tha sinn a 'dealachadh an iomlan obair-lann jupyter agus cuir ann an soitheach e gus nach urrainn do leudachaidhean treas-phàrtaidh a dh’ fheumas agus a chleachdas NodeJS co-dhiù dàta a ghoid air an diosc ach a-mhàin an fheadhainn a dh’ fhosglas sinn am broinn an t-soithich. Faigh gu na sgrìobhainnean prìobhaideach agad air an aoigh a-steach /home chan eil e coltach gun soirbhich le pròiseasan bhon ghobhar, agus ma nì iad, feumaidh sochairean a bhith agad air faidhlichean air an t-siostam aoigheachd, leis gu bheil sinn a’ ruith an soitheach a-steach modh neo-thruaillidh. Stèidhichte air an fhiosrachadh seo, faodaidh tu measadh a dhèanamh air a’ chunnart bho bhith a’ toirt a-steach leudachadh a-steach obair-lann jupyter.

Cruthaich leabhraichean notaichean IPython (duilleagan a-steach obair-lann jupyter) a-nis air a chruthachadh ann an eòlaire dachaigh an neach-cleachdaidh - /home/jupyter, ach tha na planaichean againn an dàta (roinn) a roinn eadar an aoigh agus an soitheach, mar sin till air ais chun consol agus stad obair-lann jupyter le bhith a’ cur an gnìomh hotkey - CTRL+C agus a' freagairt y air iarrtas. An uairsin cuir crìoch air seisean eadar-ghnìomhach an neach-cleachdaidh jupyter a 'lìonadh hotkey CTRL+D.

A’ roinneadh dàta leis an òstair ^

Gus dàta a cho-roinn leis an òstair, feumaidh tu inneal a chruthachadh anns a’ ghobhar a leigeas leat seo a dhèanamh agus seo a dhèanamh, ruith an àithne a leanas far am bi sinn a’ sònrachadh na h-iuchraichean a leanas:

  • lxc config device add - Bidh an àithne a’ cur rèiteachadh an uidheim ris
  • jupyter - ID an t-soithich ris a bheil an rèiteachadh air a chur ris
  • hostfs - ID inneal. Faodaidh tu ainm sam bith a shuidheachadh.
  • disk - Tha an seòrsa inneal air a chomharrachadh
  • path - Sònraich an t-slighe anns a’ bhogsa ris an cuir LXD an inneal seo suas
  • source - Sònraich an stòr, an t-slighe chun eòlaire air an òstair a tha thu airson a roinn leis a’ ghobhar. Sònraich an t-slighe a rèir do roghainnean
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Airson an catalog /home/dv/projects/ipython-notebooks feumar cead a chuir gu neach-cleachdaidh an t-soithich aig a bheil UID co-ionann an-dràsta SubUID + UID, faic caibideil Sàbhailteachd. Sochairean Container anns an artaigil Feartan bunaiteach LXD - siostaman container Linux.

Suidhich an cead air an òstair, far am bi an sealbhadair na neach-cleachdaidh container jupyter, agus an caochladair $USER sònraichidh e an cleachdaiche aoigheachd agad mar bhuidheann:

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

Hàlo a Shaoghail! ^

Ma tha seisean tòcan agad fhathast fosgailte sa bhogsa le obair-lann jupyter, an uairsin ath-thòisich e le iuchair ùr --notebook-dir le bhith a 'suidheachadh an luach /mnt/hostfs mar an t-slighe gu freumh nan coimpiutairean-glùine anns a’ ghobhar airson an inneal a chruthaich sinn sa cheum roimhe:

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

An uairsin rachaibh chun na duilleige http://10.0.5.5:8888 agus cruthaich a’ chiad laptop agad le bhith a’ briogadh air a’ phutan air an duilleag mar a chithear san dealbh gu h-ìosal:

A 'cur air bhog Jupyter gu LXD orbit

An uairsin, san raon air an duilleag, cuir a-steach an còd Python a sheallas an clasaig Hello World!. Nuair a tha thu deiseil a-steach, brùth CTRL+ENTER no am putan “cluich” air a’ bhàr-inneal aig a’ mhullach gus am bi JupyterLab a’ dèanamh seo:

A 'cur air bhog Jupyter gu LXD orbit

Aig an ìre seo, tha cha mhòr a h-uile dad deiseil airson a chleachdadh, ach bidh e neo-inntinneach mura cuir sinn a-steach modalan Python a bharrachd (aplacaidean làn-chuimsichte) as urrainn comasan àbhaisteach Python a leudachadh gu mòr ann an obair-lann jupyter, mar sin, gluaisidh sinn air adhart :)

PS Is e an rud inntinneach gu bheil an t-seann bhuileachadh Jupyter fo ainm còd Leabhar-nota Jupyter chan eil e air falbh agus tha e ann an co-shìnte ri obair-lann jupyter. Gus tionndadh chun t-seann dreach, lean an ceangal a’ cur an iar-leasachan san t-seòladh/tree, agus thèid an gluasad chun dreach ùr a dhèanamh leis an iar-leasachan /lab, ach chan fheumar a shònrachadh:

A’ leudachadh comasan Python ^

Anns an earrainn seo, stàlaidhidh sinn modalan cànain Python cho cumhachdach ri ÀireamhPy, Bidh pandathan, Mathplotlib, IPyWidgets agus tha na toraidhean air an amalachadh a-steach do choimpiutairean-uchd obair-lann jupyter.

Mus stàlaich thu na modalan Python clàraichte tron ​​​​mhanaidsear pacaid pip feumaidh sinn an-toiseach eisimeileachd siostam fhuasgladh ann an Alpine Linux:

  • g++ - Feum air modalan a chur ri chèile, leis gu bheil cuid dhiubh gan cur an gnìomh sa chànan C ++ agus ceangail ri Python aig àm ruith mar mhodalan binary
  • freetype-dev - eisimeileachd airson modal Python Mathplotlib

Stàladh eisimeileachd:

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

Tha aon duilgheadas ann: ann an staid làithreach cuairteachadh Alpine Linux, cha bhith e comasach an dreach ùr de NumPy a chuir ri chèile; nochdaidh mearachd cruinneachaidh nach b’ urrainn dhomh fuasgladh:

mearachd: Cha b’ urrainn dhuinn cuibhlichean a thogail airson numpy a chleachdas PEP 517 agus nach gabh a chuir a-steach gu dìreach

Mar sin, stàlaidhidh sinn am modal seo mar phasgan siostam a bhios a’ sgaoileadh dreach a chaidh a chur ri chèile mar-thà, ach beagan nas sine na na tha ri fhaighinn air an làrach an-dràsta:

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

An uairsin, stàlaich modalan Python tron ​​​​mhanaidsear pacaid pip. Feuch gum bi thu foighidneach oir cuiridh cuid de mhodalan ri chèile agus faodaidh gun toir iad beagan mhionaidean. Air an inneal agam, thug an cruinneachadh ~ 15 mionaidean:

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

A' glanadh caches stàlaidh:

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

Modalan deuchainn ann an JupyterLab ^

Ma tha thu a 'ruith obair-lann jupyter, ath-thòisich e gus am bi na modalan ùra air an cur an gnìomh. Gus seo a dhèanamh, ann an seisean tòcan, cliog CTRL+C far a bheil e agad a 'ruith agus a-steach y gus stad a chur air iarrtas agus an uairsin tòiseachadh a-rithist obair-lann jupyter le putadh air an t-saighead suas air a’ mheur-chlàr gus nach cuir thu a-steach an àithne a-rithist is a-rithist Enter airson tòiseachadh air:

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

Rach don duilleag http://10.0.5.5:8888/lab no ùraich an duilleag sa bhrobhsair agad, agus an uairsin cuir a-steach an còd a leanas ann an cealla leabhar notaichean ùr:

%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

Bu chòir dhut toradh fhaighinn mar a tha san dealbh gu h-ìosal, càite IPyWidgets a’ gineadh eileamaid UI air an duilleag a bhios ag eadar-obrachadh gu h-eadar-ghnìomhach leis a’ chòd stòr, agus cuideachd Mathplotlib a’ taisbeanadh toradh a’ chòd ann an cruth dealbh mar ghraf gnìomh:

A 'cur air bhog Jupyter gu LXD orbit

Mòran eisimpleirean IPyWidgets gheibh thu e ann an clasaichean oideachaidh an seo

Dè eile? ^

'S math a rinn thu ma dh'fhuirich thu agus gun ruigeadh tu deireadh an artaigil. Cha do chuir mi a-steach sgriobt deiseil a dh’aona ghnothach aig deireadh an artaigil a chuireadh a-steach e obair-lann jupyter ann an “aon bhriogadh” gus luchd-obrach a bhrosnachadh :) Ach faodaidh tu fhèin a dhèanamh, leis gu bheil fios agad mu thràth, às deidh dhut na h-òrdughan a chruinneachadh ann an aon sgriobt Bash :)

Faodaidh tu cuideachd:

  • Suidhich ainm lìonra airson an t-soithich an àite seòladh IP le bhith ga sgrìobhadh ann an dòigh shìmplidh /etc/hosts agus cuir a-steach an seòladh sa bhrobhsair http://jupyter.local:8888
  • Cluich mun cuairt leis a’ chrìoch ghoireasan airson an t-soithich, airson seo leugh an caibideil a-steach comasan bunaiteach LXD no faigh tuilleadh fiosrachaidh air làrach leasaiche LXD.
  • Atharraich an cuspair:

A 'cur air bhog Jupyter gu LXD orbit

Agus tòrr a bharrachd as urrainn dhut a dhèanamh! Sin e. Tha mi a 'guidhe soirbheachas dhut!

ÙRACHADH: 15.04.2020/18/30 XNUMX:XNUMX - Mearachdan ceartaichte sa chaibideil “Hello, World!”
ÙRACHADH: 16.04.2020/10/00 XNUMX:XNUMX - Teacs air a cheartachadh agus air a chur ris anns an tuairisgeul air gnìomhachd manaidsear leudachaidh obair-lann jupyter
ÙRACHADH: 16.04.2020/10/40 XNUMX:XNUMX - Mearachdan ceartaichte a chaidh an lorg san teacsa agus air an atharrachadh beagan airson na b’ fheàrr a’ chaibideil “Stàladh bathar-bog bunaiteach agus stèidheachadh an t-siostam”

Source: www.habr.com

Cuir beachd ann