Fa'alauiloa le Jupyter ile LXD orbit

Na e fa'ata'ita'i i le code po'o le fa'aogaina o mea fa'aoga i Linux ina ia aua ne'i e popole e uiga i le faiga faavae ma aua le talepeina mea uma i le tulaga o se mea sese i le code lea e tatau ona tamo'e ma a'a avanoa?

Ae faʻafefea le mea moni e faʻapea e te manaʻomia le suʻeina pe faʻatautaia se fuifui atoa o microservices eseese i luga o le masini e tasi? E selau po o le afe foi?

Faatasi ai ma masini komepiuta e pulea e se hypervisor, o ia faafitauli e mafai ma o le a foia, ae o le a le tau? Mo se faʻataʻitaʻiga, o se atigipusa i le LXD e faʻavae i luga o le Alpine Linux tufatufaina e faʻaaogaina 7.60MB RAM, ma le mea o loʻo i ai le vaeluaga o aʻa pe a uma le amataga 9.5MB! E fa'apefea ona e fiafia i ai, Elon Musk? Ou te fautuaina e siaki fa'avae gafatia o LXD - se koneteina faiga i Linux

Ina ua uma ona manino i le lautele mea LXD koneteina, sei o tatou agai i luma ma mafaufau, e a pe a faapea o loo i ai se tulaga o le seleselega lea e mafai ona e tamoe saogalemu code mo le talimalo, faatupuina kalafi, dynamically (interactively) sootaga UI- widgets ma lau code, fa'aopoopo le fa'ailoga ma tusitusiga ma blackjack... fa'atulagaina? O se ituaiga blog fegalegaleai? Oka... ou te manao i ai! Mana'o! 🙂

Va'ai i lalo o le pusi lea o le a tatou fa'alauiloa ai i totonu o se atigipusa jupyter lab - o le isi augatupulaga o faʻaoga faʻaoga nai lo le Jupyter Notebook ua leva, ma o le a matou faʻapipiʻiina foi le Python modules pei o Numasi, panda, matplotlib, IPyWidgets lea e mafai ai ona e faia mea uma o loʻo lisi atu i luga ma faʻasaoina uma i se faila faʻapitoa - o le komepiuta IPython.

Fa'alauiloa le Jupyter ile LXD orbit

Fuafuaga e alu ese ai i fafo ^

Fa'alauiloa le Jupyter ile LXD orbit

Sei o tatou otootoina se fuafuaga faatino puupuu e faafaigofie ai mo i tatou ona faatino le polokalame o loo i luga:

  • Tatou fa'apipi'i ma fa'alauiloa se atigipusa e fa'atatau i le pusa fa'asoa alpine linux. Matou te faʻaogaina lenei tufatufaga aua e faʻatatau i le minimalism ma o le a faʻapipiʻiina naʻo le polokalama sili ona manaʻomia i totonu, leai se mea e sili atu.
  • Se'i o tatou fa'aopoopoina se isi tisiki mata'utia i totonu o le koneteina ma tu'u i ai se igoa - hostfs ma faapipii i le faiga faila faila. O lenei tisiki o le a mafai ai ona faʻaoga faila i luga o le talimalo mai se lisi tuʻuina atu i totonu o le koneteina. O le mea lea, o a matou faʻamatalaga o le a tutoatasi mai le pusa. Afai e tape le koneteina, o le a tumau le faʻamatalaga i luga o le talimalo. E le gata i lea, o lenei polokalame e aoga mo le fefaʻasoaaʻi o faʻamatalaga tutusa i le va o le tele o koneteina e aunoa ma le faʻaogaina o fesoʻotaʻiga masani o le tufatufaina o pusa.
  • Sei o tatou faʻapipiʻi Bash, sudo, faletusi talafeagai, faʻaopoopo ma faʻapipiʻi se tagata faʻaoga
  • Tatou fa'apipi'i le Python, modules ma tu'ufa'atasiga fa'alagolagoina binary mo i latou
  • Tatou fa'apipi'i ma fa'alauiloa jupyter lab, faʻavasega foliga, faʻapipiʻi faʻaopoopoga mo ia.

I lenei tusiga o le a tatou amata i le faʻalauiloaina o le koneteina, matou te le mafaufau e faʻapipiʻi ma faʻapipiʻi LXD, e mafai ona e mauaina uma nei i se isi tusiga - Vaega autu o LXD - Linux container systems.

Fa'atulagaina ma le fa'atulagaina o le faiga fa'avae ^

Matou te fatuina se atigipusa ma le poloaiga lea matou te faʻamaonia ai le ata - alpine3, fa'ailoa mo le atigipusa - jupyterlab ma, pe a mana'omia, fa'asologa o fa'amatalaga:

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

O lea o lo'o ou fa'aogaina se fa'asologa o fa'amatalaga hddroot lea e fa'amaoti mai e fai ai se atigipusa e iai se vaeluaga i totonu Ta'ele'ele'ele o lo'o i luga o se tisiki HDD faaletino:

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

O lenei mea e maua ai e aʻu le avanoa e faʻataʻitaʻi ai pusa i luga o le HDD disk, faʻasaoina punaoa o le SSD disk, lea o loʻo avanoa foi i laʻu polokalama 🙂 lea na ou fatuina ai se faʻamatalaga faʻatulagaina eseese. ssdroot.

A uma ona fai le koneteina, o loʻo i totonu o le setete STOPPED, o lea e tatau ai ona tatou amataina e ala i le faʻaogaina o le init system i totonu:

lxc start jupyterlab

Se'i o tatou fa'aali se lisi o koneteina ile LXD e fa'aaoga ai le ki -c lea e faailoa mai ai cfa'aaliga fa'ailoga:

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

I le fatuina o le atigipusa, o le tuatusi IP na filifilia faʻafuaseʻi, talu ai na matou faʻaogaina se faʻamatalaga faʻatulagaina default lea na fa'atulaga muamua i le tusiga Vaega autu o LXD - Linux container systems.

O le a matou suia lenei tuatusi IP i se mea e sili atu ona manatua pea e ala i le fatuina o se fesoʻotaʻiga fesoʻotaʻiga i le tulaga o koneteina, ae le o le faʻasologa o faʻamatalaga faʻasologa e pei ona i ai nei i le faʻatulagaga o loʻo i ai nei. E te le tau faia lenei mea, e mafai ona e faamisi.

Fausia se feso'otaiga feso'ota'iga eth0 lea matou te feso'ota'i i le ki (alalaupapa feso'ota'iga) lxdbr0 lea na matou faʻatagaina ai le NAT e tusa ai ma le tusiga muamua ma o le pusa o le a maua nei le avanoa i luga o le Initaneti, ma matou tuʻuina atu foi se tuatusi IP faʻapitoa i le atinaʻe - 10.0.5.5:

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

A maeʻa ona faʻaopoopo se masini, e tatau ona toe faʻafou le koneteina:

lxc restart jupyterlab

Siaki le tulaga o le container:

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

Fa'apipi'i polokalame fa'avae ma fa'atūina le faiga ^

Ina ia faʻatautaia la matou koneteina, e manaʻomia ona e faʻapipiʻi le polokalama lea:

afī
faʻamatalaga

bash
O le GNU Bourne Again atigi

bash-maea
Fa'amae'a fa'apolokalame mo le atigi bash

sudo
Tu'u atu i nisi tagata fa'aoga le tomai e fa'atino ai ni fa'atonuga e fai ma a'a

ata lafoia
Fa'amatalaga fa'amatalaga ma fa'amatalaga meafaigaluega fa'apipi'i fa'atasi ma le lagolago mo faila paolo ma PAM

tzdata
Punavai mo sone taimi ma fa'amaumauga o taimi fa'asao i le ao

nano
Pico editor clone ma faʻaleleia

E le gata i lea, e mafai ona e fa'apipi'i le lagolago i le system man-pages e ala i le fa'apipi'iina o afifi nei − man man-pages mdocml-apropos less

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

Se'i o tatou va'ai i fa'atonuga ma ki na matou fa'aaogaina:

  • lxc — Valaau LXD client
  • exec - LXD tagata fa'atau auala e fa'atino ai se fa'atonuga i totonu o le koneteina
  • jupyterlab — Container ID
  • -- — O se ki fa'apitoa e fa'amaoti mai e le fa'amatalaina nisi ki e fai ma ki mo lxc ma pasi le manoa o totoe e pei ona i ai i le fagu
  • apk - Alpine Linux pule fa'asoa pusa
  • add - O se metotia pule o pusa e faʻapipiʻi ai afifi faʻamaonia pe a uma le faʻatonuga

Sosoo ai, o le a tatou setiina se sone taimi i le faiga Europe/Moscow:

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

A maeʻa ona faʻapipiʻi le sone taimi, o le afifi tzdata e le o toe manaʻomia i le polokalama, o le a faʻaalu avanoa, o lea seʻi o tatou tapeina:

lxc exec jupyterlab -- apk del tzdata

Siaki le sone taimi:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Ina ia aua le faʻaaluina le tele o le taimi e faʻatulaga ai Bash mo tagata fou i totonu o le koneteina, i laasaga nei o le a matou kopiina faila skel saunia mai le polokalama talimalo i ai. Ole mea lea ole a fa'atagaina oe e fa'amatagofie Bash i totonu o se atigipusa fegalegaleai. O laʻu polokalama talimalo o Manjaro Linux ma faila o loʻo kopiina /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors i le mataupu faavae latou te talafeagai mo Alpine Linux ma e le mafua ai ni faʻafitauli ogaoga, ae atonu e iai sau tufatufaga ese ma e manaʻomia ona e faʻataʻitaʻi tutoʻatasi pe i ai se mea sese pe a taʻavale Bash i totonu o le pusa.

Kopi faila skel i le koneteina. Ki --create-dirs o le a fatuina lisi talafeagai pe a le o iai:

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

Mo se tagata faʻaoga aʻa o loʻo i ai nei, kopi faila skel na faatoa kopiina i totonu o le koneteina i le lisi o fale:

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 fa'apipi'i se atigi faiga mo tagata fa'aoga /bin/sh, o le a tatou suia i root tagata faʻaoga i Bash:

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

lea root e le'i leai se upu fa'aoga le tagata fa'aoga, e mana'omia ona ia seti se fa'aupuga. O le faʻatonuga o loʻo mulimuli mai o le a faʻatupuina ma setiina se faʻaupuga fou mo ia, lea o le a e vaʻaia i luga o le faʻamafanafanaga mata pe a uma ona faʻataunuʻuina:

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

E le gata i lea, seʻi o tatou fatuina se tagata faʻaoga fou - jupyter lea o le a tatou fetuutuunai mulimuli ane jupyter lab:

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

Sei o tatou fatuina ma seti se upu faataga mo ia:

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

Ma le isi, o le a matou faia ni poloaiga se lua, o le muamua o le a fatuina se vaega faʻavae sudo, ma o le lona lua o le a faʻaopoopoina se tagata faʻaoga i ai jupyter:

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

Se'i va'ai po'o a vaega e iai le tagata fa'aoga jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

O lo'o lelei mea uma, se'i fa'agasolo.

Fa'ataga tagata uma o lo'o avea ma sui o le kulupu sudo fa'aaoga le fa'atonuga sudo. Ina ia faia lenei mea, taʻavale le tusitusiga o loʻo i lalo, i fea sed fa'alilolilo le laina fa'amaufa'ailoga i le faila fa'atulagaina /etc/sudoers:

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

Faʻapipiʻi ma faʻapipiʻi JupyterLab ^

jupyter lab o se Python talosaga, o lea e tatau ona tatou faʻapipiʻi muamua lenei faʻaliliu. E lē gata i lea, jupyter lab matou te faʻapipiʻi e faʻaaoga ai le Python package manager pip, ae le o le polokalama tasi, aua e ono tuai i le fale teu oloa ma o le mea lea, e tatau ona tatou foia ma le lima le faalagolago i ai e ala i le faʻapipiʻiina o afifi nei − python3 python3-dev gcc libc-dev zeromq-dev:

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

Sei o tatou fa'afou le python modules ma le package manager pip i le lomiga o iai nei:

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

Faʻapipiʻi jupyter lab e ala i le package manager pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Talu mai le faaopoopoga i jupyter lab e faʻataʻitaʻi ma e leʻo faʻasalalau aloaia i le jupyterlab package, o lea e tatau ai ona matou faʻapipiʻi ma faʻapipiʻi ma le lima.

Sei o tatou faʻapipiʻi NodeJS ma le pule o pusa mo ia - NPM, talu ai jupyter lab faʻaaogaina mo ona faʻaopoopoga:

lxc exec jupyterlab -- apk add nodejs npm

I fa'aopoopoga mo jupyter lab lea o le a matou faʻapipiʻi galue, e manaʻomia ona faʻapipiʻi i le lisi o tagata faʻaoga talu ai o le a faʻalauiloaina le talosaga mai le tagata faʻaoga jupyter. O le faʻafitauli o le leai o se parakalafa i le faʻatonuga faʻalauiloa e mafai ona tuʻuina atu i se lisi; o le talosaga naʻo le taliaina o se fesuiaiga o le siosiomaga ma o lea e tatau ai ona tatou faʻamalamalamaina. Ina ia faia lenei mea, o le a matou tusia le fesuiaiga o le export command JUPYTERLAB_DIR i totonu ole siosiomaga ole tagata fa'aoga jupyter, ia faila .bashrclea e faia i taimi uma e ulufale ai le tagata faʻaoga:

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

O le isi poloaiga o le a faʻapipiʻi se faʻaopoopoga faʻapitoa - extension manager in jupyter lab:

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

O lea ua sauni mea uma mo le fa'alauiloa muamua jupyter lab, ae e mafai lava ona matou faʻapipiʻi ni nai faʻaopoopoga aoga:

  • toc — Lisi o Mataupu, faia se lisi o ulutala i totonu o se tusiga / api
  • jupyterlab-horizon-theme - UI autu
  • jupyterlab_neon_theme - UI autu
  • jupyterlab-ubu-theme - O le isi autu mai le tusitala lenei tusiga :) Ae i lenei tulaga, o le faʻapipiʻiina mai le GitHub repository o le a faʻaalia

O lea, faʻasolosolo faʻatonu tulafono nei e faʻapipiʻi ai faʻaopoopoga nei:

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"

A maeʻa ona faʻapipiʻi faʻaopoopoga, e tatau ona matou faʻapipiʻiina, talu ai muamua, i le taimi o faʻapipiʻi, matou faʻamaonia le ki --no-build ia faasaoina le taimi. O lenei o le a tatou faʻavavevaveina e ala i le tuufaatasia faʻatasi i le tasi alu:

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

Fa'atino nei poloaiga e lua e fa'atino ai mo le taimi muamua jupyter lab. E mafai ona faʻalauiloa i le tasi poloaiga, ae i lenei tulaga, o le faʻatonuga faʻalauiloa, lea e faigata ona manatua i lou mafaufau, o le a manatua e le bash i totonu o le atigipusa, ae le o luga o le talimalo, lea ua lava poloaiga. e faamaumauina i latou i le talafaasolopito :)

Ulufale i le koneteina o se tagata e faaaogāina jupyter:

lxc exec jupyterlab -- su -l jupyter

Sosoo ai, tamoe jupyter lab fa'atasi ai ma ki ma tapula'a e pei ona fa'ailoa mai:

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

Alu i le tuatusi i lau 'upega tafa'ilagi http://10.0.5.5:8888 ma luga o le itulau e tatala ulufale faailoga avanoa e te vaʻaia i totonu o le faʻamafanafanaga. Kopi ma faapipii i luga o le itulau, ona kiliki lea Saini i Totonu. A maeʻa ona e ulufale i totonu, alu i le lisi o faʻaopoopoga i le agavale, e pei ona faʻaalia i le ata o loʻo i lalo, lea o le a faʻamalosia ai oe, pe a faʻagaoioia le faʻaopoopoga o le pule, e faʻaogaina tulaga lamatia e ala i le faʻapipiʻiina o faʻaopoopoga mai vaega lona tolu lea o le poloaiga. JupyterLab atinae e le nafa:

Fa'alauiloa le Jupyter ile LXD orbit

Ae ui i lea, o loʻo matou faʻaesea atoa jupyter lab ma tuu i totonu o se atigipusa ina ia le mafai e faʻaopoopoga lona tolu o loʻo manaʻomia ma faʻaogaina le NodeJS e le mafai ona gaoia faʻamatalaga i luga o le tisiki e ese mai i latou tatou te tatalaina i totonu o le pusa. Alu i au pepa patino ile talimalo ile /home faiga mai le atigipusa e foliga mai e le manuia, ma afai latou te faia, ona e manaʻomia lea ona i ai ni faʻamanuiaga i faila i luga o le host system, talu ai matou te faʻatautaia le container i totonu. tulaga le taualoa. Faʻavae i luga o lenei faʻamatalaga, e mafai ona e iloiloina le lamatiaga o le aofia ai o faʻaopoopoga i totonu jupyter lab.

Fausia api IPython (itulau i jupyter lab) o le a faia nei i le lisi o fale a le tagata faʻaoga - /home/jupyter, ae o a matou fuafuaga o le vaeluaina o faʻamaumauga (faʻasoa) i le va o le talimalo ma le atigipusa, o lea toe foʻi i le faʻamafanafanaga ma taofi jupyter lab e ala i le fa'atinoina o le hotkey - CTRL+C ma tali y pe a talosagaina. Ona fa'amutaina lea o le fegalegaleai a le tagata fa'aoga jupyter fa'amae'aina se ki vevela CTRL+D.

Fa'asoa fa'amatalaga ma le talimalo ^

Ina ia faʻasoa faʻamatalaga ma le talimalo, e te manaʻomia le fatuina o se masini i totonu o le atigipusa e mafai ai ona e faia lenei mea ma faia lenei mea, faʻataʻitaʻi le poloaiga lea matou te faʻamaonia ai ki nei:

  • lxc config device add — O le poloaiga e faaopoopo ai le faatulagaga o le masini
  • jupyter - ID o le koneteina o loʻo faʻaopoopo i ai le faʻatulagaga
  • hostfs — ID masini. E mafai ona e setiina so'o se igoa.
  • disk - Le ituaiga masini ua faʻaalia
  • path — Fa'ailoa mai le ala i totonu o le atigipusa e fa'apipi'i i ai LXD lenei masini
  • source — Fa'ailoa le puna, le ala i le fa'atonu i luga o le talimalo e te mana'o e fa'asoa i le koneteina. Fa'ailoa le ala e tusa ai ma ou mana'oga
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Mo le lisi /home/dv/projects/ipython-notebooks e tatau ona tu'u le fa'atagaga i le tagata fa'aoga container o lo'o iai nei le UID e tutusa ma SubUID + UID, tagai i le mataupu Saogalemu. Tulaga Fa'apitoa i le tusiga Vaega autu o LXD - Linux container systems.

Seti le fa'atagaga ile talimalo, lea ole pule ole a avea ma tagata fa'aoga pusa jupyter, ma le fesuiaiga $USER o le a faʻamaonia lau tagata faʻaoga o se vaega:

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

Talofa, Lalolagi! ^

Afai o lo'o iai pea sau fa'amafanafanaga o lo'o tatala i totonu o le koneteina ma jupyter lab, ona toe amata lea i se ki fou --notebook-dir e ala i le setiina o le tau /mnt/hostfs e pei o le ala i le aʻa o le komepiuta i totonu o le pusa mo le masini na matou faia i le laasaga muamua:

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

Ona alu lea i le itulau http://10.0.5.5:8888 ma fatuina lau komepiuta komepiuta muamua i le kilikiina o le ki i luga o le itulau e pei ona faʻaalia i le ata o loʻo i lalo:

Fa'alauiloa le Jupyter ile LXD orbit

Ona, i totonu o le fanua i luga o le itulau, ulufale i le Python code o le a faʻaalia ai le masani Hello World!. A uma ona e ulufale, kiliki CTRL+ENTER po'o le "ta'alo" fa'amau i luga o le meafaigaluega i le pito i luga e fai ai le JupyterLab e faia lenei mea:

Fa'alauiloa le Jupyter ile LXD orbit

I le taimi nei, toetoe lava o mea uma ua sauni mo le faʻaoga, ae o le a le fiafia pe a tatou le faʻapipiʻiina isi faʻaoga Python (faʻaoga atoatoa) e mafai ona faʻalauteleina le tulaga masani o le Python i totonu. jupyter lab, o le mea lea, tatou agai i luma :)

PS O le mea manaia o le faʻatinoga tuai jupyter i lalo ole igoa ole igoa Tusigāmanatu Jupyter e le'i alu ese ma o lo'o i ai fa'atasi ma jupyter lab. Ina ia sui i le lomiga tuai, mulimuli i le so'oga fa'aopoopo le suffix i le tuatusi/tree, ma o le suiga i le lomiga fou e faia i le suffix /lab, ae e le tatau ona faʻamaonia:

Faʻalauteleina le gafatia o le Python ^

I totonu o lenei vaega, o le a matou faʻapipiʻiina ia faʻaoga gagana Python mamana e pei o Numasi, panda, matplotlib, IPyWidgets o taunuuga o ia mea e tuʻufaʻatasia i totonu o komepiuta feaveaʻi jupyter lab.

Aʻo leʻi faʻapipiʻiina le lisi Python modules e ala i le pule o pusa pip e tatau ona tatou foia muamua le faʻalagolago i le polokalama i Alpine Linux:

  • g++ — Manaomia mo le tuufaatasia o modules, talu ai o nisi o latou o loo faatinoina i le gagana C ++ ma faʻafesoʻotaʻi i le Python i le taimi taʻavale e pei o modules binary
  • freetype-dev - fa'alagolago mo le Python module matplotlib

Fa'apipi'i fa'alagolago:

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

E tasi le faʻafitauli: i le tulaga o loʻo i ai nei o le Alpine Linux tufatufaga, o le a le mafai ona tuʻufaʻatasia le lomiga fou o NumPy; o le a aliali mai se mea sese faʻapipiʻi e le mafai ona ou foia:

sesē: Le mafai ona fau uili mo numpy lea e fa'aogaina le PEP 517 ma e le mafai ona fa'apipi'i sa'o

O le mea lea, o le a matou faʻapipiʻiina lenei module e avea o se pusa faʻapipiʻi e tufatufaina atu se kopi ua uma ona tuʻufaʻatasia, ae e matua teisi atu nai lo le mea o loʻo avanoa nei i luga o le saite:

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

Le isi, faʻapipiʻi le Python modules e ala i le pule o pusa pip. Fa'amolemole onosa'i ona o le a tu'ufa'atasia nisi modules ma e ono alu ai ni nai minute. I luga o laʻu masini, o le tuufaatasiga na ave ~ 15 minute:

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

Fa'amama mea fa'apipi'i:

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

Su'ega modules i JupyterLab ^

Afai o e tamoe jupyter lab, toe amata ina ia faʻagaoioia modules fou faʻapipiʻi. Ina ia faia lenei mea, i se faʻamafanafanaga sauniga, kiliki CTRL+C i le mea e te tamo'e ai ma ulufale y e taofi le talosaga ona toe amata lea jupyter lab e ala i le oomiina o le aū i luga i luga o le piano ina ia le toe ulufale i le poloaiga ma sosoo ai Enter e amata ai:

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

Alu i le itulau http://10.0.5.5:8888/lab pe fa'afou le itulau i lau su'esu'ega, ona tu'u lea o le code lea i totonu o se api api fou:

%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

E tatau ona e maua se taunuuga e pei o le ata o loʻo i lalo, o fea IPyWidgets fa'atupuina se elemene UI i luga o le itulau e fegalegaleai fa'atasi ma le fa'ailoga puna, fa'apea fo'i matplotlib fa'aalia le taunu'uga o le code i foliga o se ata e pei o se kalafi galuega:

Fa'alauiloa le Jupyter ile LXD orbit

Tele faʻataʻitaʻiga IPyWidgets e mafai ona e mauaina i tutorials iinei

O le'a lesi mea? ^

Manuia pe a e nofo ma oo i le faaiuga o le tusiga. Ou te leʻi tuʻuina atu ma le loto i ai se tusitusiga ua saunia i le pito o le tusiga o le a faʻapipiʻi jupyter lab i le "tasi kiliki" e faʻamalosia ai tagata faigaluega :) Ae e mafai ona e faia oe lava, talu ai ua uma ona e iloa pe faʻafefea, i le aoina o poloaiga i totonu o se tasi Bash script :)

E mafai foi ona e:

  • Seti se igoa feso'ota'iga mo le atigipusa nai lo se tuatusi IP e ala i le tusia i se faigofie /etc/hosts ma ta le tuatusi i le browser http://jupyter.local:8888
  • Ta'alo fa'atasi ma le fa'atapula'a o punaoa mo le atigipusa, mo lenei faitau le mataupu i totonu faavae LXD gafatia pe maua nisi fa'amatalaga ile LXD developer site.
  • Suia le autu:

Fa'alauiloa le Jupyter ile LXD orbit

Ma sili atu mea e mafai ona e faia! Pau lava lena. Ou te moomoo ia manuia oe!

FUAFUAGA: 15.04.2020/18/30 XNUMX:XNUMX - Faʻasaʻo mea sese i le mataupu "Talofa, Lalolagi!"
FUAFUAGA: 16.04.2020/10/00 XNUMX:XNUMX - Faʻasaʻo ma faʻaopoopo tusitusiga i le faʻamatalaga o le faʻagaioia o le pule faʻaopoopo jupyter lab
FUAFUAGA: 16.04.2020/10/40 XNUMX:XNUMX - Faʻasaʻo mea sese o loʻo maua i totonu o tusitusiga ma fai sina suiga mo le lelei o le mataupu "Faʻapipiʻi polokalama faʻavae ma faʻatulagaina le faiga"

puna: www.habr.com

Faaopoopo i ai se faamatalaga