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.
ʻO nā mea
- Hoʻolālā hoʻokuʻu orbital
- Hoʻokomo a hoʻonohonoho i ka ʻōnaehana kumu
- Ke hoʻouka ʻana i nā polokalamu kumu a me ka hoʻonohonoho ʻana i ka ʻōnaehana
- Ke kau ʻana a me ka hoʻonohonoho ʻana iā JupyterLab
- Kaʻana like ʻikepili me ka mea hoʻokipa
- Aloha, World!
- Hoʻonui i nā mana o Python
- E hoʻāʻo ana i nā modula ma JupyterLab
- He aha hou aʻe?
Hoʻolālā hoʻokuʻu orbital ^
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 LXDexec
- LXD mea kūʻai hana e holo i ke kauoha i loko o ka ipujupyterlab
— Container ID--
- He kī kūikawā e kuhikuhi ana ʻaʻole e wehewehe i nā kī hou e like me nā kī nolxc
a e hāʻawi i ke koena o ke kaula e like me ka ipuapk
— Alpine Linux distribution package manageradd
— 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 .bashrc
i 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/notebookjupyterlab-horizon-theme
— Ke kumuhana UIjupyterlab_neon_theme
— Ke kumuhana UIjupyterlab-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:
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ʻonohonohojupyter
- ID o ka pahu kahi i hoʻohui ʻia ai ka hoʻonohonohohostfs
— Mea ID. Hiki iā ʻoe ke hoʻonohonoho i kekahi inoa.disk
- Hōʻike ʻia ke ʻano o ka mea hanapath
— Hōʻike i ke ala i loko o ka pahu kahi e kau ai ʻo LXD i kēia hāmeʻasource
- 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.
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:
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:
- ʻO Jupyter Notebook - http://10.0.5.5:8888/tree
- ʻO Jupyter Lab - http://10.0.5.5:8888/lab
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 binaryfreetype-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:
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:
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