E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

Ua hoʻāʻo paha ʻoe i nā code a i ʻole nā ​​ʻōnaehana ʻōnaehana ma Linux i ʻole e hopohopo e pili ana i ka ʻōnaehana kumu a ʻaʻole e uhaʻi i nā mea āpau i ka hewa i ke code e holo me nā pono kumu?

Akā pehea e pili ana i ka ʻoiaʻiʻo e ʻōlelo mākou pono ʻoe e hoʻāʻo a holo i kahi hui holoʻokoʻa o nā microservices like ʻole ma ka mīkini hoʻokahi? He haneri a he tausani paha?

Me nā mīkini virtual i mālama ʻia e kahi hypervisor, hiki ke hoʻoponopono ʻia kēlā mau pilikia, akā he aha ke kumukūʻai? No ka laʻana, ʻo kahi pahu ma LXD e pili ana i ka hoʻoili ʻana o Alpine Linux e hoʻopau wale 7.60MB RAM, a ma kahi e noho ai ka ʻāpana kumu ma hope o ka hoʻomaka ʻana 9.5MB! Pehea kou makemake, e Elon Musk? Manaʻo wau e nānā nā mana kumu o LXD - kahi ʻōnaehana pahu ma Linux

Ma hope o ka hoʻomaopopo ʻana i ke ʻano o nā ipu LXD, e hele hou a noʻonoʻo, he aha inā he ʻano ʻohi ʻohi kahi e hiki ai iā ʻoe ke holo palekana i nā code no ka mea hoʻokipa, hoʻohua i nā kiʻi, dynamically (interactively) loulou UI- widget me kāu code, hoʻohui i ke code me ke kikokikona me ka blackjack... hoʻopololei? Kekahi ʻano moʻomanaʻo blog? Auwe... makemake au! Makemake! 🙂

E nānā ma lalo o ka pōpoki kahi e hoʻomaka ai mākou i loko o kahi pahu ʻO JupyterLab - ka hanauna hou o ka mea hoʻohana ma kahi o ka Jupyter Notebook kahiko, a e hoʻokomo pū mākou i nā modula Python e like me Nā NumPy, Nā Pandas, matplotlib, IPyWidgets e ʻae iā ʻoe e hana i nā mea āpau i helu ʻia ma luna a mālama iā ia āpau i kahi faila kūikawā - kahi kamepiula IPython.

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

Hoʻolālā hoʻokuʻu orbital ^

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

E wehewehe mākou i kahi hoʻolālā hana pōkole e maʻalahi iā mākou e hoʻokō i ka papahana ma luna:

  • E hoʻouka a hoʻomaka i kahi pahu e pili ana i ka pahu hoʻolaha Alpine Linux. E hoʻohana mākou i kēia māhele no ka mea e pili ana i ka minimalism a e hoʻokomo wale i ka polokalamu pono loa i loko, ʻaʻohe mea superfluous.
  • E hoʻohui i kahi disk virtual hou i loko o ka pahu a hāʻawi iā ia i inoa - hostfs a kau iā ia i ka ʻōnaehana waihona kumu. Hiki i kēia disk ke hoʻohana i nā faila ma ka host mai kahi papa kuhikuhi i hāʻawi ʻia i loko o ka ipu. No laila, e kūʻokoʻa kā mākou ʻikepili i ka ipu. Inā holoiʻia ka pahu, e mau kaʻikepili ma ka mea hoʻokipa. Eia kekahi, pono kēia papahana no ka kaʻana like ʻana i ka ʻikepili ma waena o nā pahu he nui me ka ʻole o ka hoʻohana ʻana i nā ʻenehana pūnaewele maʻamau o ka hāʻawi ʻana i ka ipu.
  • E hoʻokomo iā Bash, sudo, nā hale waihona puke pono, hoʻohui a hoʻonohonoho i kahi mea hoʻohana pūnaewele
  • E hoʻokomo iā Python, modules a hoʻohui i nā hilinaʻi binary no lākou
  • E hoʻouka a hoʻomaka ʻO JupyterLab, hoʻopilikino i ke ʻano, hoʻokomo i nā mea hoʻonui no ia.

Ma kēia ʻatikala e hoʻomaka mākou me ka hoʻokuʻu ʻana i ka ipu, ʻaʻole mākou e noʻonoʻo e hoʻokomo a hoʻonohonoho i ka LXD, hiki iā ʻoe ke loaʻa i kēia mau mea āpau ma kahi ʻatikala - Nā hiʻohiʻona kumu o LXD - nā ʻōnaehana pahu Linux.

Hoʻokomo a hoʻonohonoho i ka ʻōnaehana kumu ^

Hana mākou i kahi pahu me ke kauoha a mākou e kuhikuhi ai i ke kiʻi - alpine3, mea hōʻike no ka ipu - jupyterlab a, inā pono, nā ʻaoʻao hoʻonohonoho:

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

Eia wau ke hoʻohana nei i kahi ʻaoʻao hoʻonohonoho hddroot e kuhikuhi ana i ka hana ʻana i kahi pahu me kahi ʻāpana kumu i loko Waihona Waiwai Aia ma kahi diski HDD kino:

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

Hāʻawi kēia iaʻu i ka manawa e hoʻokolohua me nā pahu ma ka disk HDD, e mālama ana i nā kumuwaiwai o ka disk SSD, aia nō hoʻi i loko o kaʻu ʻōnaehana 🙂 no ka mea aʻu i hana ai i kahi kikoʻī hoʻonohonoho kaʻawale. ssdroot.

Ma hope o ka hana ʻia ʻana o ka ipu, aia i ka mokuʻāina STOPPED, no laila pono mākou e hoʻomaka me ka holo ʻana i ka ʻōnaehana init i loko:

lxc start jupyterlab

E hōʻike i kahi papa inoa o nā ipu ma LXD me ke kī -c e hoike ana i ka mea chōʻike olumns:

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

I ka hana ʻana i ka ipu, ua koho ʻia ka IP address ma ke ʻano maʻamau, no ka mea, ua hoʻohana mākou i kahi ʻaoʻao hoʻonohonoho default i hoʻonohonoho mua ʻia ma ka ʻatikala Nā hiʻohiʻona kumu o LXD - nā ʻōnaehana pahu Linux.

E hoʻololi mākou i kēia IP IP i kahi mea poina ʻole ma ka hana ʻana i kahi kikowaena pūnaewele ma ka pae pahu, ʻaʻole ma ka pae hoʻonohonoho hoʻonohonoho e like me ia i ka hoʻonohonoho o kēia manawa. ʻAʻole pono ʻoe e hana i kēia, hiki iā ʻoe ke lele.

Ke hana ʻana i kahi kikowaena pūnaewele eth0 kahi a mākou e hoʻopili ai i ke kuapo (alahaka pūnaewele) lxdbr0 kahi i hiki ai iā mākou ke NAT e like me ka ʻatikala ma mua a loaʻa i ka ipu i kēia manawa ke komo i ka Pūnaewele, a hāʻawi pū mākou i kahi leka uila IP static i ka interface - 10.0.5.5:

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

Ma hope o ka hoʻohui ʻana i kahi hāmeʻa, pono e hoʻomaka hou ka ipu:

lxc restart jupyterlab

Ke nānā nei i ke kūlana o ka ipu:

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

Ke hoʻouka ʻana i nā polokalamu kumu a me ka hoʻonohonoho ʻana i ka ʻōnaehana ^

No ka lawelawe ʻana i kā mākou pahu, pono ʻoe e hoʻokomo i kēia polokalamu:

pūʻolo
Description

ke kī
ʻO ka pūpū GNU Bourne Again

bash-hoʻopau
Hoʻopau polokalamu no ka pūpū bash

sudo
Hāʻawi i kekahi mau mea hoʻohana i ka hiki ke holo i kekahi mau kauoha ma ke ʻano he kumu

malu
ʻO ka ʻōlelo huna a me nā mea hana hoʻokele moʻokāki me ke kākoʻo no nā faila shadow a me PAM

tzdata
Nā kumu no ke kaʻina manawa a me ka ʻikepili manawa mālama lā

nano
ʻO ka clone hoʻoponopono Pico me nā mea hoʻonui

Eia hou, hiki iā ʻoe ke hoʻokomo i ke kākoʻo ma nā ʻaoʻao kanaka ʻōnaehana ma ka hoʻokomo ʻana i nā pūʻolo aʻe − man man-pages mdocml-apropos less

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

E nānā i nā kauoha a me nā kī a mākou i hoʻohana ai:

  • lxc — Kāhea i ka mea kūʻai mai LXD
  • exec - LXD mea kūʻai hana e holo i ke kauoha i loko o ka ipu
  • jupyterlab — Container ID
  • -- - He kī kūikawā e kuhikuhi ana ʻaʻole e wehewehe i nā kī hou e like me nā kī no lxc a e hāʻawi i ke koena o ke kaula e like me ka ipu
  • apk — Alpine Linux distribution package manager
  • add — He ala hoʻoponopono pūʻolo e hoʻokomo i nā pūʻolo i kuhikuhi ʻia ma hope o ke kauoha

A laila, e hoʻonoho mākou i kahi manawa manawa i ka ʻōnaehana Europe/Moscow:

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

Ma hope o ka hoʻokomo ʻana i ka palena manawa, ʻo ka pūʻolo tzdata ʻAʻole pono i loko o ka ʻōnaehana, e lawe i kahi ākea, no laila e holoi mākou:

lxc exec jupyterlab -- apk del tzdata

Ke nānā nei i ka palena manawa:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

I ʻole e hoʻolilo i ka manawa nui i ka hoʻonohonoho ʻana iā Bash no nā mea hoʻohana hou i loko o ka ipu, ma nā ʻanuʻu aʻe e kope mākou i nā faila skel i hoʻomākaukau ʻia mai ka ʻōnaehana hoʻokipa iā ia. E ʻae kēia iā ʻoe e hoʻonani iā ​​Bash i loko o kahi pahu me ka launa pū. ʻO kaʻu ʻōnaehana hoʻokipa ʻo Manjaro Linux a ke kope ʻia nei nā faila /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors ma ke kumu kūpono lākou no Alpine Linux a ʻaʻole e hoʻokau i nā pilikia koʻikoʻi, akā loaʻa paha iā ʻoe kahi mahele ʻē aʻe a pono ʻoe e noʻonoʻo kūʻokoʻa inā he hewa i ka wā e holo ai ʻo Bash i ka ipu.

E kope i nā faila skel i ka pahu. Ki --create-dirs e hana i nā papa kuhikuhi pono inā ʻaʻole lākou:

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

No ka mea hoʻohana kumu, e kope i nā faila skel i kope ʻia i loko o ka ipu i ka papa kuhikuhi home:

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

Hoʻokomo ʻo Alpine Linux i kahi pūpū ʻōnaehana no nā mea hoʻohana /bin/sh, e pani mākou iā ia me root mea hoʻohana ma Bash:

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

ia root ʻAʻole ʻōlelo huna ka mea hoʻohana, pono ʻo ia e hoʻonohonoho i kahi ʻōlelo huna. ʻO ke kauoha aʻe e hoʻopuka a hoʻonohonoho i kahi huaʻōlelo maʻamau hou nona, āu e ʻike ai ma ka ʻaoʻao console ma hope o kona hoʻokō ʻana:

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

Eia kekahi, e hana kākou i mea hoʻohana ʻōnaehana hou - jupyter a mākou e hoʻonohonoho ai ma hope ʻO JupyterLab:

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

E hana a hoʻonoho i ka ʻōlelo huna no 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

A laila, e hoʻokō mākou i ʻelua mau kauoha, ʻo ka mea mua e hana i kahi hui ʻōnaehana sudo, a e hoʻohui ka lua i kahi mea hoʻohana iā ia jupyter:

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

E ʻike kākou i nā pūʻulu o ka mea hoʻohana jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Ua maikaʻi nā mea a pau, e neʻe kāua.

ʻAe i nā mea hoʻohana a pau i lālā o ka hui sudo hoʻohana kauoha sudo. No ka hana ʻana i kēia, e holo i kēia ʻatikala, kahi sed uncomments i ka laina koho ma ka waihona hoʻonohonoho /etc/sudoers:

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

Ke kau ʻana a me ka hoʻonohonoho ʻana iā JupyterLab ^

ʻO JupyterLab he noi Python, no laila pono mākou e hoʻokomo mua i kēia unuhi. Eia kekahi, ʻO JupyterLab e hoʻokomo mākou me ka hoʻohana ʻana i ka luna hoʻokele Python pip, a ʻaʻole ʻo ka ʻōnaehana hoʻokahi, no ka mea ua hala ʻole ia i ka waihona waihona a no laila, pono mākou e hoʻoholo lima i nā hilinaʻi no ia mea ma ke kau ʻana i nā pūʻulu aʻe − python3 python3-dev gcc libc-dev zeromq-dev:

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

E hōʻano hou i nā modula python a me ka luna pūʻolo pip i ka mana o kēia manawa:

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

E hoʻouka ʻO JupyterLab ma o ka luna pūʻolo pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Mai ka hoonui ana i ʻO JupyterLab he hoʻokolohua a ʻaʻole hoʻouna ʻia me ka pūʻolo jupyterlab, no laila pono mākou e hoʻokomo a hoʻonohonoho me ka lima.

E hoʻokomo iā NodeJS a me ka luna pūʻolo no ia - NPM, mai ʻO JupyterLab hoʻohana iā lākou no kāna mau hoʻonui:

lxc exec jupyterlab -- apk add nodejs npm

I nā hoʻonui no ʻO JupyterLab ka mea a mākou e hoʻouka ai, pono lākou e hoʻokomo i ka papa kuhikuhi mea hoʻohana mai ka wā e hoʻokuʻu ʻia ka noi mai ka mea hoʻohana jupyter. ʻO ka pilikia, ʻaʻohe ʻāpana i ke kauoha hoʻomaka e hiki ke hāʻawi ʻia i kahi papa kuhikuhi; ʻae wale ka noi i kahi ʻano hoʻololi kaiapuni a no laila pono mākou e wehewehe. No ka hana ʻana i kēia, e kākau mākou i ke kauoha export variable JUPYTERLAB_DIR i ka puni o ka mea hoʻohana jupyter, e waiho .bashrci hana ʻia i kēlā me kēia manawa e komo ai ka mea hoʻohana:

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

ʻO ke kauoha aʻe e hoʻokomo i kahi hoʻonui kūikawā - extension manager in ʻO JupyterLab:

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

I kēia manawa ua mākaukau nā mea a pau no ka hoʻomaka mua ʻO JupyterLab, akā hiki iā mākou ke hoʻokomo i kekahi mau mea hoʻonui pono:

  • toc — Papa o na Contents, hana i ka papa inoa o na poo ma ka atikala/notebook
  • jupyterlab-horizon-theme — Ke kumuhana UI
  • jupyterlab_neon_theme — Ke kumuhana UI
  • jupyterlab-ubu-theme - ʻO kekahi kumuhana mai ka mea kākau kēia ʻatikala :) Akā i kēia hihia, e hōʻike ʻia ka hoʻonohonoho ʻana mai ka waihona GitHub

No laila, e holo i kēia mau kauoha e hoʻokomo i kēia mau hoʻonui:

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"

Ma hope o ka hoʻokomo ʻana i nā hoʻonui, pono mākou e hōʻuluʻulu iā lākou, ʻoiai ma mua, i ka wā o ka hoʻonohonoho ʻana, ua kuhikuhi mākou i ke kī --no-build e hoola manawa. I kēia manawa, e wikiwiki mākou i ka hoʻohui ʻana iā lākou i ka hele hoʻokahi:

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

E holo i kēia mau kauoha ʻelua e holo ai no ka manawa mua ʻO JupyterLab. Hiki iā ia ke hoʻomaka me hoʻokahi kauoha, akā i kēia hihia, ʻo ke kauoha hoʻomaka, he paʻakikī ke hoʻomanaʻo i kou manaʻo, e hoʻomanaʻo ʻia e ka bash i loko o ka ipu, ʻaʻole ma ka mea hoʻokipa, kahi i lawa nā kauoha. e hoʻopaʻa iā lākou ma ka mōʻaukala :)

E komo i ka ipu ma ke ʻano he mea hoʻohana jupyter:

lxc exec jupyterlab -- su -l jupyter

A laila, holo ʻO JupyterLab me nā kī a me nā ʻāpana e like me ka mea i hōʻike ʻia:

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

E hele i ka helu wahi ma kāu polokalamu kele pūnaewele http://10.0.5.5:8888 a ma ka ʻaoʻao e wehe ana e komo hōʻailona ke komo ʻana āu e ʻike ai ma ka console. E kope a paʻi ma ka ʻaoʻao, a laila kaomi Login. Ma hope o ke komo ʻana, e hele i ka papa kuhikuhi ma ka ʻaoʻao hema, e like me ka mea i hōʻike ʻia ma ke kiʻi ma lalo nei, kahi e koi ʻia ai ʻoe, i ka wā e hoʻāla ai i ka luna hoʻonui, e lawe i nā pilikia palekana ma o ka hoʻokomo ʻana i nā hoʻonui mai nā ʻaoʻao ʻekolu no ke kauoha. Hoʻomohala ʻo JupyterLab ʻaʻole kuleana:

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

Eia naʻe, ke kaʻawale nei mākou i ka mea holoʻokoʻa ʻO JupyterLab a waiho i loko o kahi pahu i hiki ʻole i nā ʻaoʻao ʻekolu ke koi a hoʻohana iā NodeJS i ka liʻiliʻi loa i ʻaihue i ka ʻikepili ma ka disk ma mua o nā mea a mākou e wehe ai i loko o ka ipu. E kiʻi i kāu mau palapala pilikino ma ka host in /home ʻAʻole paha e kūleʻa nā kaʻina hana mai ka ipu, a inā hana lākou, pono ʻoe e loaʻa nā kuleana ma nā faila ma ka ʻōnaehana hoʻokipa, ʻoiai mākou e holo nei i ka ipu i loko. ʻano pono ʻole. Ma muli o kēia ʻike, hiki iā ʻoe ke loiloi i ka pilikia o ka hoʻokomo ʻana i nā hoʻonui i loko ʻO JupyterLab.

Ua hana ʻia nā puke puke IPython (ʻaoʻao ma ʻO JupyterLab) e hana ʻia i kēia manawa ma ka papa kuhikuhi home o ka mea hoʻohana - /home/jupyter, akā ʻo kā mākou hoʻolālā e hoʻokaʻawale i ka ʻikepili (kaʻana) ma waena o ka mea hoʻokipa a me ka ipu, no laila e hoʻi i ka console a hoʻōki ʻO JupyterLab ma ka hoʻokō ʻana i ke kī wela - CTRL+C a pane ana y ma ke noi. A laila e hoʻopau i ka hālāwai kūkākūkā o ka mea hoʻohana jupyter hoʻopiha ʻana i kahi kī wela CTRL+D.

Kaʻana like ʻikepili me ka mea hoʻokipa ^

No ka kaʻana like ʻana i ka ʻikepili me ka mea hoʻokipa, pono ʻoe e hana i kahi hāmeʻa i loko o ka pahu e hiki ai iā ʻoe ke hana i kēia a hana i kēia, e holo i kēia kauoha kahi a mākou e kuhikuhi ai i kēia mau kī:

  • lxc config device add - Hoʻohui ke kauoha i ka hoʻonohonoho hoʻonohonoho
  • jupyter - ID o ka pahu kahi i hoʻohui ʻia ai ka hoʻonohonoho
  • hostfs — Mea ID. Hiki iā ʻoe ke hoʻonohonoho i kekahi inoa.
  • disk - Hōʻike ʻia ke ʻano o ka mea hana
  • path — Hōʻike i ke ala i loko o ka pahu kahi e kau ai ʻo LXD i kēia hāmeʻa
  • source - E wehewehe i ke kumu, ke ala i ka papa kuhikuhi ma ka host āu e makemake ai e kaʻana like me ka ipu. E wehewehe i ke ala e like me kou makemake
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

No ka papa inoa /home/dv/projects/ipython-notebooks Pono e hoʻonoho ʻia ka ʻae i ka mea hoʻohana pahu nona ka UID i kēia manawa SubUID + UID, e nana mokuna Palekana. Nā Pono Mea Paʻa ma ka ʻatikala Nā hiʻohiʻona kumu o LXD - nā ʻōnaehana pahu Linux.

E hoʻonoho i ka ʻae i ka mea hoʻokipa, kahi e lilo ai ka mea nona ka mea hoʻohana ipu jupyter, a me ka hoololi $USER e kuhikuhi i kāu mea hoʻohana ma ke ʻano he hui:

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

Aloha, World! ^

Inā loaʻa iā ʻoe kahi hālāwai console e wehe ʻia i loko o ka pahu me ʻO JupyterLab, a laila e hoʻomaka hou me kahi kī hou --notebook-dir ma ka hoonoho ana i ka waiwai /mnt/hostfs e like me ke ala i ke kumu o nā laptops i loko o ka ipu no ka mea a mākou i hana ai i ka pae mua:

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

A laila e hele i ka ʻaoʻao http://10.0.5.5:8888 a hana i kāu kamepiula mua ma ke kaomi ʻana i ke pihi ma ka ʻaoʻao e like me ka hōʻike ʻana ma ke kiʻi ma lalo nei.

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

A laila, ma ke kahua ma ka ʻaoʻao, e hoʻokomo i ka code Python e hōʻike i ka maʻamau Hello World!. A pau kou komo ʻana, kaomi CTRL+ENTER a i ʻole ka pihi "pāʻani" ma ka ʻaoʻao o luna e hana iā JupyterLab i kēia:

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

I kēia manawa, aneane ua mākaukau nā mea āpau no ka hoʻohana ʻana, akā he mea hoihoi ʻole inā ʻaʻole mākou e hoʻokomo i nā modula Python hou (nā noi piha piha) hiki ke hoʻonui nui i nā mana maʻamau o Python i loko. ʻO JupyterLab, no laila, e neʻe kākou :)

PS ʻO ka mea hoihoi, ʻo ia ka hoʻokō kahiko ʻO Jupyter ma lalo o ka inoa code Puke Memo Jupyter ʻaʻole i hala a ua like ia me ʻO JupyterLab. No ka hoʻololi ʻana i ka mana kahiko, e hahai i ka loulou e hoʻohui i ka suffix ma ka helu wahi/tree, a ua hoʻokō ʻia ka hoʻololi ʻana i ka mana hou me ka suffix /lab, akā ʻaʻole pono e wehewehe ʻia:

Hoʻonui i nā mana o Python ^

Ma kēia ʻāpana, e hoʻokomo mākou i nā modula ʻōlelo Python ikaika e like me Nā NumPy, Nā Pandas, matplotlib, IPyWidgets ua hoʻohui ʻia nā hopena i loko o nā kamepiula ʻO JupyterLab.

Ma mua o ka hoʻokomo ʻana i nā modula Python i hoʻopaʻa ʻia ma o ka luna hoʻonohonoho pip pono mākou e hoʻoholo mua i nā hilinaʻi ʻōnaehana ma Alpine Linux:

  • g++ — Pono ʻia no ka hōʻuluʻulu ʻana i nā modules, no ka mea ua hoʻokō ʻia kekahi o lākou ma ka ʻōlelo C ++ a hoʻohui iā Python i ka wā holo e like me nā modula binary
  • freetype-dev - hilinaʻi no ka module Python matplotlib

Ke kau nei i nā mea hilinaʻi:

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

Aia hoʻokahi pilikia: i ka mokuʻāina o ka hoʻohele Alpine Linux i kēia manawa, ʻaʻole hiki ke hōʻuluʻulu i ka mana hou o NumPy; e ʻike ʻia kahi hewa hōʻuluʻulu ʻaʻole hiki iaʻu ke hoʻoholo:

kikowaena: ʻAʻole hiki ke kūkulu i nā huila no ka numpy e hoʻohana ana i ka PEP 517 a ʻaʻole hiki ke hoʻokomo pololei ʻia

No laila, e hoʻokomo mākou i kēia module ma ke ʻano he ʻōnaehana ʻōnaehana e hāʻawi ana i kahi mana i hōʻuluʻulu ʻia, akā ʻoi aku ka liʻiliʻi ma mua o ka mea i loaʻa i kēia manawa ma ka pūnaewele:

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

A laila, e hoʻokomo i nā modula Python ma o ka luna hoʻonohonoho pip. E ʻoluʻolu e hoʻomanawanui ʻoiai e hōʻuluʻulu ʻia kekahi mau modula a hiki i kekahi mau minuke. Ma kaʻu mīkini, lawe ʻia ka hui ʻana ~ 15 mau minuke:

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

Ke holoi nei i nā huna huna:

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

E hoʻāʻo ana i nā modula ma JupyterLab ^

Inā ʻoe e holo ana ʻO JupyterLab, e hoʻomaka hou i mea e hoʻāla ʻia nā modules hou i hoʻokomo ʻia. No ka hana ʻana i kēia, i kahi hālāwai console, kaomi CTRL+C kahi āu e holo ai a komo y e hooki i ke noi a hoʻomaka hou ʻO JupyterLab ma ke kaomi ʻana i ka pua i luna ma ka papa keyboard i ʻole e komo hou i ke kauoha a laila Enter e hoʻomaka:

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

E hele i ka ʻaoʻao http://10.0.5.5:8888/lab a i ʻole hōʻano hou i ka ʻaoʻao ma kāu polokalamu kele pūnaewele, a laila e hoʻokomo i kēia code i loko o kahi kelepona puke hou:

%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

Pono ʻoe e loaʻa kahi hopena e like me ke kiʻi ma lalo nei, ma hea IPyWidgets hana i kahi mea UI ma ka ʻaoʻao e launa pū me ke code kumu, a pēlā pū kekahi matplotlib hōʻike i ka hopena o ke code ma ke ʻano o ke kiʻi ma ke ʻano he pakuhi hana:

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

Nui nā laʻana IPyWidgets hiki iā ʻoe ke loaʻa iā ia ma nā haʻawina maanei

He aha hou aʻe? ^

Maikaʻi inā ʻoe i noho a hiki i ka hope loa o ka ʻatikala. ʻAʻole wau i kau i kahi palapala i mākaukau ma ka hope o ka ʻatikala e hoʻokomo ʻO JupyterLab i "hoʻokahi kaomi" e paipai i nā limahana :) Akā hiki iā ʻoe ke hana iā ʻoe iho, no ka mea ua ʻike mua ʻoe pehea, i ka hōʻiliʻili ʻana i nā kauoha i loko o kahi palapala Bash hoʻokahi :)

Hiki iā ʻoe ke:

  • E hoʻonoho i kahi inoa pūnaewele no ka pahu ma kahi o kahi IP address ma ke kākau ʻana ma kahi maʻalahi /etc/hosts a kākau i ka helu wahi ma ka polokalamu kele pūnaewele http://jupyter.local:8888
  • E pāʻani me ka palena waiwai no ka ipu, no kēia heluhelu ʻana i ka mokuna ma nā mana LXD kumu a i ʻole e kiʻi i ka ʻike hou aku ma ka pūnaewele hoʻomohala LXD.
  • E hoʻololi i ke kumuhana:

E hoʻokuʻu ana iā Jupyter i loko o LXD orbit

A ʻoi aku ka nui o kāu hiki ke hana! ʻo ia wale nō. Makemake wau e holomua ʻoe!

UPDATE: 15.04.2020/18/30 XNUMX:XNUMX - Hoʻoponopono i nā hewa i ka mokuna "Aloha, World!"
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX - Hoʻoponopono ʻia a hoʻohui ʻia i nā kikokikona i ka wehewehe ʻana o ka hoʻoulu ʻana o ka luna hoʻonui. ʻO JupyterLab
UPDATE: 16.04.2020/10/40 XNUMX:XNUMX - Ua hoʻoponopono ʻia nā hewa i loaʻa i ka kikokikona a hoʻololi iki ʻia no ka maikaʻi o ka mokuna "Hoʻokomo i nā polokalamu kumu a hoʻonohonoho i ka ʻōnaehana"

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka