Ifilọlẹ Jupyter sinu orbit LXD

Njẹ o ti ni idanwo pẹlu koodu tabi awọn ohun elo eto ni Linux ki o má ba ṣe aniyan nipa eto ipilẹ ati ki o maṣe fa ohun gbogbo ṣubu ni ọran ti aṣiṣe ninu koodu ti o yẹ ki o ṣiṣẹ pẹlu awọn anfani gbongbo?

Ṣugbọn kini nipa otitọ pe jẹ ki a sọ pe o nilo lati ṣe idanwo tabi ṣiṣe gbogbo iṣupọ ti ọpọlọpọ awọn iṣẹ microservices lori ẹrọ kan? Ọgọrun tabi paapaa ẹgbẹrun?

Pẹlu awọn ẹrọ foju ti iṣakoso nipasẹ hypervisor, iru awọn iṣoro le ati pe yoo yanju, ṣugbọn ni idiyele wo? Fun apẹẹrẹ, eiyan kan ni LXD ti o da lori pinpin Alpine Linux njẹ nikan 7.60MB Ramu, ati ibi ti awọn root ipin wa lagbedemeji lẹhin ibẹrẹ 9.5MB! Bawo ni o ṣe fẹran iyẹn, Elon Musk? Mo ṣeduro ṣayẹwo ipilẹ awọn agbara ti LXD - a eiyan eto ni Linux

Lẹhin ti o ti han gbangba ni gbogbogbo kini awọn apoti LXD jẹ, jẹ ki a lọ siwaju ki o ronu, kini ti iru iru ẹrọ olukore ba wa nibiti o le ṣe koodu lailewu fun agbalejo naa, ṣe awọn aworan, ni agbara (ni ibaraenisepo) ọna asopọ awọn ẹrọ ailorukọ UI pẹlu koodu rẹ, ṣe afikun koodu pẹlu ọrọ pẹlu blackjack... kika? Diẹ ninu iru bulọọgi ibanisọrọ bi? Iro ohun... Mo fẹ! Fẹ! 🙂

Wo labẹ o nran ibi ti a yoo lọlẹ ni a eiyan jupyter lab - iran atẹle ti wiwo olumulo dipo iwe akiyesi Jupyter ti igba atijọ, ati pe a yoo tun fi awọn modulu Python sori ẹrọ bii Nọmba, pandas, matplotlib, IPyWidgets eyi ti yoo gba ọ laaye lati ṣe ohun gbogbo ti a ṣe akojọ rẹ loke ki o fi gbogbo rẹ pamọ sinu faili pataki kan - kọǹpútà alágbèéká IPython.

Ifilọlẹ Jupyter sinu orbit LXD

Eto gbigbe-pipa Orbital ^

Ifilọlẹ Jupyter sinu orbit LXD

Jẹ ki a ṣe ilana ilana iṣe kukuru kan lati jẹ ki o rọrun fun wa lati ṣe imuse ero ti o wa loke:

  • Jẹ ki a fi sori ẹrọ ati ṣe ifilọlẹ eiyan kan ti o da lori ohun elo pinpin Lainos Alpine. A yoo lo pinpin yii nitori pe o ni ifọkansi ni minimalism ati pe yoo fi sọfitiwia pataki julọ sinu rẹ nikan, ko si ohun ti o tayọ.
  • Jẹ ki a ṣafikun disk foju foju afikun ninu apo eiyan ki a fun ni orukọ kan - hostfs ki o si gbe e si eto faili root. Disiki yii yoo jẹ ki o ṣee ṣe lati lo awọn faili lori agbalejo lati ilana ti a fun ni inu eiyan naa. Nitorinaa, data wa yoo jẹ ominira ti eiyan naa. Ti eiyan naa ba ti paarẹ, data naa yoo wa lori agbalejo naa. Paapaa, ero yii wulo fun pinpin data kanna laarin ọpọlọpọ awọn apoti laisi lilo awọn ọna ṣiṣe nẹtiwọọki boṣewa ti pinpin eiyan.
  • Jẹ ki a fi sori ẹrọ Bash, sudo, awọn ile-ikawe pataki, ṣafikun ati tunto olumulo eto kan
  • Jẹ ki a fi Python sori ẹrọ, awọn modulu ati ṣajọ awọn igbẹkẹle alakomeji fun wọn
  • Jẹ ká fi sori ẹrọ ki o si lọlẹ jupyter lab, ṣe akanṣe irisi, fi awọn amugbooro sii fun u.

Ninu nkan yii a yoo bẹrẹ pẹlu ifilọlẹ eiyan naa, a kii yoo gbero fifi sori ẹrọ ati tunto LXD, o le wa gbogbo eyi ni nkan miiran - Awọn ẹya ipilẹ ti LXD - awọn ọna eiyan Linux.

Fifi sori ẹrọ ati iṣeto ni eto ipilẹ ^

A ṣẹda apoti kan pẹlu aṣẹ ninu eyiti a ṣe pato aworan naa - alpine3, idamo fun eiyan - jupyterlab ati, ti o ba jẹ dandan, awọn profaili iṣeto:

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

Nibi Mo nlo profaili iṣeto ni hddroot eyi ti o pato lati ṣẹda a eiyan pẹlu kan root ipin ninu Ibi ipamọ Pool ti o wa lori disiki HDD ti ara:

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

Eyi fun mi ni aye lati ṣe idanwo pẹlu awọn apoti lori disiki HDD, fifipamọ awọn orisun ti disk SSD, eyiti o tun wa ninu eto mi 🙂 eyiti Mo ti ṣẹda profaili iṣeto ni lọtọ ssdroot.

Lẹhin ti awọn eiyan ti wa ni da, o jẹ ni ipinle STOPPED, nitorinaa a nilo lati bẹrẹ nipasẹ ṣiṣe eto init ninu rẹ:

lxc start jupyterlab

Jẹ ki a ṣe afihan atokọ ti awọn apoti ni LXD ni lilo bọtini -c eyi ti o tọkasi eyi ti cifihan awọn olumns:

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

Nigbati o ba ṣẹda eiyan, adiresi IP ti yan laileto, nitori a lo profaili iṣeto ni default eyi ti a ti tunto tẹlẹ ninu nkan naa Awọn ẹya ipilẹ ti LXD - awọn ọna eiyan Linux.

A yoo yi adiresi IP yii pada si ọkan ti o ṣe iranti diẹ sii nipa ṣiṣẹda wiwo nẹtiwọọki ni ipele eiyan, kii ṣe ni ipele profaili iṣeto bi o ti wa ni iṣeto lọwọlọwọ. O ko ni lati ṣe eyi, o le foju rẹ.

Ṣiṣẹda wiwo nẹtiwọki kan eth0 eyi ti a sopọ si yipada (afara nẹtiwọki) lxdbr0 ninu eyiti a mu NAT ṣiṣẹ ni ibamu si nkan ti tẹlẹ ati eiyan yoo ni iwọle si Intanẹẹti bayi, ati pe a tun fi adiresi IP aimi si wiwo naa - 10.0.5.5:

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

Lẹhin fifi ẹrọ kan kun, eiyan naa gbọdọ tun bẹrẹ:

lxc restart jupyterlab

Ṣiṣayẹwo ipo ti apoti naa:

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

Fifi software ipilẹ sori ẹrọ ati ṣeto eto naa ^

Lati ṣakoso apoti wa, o nilo lati fi sọfitiwia atẹle yii sori ẹrọ:

package
Apejuwe

Basi
GNU Bourne Tun ikarahun

bash-ipari
Ipari eto fun ikarahun bash

sudo
Fun awọn olumulo kan ni agbara lati ṣiṣe diẹ ninu awọn aṣẹ bi gbongbo

ojiji
Ọrọigbaniwọle ati suite irinṣẹ iṣakoso akọọlẹ pẹlu atilẹyin fun awọn faili ojiji ati PAM

tzdata
Awọn orisun fun agbegbe aago ati data akoko fifipamọ awọn oju-ọjọ

nano
Pico olootu oniye pẹlu awọn imudara

Ni afikun, o le fi atilẹyin sori ẹrọ ni awọn oju-iwe eniyan eto nipa fifi awọn idii wọnyi - man man-pages mdocml-apropos less

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

Jẹ ki a wo awọn aṣẹ ati awọn bọtini ti a lo:

  • lxc - Pe onibara LXD
  • exec - LXD ni ose ọna ti o gbalaye a aṣẹ ni eiyan
  • jupyterlab - Eiyan ID
  • -- - Bọtini pataki kan ti o ṣalaye lati ma ṣe tumọ awọn bọtini siwaju bi awọn bọtini fun lxc ki o si kọja awọn iyokù ti awọn okun bi jẹ si awọn eiyan
  • apk - Alpine Linux pinpin package faili
  • add - Ọna oluṣakoso package ti o fi awọn idii ti a sọ pato lẹhin aṣẹ naa sori ẹrọ

Nigbamii ti, a yoo ṣeto agbegbe aago kan ninu eto naa Europe/Moscow:

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

Lẹhin fifi agbegbe aago sii, package naa tzdata ko nilo ninu eto naa, yoo gba aaye, nitorinaa jẹ ki a paarẹ:

lxc exec jupyterlab -- apk del tzdata

Ṣiṣayẹwo agbegbe aago:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Ni ibere ki o ma ṣe lo akoko pupọ lati ṣeto Bash fun awọn olumulo titun ninu apo eiyan, ni awọn igbesẹ wọnyi a yoo daakọ awọn faili skel ti a ti ṣetan lati inu ẹrọ igbimọ si. Eyi yoo gba ọ laaye lati ṣe ẹwa Bash ninu apoti kan ni ibaraenisọrọ. Eto agbalejo mi ni Manjaro Linux ati awọn faili ti n daakọ /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors Ni ipilẹ wọn dara fun Linux Alpine ati pe ko fa awọn iṣoro to ṣe pataki, ṣugbọn o le ni pinpin ti o yatọ ati pe o nilo lati pinnu ni ominira boya aṣiṣe kan wa nigbati o nṣiṣẹ Bash ninu apo eiyan naa.

Da awọn faili skel si eiyan. Bọtini --create-dirs yoo ṣẹda awọn ilana pataki ti wọn ko ba si:

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

Fun olumulo root ti o wa tẹlẹ, daakọ awọn faili skel ti o kan daakọ sinu apoti si itọsọna ile:

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 nfi ikarahun eto sori ẹrọ fun awọn olumulo /bin/sh, a yoo paarọ rẹ pẹlu root olumulo ni Bash:

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

ti root olumulo naa kii ṣe ọrọ igbaniwọle, o nilo lati ṣeto ọrọ igbaniwọle kan. Aṣẹ atẹle yoo ṣe ipilẹṣẹ ati ṣeto ọrọ igbaniwọle ID tuntun fun u, eyiti iwọ yoo rii loju iboju console lẹhin ipaniyan rẹ:

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

Paapaa, jẹ ki a ṣẹda olumulo eto tuntun kan - jupyter fun eyi ti a yoo tunto nigbamii jupyter lab:

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

Jẹ ki a ṣẹda ati ṣeto ọrọ igbaniwọle kan fun rẹ:

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

Nigbamii ti, a yoo ṣiṣẹ awọn aṣẹ meji, akọkọ yoo ṣẹda ẹgbẹ eto kan sudo, ati awọn keji yoo fi kan olumulo si o jupyter:

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

Jẹ ki a wo awọn ẹgbẹ ti olumulo jẹ ti jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Ohun gbogbo dara, jẹ ki a tẹsiwaju.

Gba gbogbo awọn olumulo ti o jẹ ọmọ ẹgbẹ ti ẹgbẹ laaye sudo lo pipaṣẹ sudo. Lati ṣe eyi, ṣiṣe awọn wọnyi akosile, nibo sed uncomments ila paramita ninu faili iṣeto ni /etc/sudoers:

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

Fifi ati tunto JupyterLab ^

jupyter lab jẹ ohun elo Python, nitorinaa a gbọdọ kọkọ fi onitumọ yii sori ẹrọ. Bakannaa, jupyter lab a yoo fi sori ẹrọ ni lilo oluṣakoso package Python pip, ati kii ṣe eto ọkan, nitori pe o le jẹ igba atijọ ninu ibi ipamọ eto ati nitorinaa, a ni lati yanju pẹlu ọwọ awọn igbẹkẹle fun rẹ nipa fifi awọn idii wọnyi sii - python3 python3-dev gcc libc-dev zeromq-dev:

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

Jẹ ki a ṣe imudojuiwọn awọn modulu Python ati oluṣakoso package pip si ẹya ti o wa lọwọlọwọ:

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

Fi sori ẹrọ jupyter lab nipasẹ package faili pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Niwon awọn amugbooro ni jupyter lab jẹ idanwo ati pe a ko firanṣẹ ni ifowosi pẹlu package jupyterlab, nitorinaa a ni lati fi sori ẹrọ ati tunto rẹ pẹlu ọwọ.

Jẹ ki a fi NodeJS sori ẹrọ ati oluṣakoso package fun rẹ - NPM, niwon jupyter lab nlo wọn fun awọn amugbooro rẹ:

lxc exec jupyterlab -- apk add nodejs npm

Si awọn amugbooro fun jupyter lab eyiti a yoo fi sori ẹrọ ṣiṣẹ, wọn nilo lati fi sori ẹrọ ni itọsọna olumulo nitori ohun elo naa yoo ṣe ifilọlẹ lati ọdọ olumulo jupyter. Iṣoro naa ni pe ko si paramita ninu aṣẹ ifilọlẹ ti o le kọja si itọsọna kan; ohun elo nikan gba oniyipada agbegbe ati nitorinaa a gbọdọ ṣalaye rẹ. Lati ṣe eyi, a yoo kọ aṣẹ okeere oniyipada JUPYTERLAB_DIR ni agbegbe olumulo jupyter, lati faili .bashrceyi ti a ṣe ni gbogbo igba ti olumulo ba wọle:

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

Aṣẹ atẹle yoo fi itẹsiwaju pataki kan sori ẹrọ - oluṣakoso itẹsiwaju ni 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"

Bayi ohun gbogbo ti ṣetan fun ifilọlẹ akọkọ jupyter lab, ṣugbọn a tun le fi awọn amugbooro to wulo diẹ sii:

  • toc - Tabili ti Awọn akoonu, ṣe ipilẹṣẹ atokọ ti awọn akọle ninu nkan / iwe ajako
  • jupyterlab-horizon-theme - UI akori
  • jupyterlab_neon_theme - UI akori
  • jupyterlab-ubu-theme - Omiran akori lati onkowe nkan yii :) Ṣugbọn ninu ọran yii, fifi sori ẹrọ lati ibi ipamọ GitHub yoo han

Nitorinaa, ṣiṣe awọn aṣẹ wọnyi ni atẹlera lati fi awọn amugbooro wọnyi sori ẹrọ:

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"

Lẹhin fifi awọn amugbooro sii, a gbọdọ ṣajọ wọn, nitori iṣaaju, lakoko fifi sori ẹrọ, a ṣalaye bọtini naa --no-build lati fi akoko pamọ. Bayi a yoo yara ni pataki nipa iṣakojọpọ wọn papọ ni ọna kan:

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

Bayi ṣiṣe awọn aṣẹ meji wọnyi lati ṣiṣẹ fun igba akọkọ jupyter lab. Yoo ṣee ṣe lati ṣe ifilọlẹ pẹlu aṣẹ kan, ṣugbọn ninu ọran yii, aṣẹ ifilọlẹ, eyiti o nira lati ranti ninu ọkan rẹ, yoo ranti nipasẹ bash ninu apo eiyan, kii ṣe lori agbalejo, nibiti awọn aṣẹ ti to tẹlẹ ti wa tẹlẹ. lati ṣe igbasilẹ wọn ninu itan-akọọlẹ :)

Buwolu wọle si eiyan bi a olumulo jupyter:

lxc exec jupyterlab -- su -l jupyter

Nigbamii, ṣiṣe jupyter lab pẹlu awọn bọtini ati awọn paramita bi itọkasi:

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

Lọ si adirẹsi ninu ẹrọ aṣawakiri wẹẹbu rẹ http://10.0.5.5:8888 ati lori oju-iwe ti o ṣi tẹ aami wiwọle ti o yoo ri ninu awọn console. Daakọ ati lẹẹmọ si oju-iwe naa, lẹhinna tẹ Wo ile. Lẹhin ti o wọle, lọ si akojọ aṣayan awọn amugbooro ni apa osi, bi o ṣe han ninu nọmba ti o wa ni isalẹ, nibiti iwọ yoo ti ṣetan, nigbati o ba mu oluṣakoso itẹsiwaju ṣiṣẹ, lati mu awọn eewu aabo nipasẹ fifi awọn amugbooro lati awọn ẹgbẹ kẹta fun eyiti aṣẹ naa ṣe. JupyterLab idagbasoke ko ṣe iduro:

Ifilọlẹ Jupyter sinu orbit LXD

Sibẹsibẹ, a ya sọtọ gbogbo jupyter lab ki o si gbe e sinu apoti kan ki awọn amugbooro ẹni-kẹta ti o nilo ati lo NodeJS ko le ni o kere ju ji data lori disk yatọ si awọn ti a ṣii inu apo. Gba si awọn iwe aṣẹ ikọkọ rẹ lori agbalejo ni /home Awọn ilana lati inu eiyan ko ṣeeṣe lati ṣaṣeyọri, ati pe ti wọn ba ṣe, lẹhinna o nilo lati ni awọn anfani lori awọn faili lori eto agbalejo, nitori a nṣiṣẹ eiyan ni ipo ti ko ni anfani. Da lori alaye yii, o le ṣe ayẹwo ewu ti pẹlu awọn amugbooro ninu jupyter lab.

Ṣẹda awọn iwe ajako IPython (awọn oju-iwe ni jupyter lab) yoo ṣẹda ni bayi ni itọsọna ile olumulo - /home/jupyter, ṣugbọn awọn ero wa ni lati pin data naa (pin) laarin agbalejo ati apoti, nitorinaa pada si console ki o da duro jupyter lab nipa fifi hotkey ṣiṣẹ - CTRL+C ati idahun y lori ìbéèrè. Lẹhinna fopin si igba ibaraenisepo olumulo jupyter ipari hotkey CTRL+D.

Pinpin data pẹlu agbalejo ^

Lati pin data pẹlu agbalejo, o nilo lati ṣẹda ẹrọ kan ninu apo eiyan ti o fun ọ laaye lati ṣe eyi ati lati ṣe eyi, ṣiṣe aṣẹ atẹle nibiti a ti pato awọn bọtini wọnyi:

  • lxc config device add - Awọn pipaṣẹ afikun awọn ẹrọ iṣeto ni
  • jupyter - ID ti eiyan si eyi ti iṣeto ni afikun
  • hostfs - Device ID. O le ṣeto eyikeyi orukọ.
  • disk - Iru ẹrọ ti wa ni itọkasi
  • path - Ni pato ọna ti o wa ninu apoti eyiti LXD yoo gbe ẹrọ yii sori
  • source - Pato orisun naa, ọna si itọsọna lori agbalejo ti o fẹ pin pẹlu eiyan naa. Pato ọna naa ni ibamu si awọn ayanfẹ rẹ
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Fun katalogi /home/dv/projects/ipython-notebooks a gbọdọ ṣeto igbanilaaye si olumulo eiyan ti o ni UID lọwọlọwọ SubUID + UID, wo ipin Aabo. Awọn anfani Apoti ninu nkan Awọn ẹya ipilẹ ti LXD - awọn ọna eiyan Linux.

Ṣeto igbanilaaye lori agbalejo, nibiti oniwun yoo jẹ olumulo eiyan jupyter, ati oniyipada $USER yoo pato olumulo agbalejo rẹ gẹgẹbi ẹgbẹ kan:

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

Mo ki O Ile Aiye! ^

Ti o ba tun ni igba console ti o ṣii ninu apoti pẹlu jupyter lab, lẹhinna tun bẹrẹ pẹlu bọtini titun kan --notebook-dir nipa ṣeto iye /mnt/hostfs bi ọna si gbongbo ti awọn kọnputa agbeka ninu apoti fun ẹrọ ti a ṣẹda ni igbesẹ iṣaaju:

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

Lẹhinna lọ si oju-iwe naa http://10.0.5.5:8888 ati ṣẹda kọǹpútà alágbèéká akọkọ rẹ nipa tite bọtini lori oju-iwe bi o ṣe han ninu aworan ni isalẹ:

Ifilọlẹ Jupyter sinu orbit LXD

Lẹhinna, ni aaye lori oju-iwe, tẹ koodu Python ti yoo ṣafihan Ayebaye Hello World!. Nigbati o ba ti pari titẹ sii, tẹ CTRL+ENTER tabi bọtini "mu" lori ọpa irinṣẹ ni oke lati jẹ ki JupyterLab ṣe eyi:

Ifilọlẹ Jupyter sinu orbit LXD

Ni aaye yii, o fẹrẹ jẹ pe ohun gbogbo ti ṣetan fun lilo, ṣugbọn kii yoo ṣe iwunilori ti a ko ba fi awọn modulu Python afikun sii (awọn ohun elo kikun) ti o le faagun awọn agbara boṣewa ti Python ni pataki ni pataki. jupyter labNitorina, jẹ ki a tẹsiwaju :)

PS Ohun ti o nifẹ ni pe imuse atijọ jupyter labẹ koodu orukọ Iwe Jupyter Jupyter ko ti lọ ati pe o wa ni afiwe pẹlu jupyter lab. Lati yipada si ẹya atijọ, tẹle ọna asopọ ti o ṣafikun suffix ninu adirẹsi naa/tree, ati awọn iyipada si awọn titun ti ikede ti wa ni ti gbe jade pẹlu awọn suffix /lab, sugbon ko ni lati pato:

Jù awọn agbara ti Python ^

Ni apakan yii, a yoo fi iru awọn modulu ede Python ti o lagbara bii Nọmba, pandas, matplotlib, IPyWidgets awọn esi ti eyi ti wa ni ese sinu awọn kọǹpútà alágbèéká jupyter lab.

Ṣaaju fifi sori ẹrọ awọn modulu Python ti a ṣe akojọ nipasẹ oluṣakoso package pip a gbọdọ kọkọ yanju awọn igbẹkẹle eto ni Alpine Linux:

  • g++ - Nilo fun akopọ awọn modulu, niwon diẹ ninu wọn ti wa ni imuse ni ede C ++ ati sopọ si Python ni asiko asiko bi awọn modulu alakomeji
  • freetype-dev - gbára fun Python module matplotlib

Awọn igbẹkẹle fifi sori ẹrọ:

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

Iṣoro kan wa: ni ipo lọwọlọwọ ti pinpin Alpine Linux, kii yoo ṣee ṣe lati ṣajọ ẹya tuntun ti NumPy; aṣiṣe akopọ yoo han pe Emi ko le yanju:

Aṣiṣe: Ko le kọ awọn kẹkẹ fun numpy ti o lo PEP 517 ati pe ko le fi sii taara

Nitorinaa, a yoo fi module yii sori ẹrọ bi package eto ti o pin kaakiri ẹya ti a ṣajọ tẹlẹ, ṣugbọn diẹ dagba ju eyiti o wa lọwọlọwọ lori aaye naa:

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

Nigbamii, fi sori ẹrọ awọn modulu Python nipasẹ oluṣakoso package pip. Jọwọ ṣe suuru nitori diẹ ninu awọn modulu yoo ṣe akopọ ati pe o le gba iṣẹju diẹ. Lori ẹrọ mi, akopọ gba ~ iṣẹju 15:

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

Pa awọn caches fifi sori ẹrọ kuro:

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

Awọn modulu idanwo ni JupyterLab ^

Ti o ba nṣiṣẹ jupyter lab, tun bẹrẹ ki awọn modulu ti a fi sori ẹrọ tuntun ṣiṣẹ. Lati ṣe eyi, ni igba console, tẹ CTRL+C ibi ti o ti nṣiṣẹ ki o si tẹ y lati da ibeere duro ati lẹhinna bẹrẹ lẹẹkansi jupyter lab nipa titẹ itọka oke lori keyboard ki o má ba tẹ aṣẹ sii lẹẹkansi ati lẹhinna Enter lati bẹrẹ:

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

Lọ si oju -iwe naa http://10.0.5.5:8888/lab tabi sọ oju-iwe naa sọtun ninu ẹrọ aṣawakiri rẹ, lẹhinna tẹ koodu atẹle sii sinu sẹẹli iwe ajako tuntun kan:

%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

O yẹ ki o gba abajade bi ninu aworan ni isalẹ, nibo IPyWidgets ṣe ipilẹṣẹ ẹya UI lori oju-iwe ti o ṣe ibaraenisepo pẹlu koodu orisun, ati paapaa matplotlib ṣe afihan abajade koodu ni irisi aworan bi aworan iṣẹ kan:

Ifilọlẹ Jupyter sinu orbit LXD

Ọpọlọpọ awọn apẹẹrẹ IPyWidgets o le rii ninu awọn ikẹkọ nibi

Kini ohun miiran? ^

O dara ti o ba duro ti o de opin nkan naa. Emi ko mọọmọ firanṣẹ iwe afọwọkọ ti a ti ṣetan ni ipari nkan ti yoo fi sii jupyter lab ni “tẹ kan” lati ṣe iwuri fun awọn oṣiṣẹ :) Ṣugbọn o le ṣe funrararẹ, niwọn bi o ti mọ tẹlẹ, ti o ti gba awọn aṣẹ sinu iwe afọwọkọ Bash kan :)

O tun le:

  • Ṣeto orukọ nẹtiwọọki kan fun eiyan dipo adiresi IP kan nipa kikọ ni irọrun /etc/hosts ki o si tẹ adirẹsi ninu ẹrọ aṣawakiri http://jupyter.local:8888
  • Play ni ayika pẹlu awọn oluşewadi iye to fun eiyan, fun yi ka ipin ninu ipilẹ LXD agbara tabi gba alaye diẹ sii lori aaye idagbasoke LXD.
  • Yi akori pada:

Ifilọlẹ Jupyter sinu orbit LXD

Ati pupọ diẹ sii o le ṣe! Gbogbo ẹ niyẹn. Mo fẹ o aseyori!

Imudojuiwọn: 15.04.2020/18/30 XNUMX:XNUMX - Awọn aṣiṣe atunṣe ni ori “Kaabo, Agbaye!”
Imudojuiwọn: 16.04.2020/10/00 XNUMX:XNUMX - Atunse ati ṣafikun ọrọ ni apejuwe ti imuṣiṣẹ oluṣakoso itẹsiwaju jupyter lab
Imudojuiwọn: 16.04.2020/10/40 XNUMX:XNUMX - Awọn aṣiṣe atunṣe ti a rii ninu ọrọ naa ati pe o yipada diẹ fun ilọsiwaju ni ipin “Fifi sọfitiwia ipilẹ sori ẹrọ ati ṣeto eto naa”

orisun: www.habr.com

Fi ọrọìwòye kun