Launching Jupyter rau hauv LXD orbit

Koj puas tau sim nrog cov cai lossis cov khoom siv hluav taws xob hauv Linux kom tsis txhob txhawj xeeb txog lub hauv paus system thiab tsis rhuav tshem txhua yam nyob rau hauv rooj plaub ntawm qhov yuam kev hauv cov cai uas yuav tsum khiav nrog cov cai hauv paus?

Tab sis dab tsi txog qhov tseeb uas peb hais tias koj yuav tsum sim lossis khiav tag nrho pawg ntawm ntau yam microservices ntawm ib lub tshuab? Ib puas lossis txawm ib txhiab?

Nrog cov tshuab virtual tswj hwm los ntawm tus neeg saib xyuas, cov teeb meem zoo li no tuaj yeem daws tau, tab sis tus nqi dab tsi? Piv txwv li, lub thawv hauv LXD raws li Alpine Linux faib tsuas yog siv xwb 7.60MB RAM, thiab qhov twg hauv paus muab faib occupies tom qab pib 9.5MB! Koj nyiam li cas, Elon Musk? Kuv pom zoo kom mus xyuas Cov peev txheej yooj yim ntawm LXD - lub thawv ntim hauv Linux

Tom qab nws paub meej tias LXD ntim khoom yog dab tsi, cia peb mus ntxiv thiab xav tias yuav ua li cas yog tias muaj xws li lub tshuab sau qoob loo uas koj tuaj yeem ua haujlwm ruaj ntseg rau tus tswv tsev, tsim cov duab kos, dynamically (interactively) txuas UI- widgets nrog koj cov cai, ntxiv cov cai nrog cov ntawv nrog blackjack... formatting? Qee hom kev sib tham sib blog? Wow... Kuv xav tau! Xav! πŸ™‚

Saib hauv qab tus miv uas peb yuav tso rau hauv lub thawv jupyter lab - tiam tom ntej ntawm cov neeg siv interface hloov ntawm Jupyter Notebook outdated, thiab peb tseem yuav nruab Python modules xws li numpy, pandas, matplotlib, IPyWidgets uas yuav tso cai rau koj ua txhua yam uas tau teev tseg saum toj no thiab khaws nws tag nrho hauv cov ntaub ntawv tshwj xeeb - IPython laptop.

Launching Jupyter rau hauv LXD orbit

Orbital take-off plan ^

Launching Jupyter rau hauv LXD orbit

Cia peb piav qhia txog cov phiaj xwm luv luv los ua kom yooj yim rau peb los siv cov txheej txheem saum toj no:

  • Cia peb nruab thiab tso lub thawv raws li cov khoom siv faib khoom alpine linux. Peb yuav siv qhov kev faib tawm no vim nws yog tsom rau minimalism thiab yuav nruab tsuas yog cov software tsim nyog tshaj plaws rau hauv nws, tsis muaj dab tsi superfluous.
  • Cia peb ntxiv ib qho ntxiv virtual disk hauv lub thawv thiab muab nws lub npe - hostfs thiab mount nws mus rau hauv paus ntaub ntawv system. Qhov no disk yuav ua rau nws muaj peev xwm siv cov ntaub ntawv ntawm tus tswv tsev los ntawm ib phau ntawv teev npe hauv lub thawv. Yog li, peb cov ntaub ntawv yuav muaj kev ywj pheej ntawm lub thawv. Yog tias lub thawv raug tshem tawm, cov ntaub ntawv yuav nyob twj ywm ntawm tus tswv tsev. Tsis tas li ntawd, cov tswv yim no muaj txiaj ntsig zoo rau kev sib qhia tib cov ntaub ntawv ntawm ntau lub ntim yam tsis siv cov txheej txheem network txheej txheem ntawm lub thawv xa khoom.
  • Cia peb nruab Bash, sudo, cov tsev qiv ntawv tsim nyog, ntxiv thiab teeb tsa tus neeg siv qhov system
  • Cia peb nruab Python, modules thiab suav binary dependencies rau lawv
  • Cia peb nruab thiab tso tawm jupyter lab, kho qhov tsos, nruab extensions rau nws.

Hauv tsab xov xwm no peb yuav pib nrog kev tso lub thawv, peb yuav tsis xav txog kev txhim kho thiab teeb tsa LXD, koj tuaj yeem pom tag nrho cov no hauv lwm tsab xov xwm - Cov yam ntxwv tseem ceeb ntawm LXD - Linux ntim tshuab.

Installation thiab configuration ntawm lub hauv paus system ^

Peb tsim ib lub thawv nrog cov lus txib uas peb qhia cov duab - alpine3, identifier rau lub thawv - jupyterlab thiab, yog tias tsim nyog, configuration profiles:

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

Ntawm no kuv tab tom siv qhov profile configuration hddroot uas qhia tau hais tias tsim ib lub thawv nrog lub hauv paus muab faib rau hauv Lub pas dej cia nyob rau ntawm lub cev HDD disk:

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

Qhov no muab sijhawm rau kuv los sim nrog cov ntim ntawm HDD disk, txuag cov peev txheej ntawm SSD disk, uas tseem muaj nyob hauv kuv lub cev πŸ™‚ rau qhov kuv tau tsim ib qho profile cais. ssdroot.

Tom qab lub thawv tsim, nws yog nyob rau hauv lub xeev STOPPED, yog li peb yuav tsum pib nws los ntawm kev khiav lub init system hauv nws:

lxc start jupyterlab

Cia peb tso saib cov npe ntawm cov thawv hauv LXD siv tus yuam sij -c uas qhia qhov twg columns zaub:

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

Thaum tsim lub thawv, tus IP chaw nyob raug xaiv randomly, txij li thaum peb siv qhov profile configuration default uas yav tas los teeb tsa hauv kab lus Cov yam ntxwv tseem ceeb ntawm LXD - Linux ntim tshuab.

Peb yuav hloov qhov chaw nyob IP no mus rau qhov nco tau ntau dua los ntawm kev tsim lub network interface ntawm qib ntim, thiab tsis yog nyob rau theem kev teeb tsa profile raws li tam sim no nyob rau hauv kev teeb tsa tam sim no. Koj tsis tas yuav ua qhov no, koj tuaj yeem hla nws.

Tsim lub network interface eth0 uas peb txuas mus rau qhov hloov (network choj) lxdbr0 nyob rau hauv uas peb enabled NAT raws li tsab xov xwm dhau los thiab lub thawv yuav tam sim no muaj kev nkag tau mus rau hauv Internet, thiab peb kuj muab ib tug zoo li qub IP chaw nyob rau lub interface - 10.0.5.5:

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

Tom qab ntxiv ib lub cuab yeej, lub thawv yuav tsum tau rebooted:

lxc restart jupyterlab

Tshawb xyuas qhov xwm txheej ntawm lub thawv:

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

Txhim kho cov software yooj yim thiab teeb tsa lub system ^

Txhawm rau tswj hwm peb lub thawv, koj yuav tsum nruab cov software hauv qab no:

pob
Hauj lwm

bash
GNU Bourne Again plhaub

bash-ua tiav
Programmable tiav rau lub plhaub bash

sudo
Muab qee tus neeg siv lub peev xwm los khiav qee cov lus txib ua hauv paus

duab ntxoov ntxoo
Password thiab account tswj cuab yeej suite nrog kev txhawb nqa rau duab ntxoov ntxoo cov ntaub ntawv thiab PAM

tzdata
Cov peev txheej rau lub sijhawm thaj tsam thiab cov ntaub ntawv txuag lub sijhawm nruab hnub

nano
Pico editor clone nrog kev txhim kho

Tsis tas li ntawd, koj tuaj yeem nruab kev txhawb nqa hauv cov kab ke txiv neej-nplooj los ntawm kev txhim kho cov pob hauv qab no βˆ’ man man-pages mdocml-apropos less

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

Cia peb saib cov lus txib thiab cov yuam sij peb siv:

  • lxc - Hu rau LXD tus neeg siv khoom
  • exec - LXD tus neeg siv txoj kev uas khiav cov lus txib hauv lub thawv
  • jupyterlab - Ntim ID
  • -- - Tus yuam sij tshwj xeeb uas qhia tsis tau txhais cov yuam sij ntxiv ua tus yuam sij rau lxc thiab dhau qhov seem ntawm txoj hlua raws li yog mus rau lub thawv
  • apk - Alpine Linux faib pob tus thawj tswj
  • add - Ib txoj kev tswj hwm pob uas txhim kho cov pob khoom tau teev tseg tom qab cov lus txib

Tom ntej no, peb yuav teem ib lub sij hawm nyob rau hauv lub system Europe/Moscow:

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

Tom qab kev txhim kho lub sijhawm, lub pob tzdata tsis xav tau nyob rau hauv lub kaw lus, nws yuav siv qhov chaw, yog li cia peb rho tawm nws:

lxc exec jupyterlab -- apk del tzdata

Tshawb xyuas thaj tsam lub sijhawm:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Txhawm rau kom tsis txhob siv sijhawm ntau los teeb tsa Bash rau cov neeg siv tshiab hauv lub thawv, hauv cov kauj ruam hauv qab no peb yuav luam cov ntaub ntawv npaj ua tiav los ntawm tus tswv tsev rau nws. Qhov no yuav cia koj ua kom zoo nkauj Bash hauv lub thawv sib tham sib. Kuv tus tswv system yog Manjaro Linux thiab cov ntaub ntawv raug theej /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors nyob rau hauv lub hauv paus ntsiab lus lawv tsim nyog rau Alpine Linux thiab tsis ua teeb meem tseem ceeb, tab sis tej zaum koj yuav muaj ib tug sib txawv kev faib thiab koj yuav tsum tau ntawm nws tus kheej txiav txim seb puas muaj ib qho yuam kev thaum khiav Bash nyob rau hauv lub thawv.

Luam cov ntaub ntawv skel mus rau lub thawv. Ntsiab --create-dirs yuav tsim cov npe tsim nyog yog tias lawv tsis muaj:

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

Rau ib tus neeg siv hauv paus uas twb muaj lawm, luam cov ntaub ntawv skel tsuas yog theej rau hauv lub thawv rau hauv cov npe hauv tsev:

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 nruab ib lub plhaub system rau cov neeg siv /bin/sh, peb yuav hloov nws nrog root tus neeg siv hauv Bash:

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

uas root tus neeg siv tsis yog passwordless, nws yuav tsum tau teeb tsa tus password. Cov lus txib hauv qab no yuav tsim thiab teeb tsa tus password tshiab rau nws, uas koj yuav pom ntawm lub vijtsam console tom qab nws ua tiav:

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

Tsis tas li ntawd, cia peb tsim cov neeg siv system tshiab - jupyter uas peb yuav configure tom qab jupyter lab:

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

Cia peb tsim thiab teeb tus password rau nws:

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

Tom ntej no, peb yuav ua ob qho lus txib, thawj zaug yuav tsim ib pawg system sudo, thiab qhov thib ob yuav ntxiv tus neeg siv rau nws jupyter:

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

Cia peb saib seb pawg neeg siv yog dab tsi jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Txhua yam yog ok, cia peb mus.

Tso cai rau txhua tus neeg siv uas yog cov tswv cuab ntawm pab pawg sudo siv lus txib sudo. Ua li no, khiav cov ntawv hauv qab no, qhov twg sed uncomments tus parameter kab nyob rau hauv cov ntaub ntawv configuration /etc/sudoers:

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

Txhim kho thiab teeb tsa JupyterLab ^

jupyter lab yog ib daim ntawv thov Python, yog li peb yuav tsum xub nruab tus neeg txhais lus no. Tsis tas li ntawd, jupyter lab peb yuav nruab siv tus thawj tswj pob Python pip, thiab tsis yog lub kaw lus ib qho, vim tias nws yuav dhau mus rau hauv qhov chaw cia khoom thiab yog li ntawd, peb yuav tsum daws qhov kev cia siab rau nws los ntawm kev txhim kho cov pob hauv qab no - python3 python3-dev gcc libc-dev zeromq-dev:

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

Cia peb hloov kho python modules thiab tus thawj tswj pob pip mus rau qhov tam sim no version:

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

Nruab jupyter lab ntawm tus thawj tswj pob pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Raws li cov extensions nyob rau hauv jupyter lab yog kev sim thiab tsis raug xa nrog lub pob jupyterlab, yog li peb yuav tsum nruab thiab teeb tsa nws manually.

Cia peb nruab NodeJS thiab tus thawj tswj pob rau nws - NPM, txij li thaum jupyter lab siv lawv rau nws cov extensions:

lxc exec jupyterlab -- apk add nodejs npm

Rau extensions rau jupyter lab uas peb yuav nruab ua haujlwm, lawv yuav tsum tau muab tso rau hauv cov neeg siv phau ntawv vim tias daim ntawv thov yuav raug tso tawm los ntawm tus neeg siv jupyter. Qhov teeb meem yog tias tsis muaj parameter nyob rau hauv lub launch command uas yuav kis tau mus rau ib tug directory; daim ntawv thov tsuas yog lees txais ib puag ncig kuj sib txawv thiab yog li ntawd peb yuav tsum tau txhais nws. Txhawm rau ua qhov no, peb yuav sau cov lus hais kom hloov pauv hloov pauv JUPYTERLAB_DIR nyob rau hauv cov neeg siv ib puag ncig jupyter, ua file .bashrcuas yog ua tiav txhua zaus tus neeg siv nkag rau hauv:

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

Cov lus txib tom ntej no yuav nruab qhov tshwj xeeb txuas ntxiv - tus tswj hwm txuas ntxiv hauv 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"

Tam sim no txhua yam yog npaj rau thawj zaug tso tawm jupyter lab, tab sis peb tseem tuaj yeem nruab ob peb qhov tseem ceeb txuas ntxiv:

  • toc - Cov Ntsiab Lus, tsim cov npe ntawm cov ncauj lus hauv ib tsab xov xwm / phau ntawv
  • jupyterlab-horizon-theme - UI ntsiab
  • jupyterlab_neon_theme - UI ntsiab
  • jupyterlab-ubu-theme - Lwm tus ntsiab lus los ntawm tus sau tsab xov xwm no :) Tab sis nyob rau hauv cov ntaub ntawv no, lub installation los ntawm GitHub repository yuav tshwm sim

Yog li, khiav cov lus txib hauv qab no ua ntu zus rau nruab cov txuas ntxiv no:

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"

Tom qab txhim kho cov extensions, peb yuav tsum muab tso ua ke, txij li yav tas los, thaum lub sij hawm installation, peb teev tus yuam sij --no-build kom txuag tau sijhawm. Tam sim no peb yuav ua kom nrawm nrawm los ntawm kev sau lawv ua ke hauv ib qho mus:

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

Tam sim no khiav ob cov lus txib nram qab no kom khiav nws thawj zaug jupyter lab. Nws yuav muaj peev xwm tso nws nrog ib qho kev hais kom ua, tab sis qhov no, cov lus txib tso tawm, uas nyuaj rau nco ntsoov hauv koj lub siab, yuav nco ntsoov los ntawm bash hauv lub thawv, thiab tsis yog ntawm tus tswv tsev, qhov twg muaj cov lus txib txaus. sau lawv hauv keeb kwm :)

Nkag mus rau lub thawv raws li tus neeg siv jupyter:

lxc exec jupyterlab -- su -l jupyter

Tom ntej no, khiav jupyter lab nrog cov yuam sij thiab cov parameter raws li qhia:

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

Mus rau qhov chaw nyob hauv koj lub web browser http://10.0.5.5:8888 thiab ntawm nplooj ntawv uas qhib nkag token nkag mus uas koj yuav pom hauv console. Luam thiab muab tshuaj txhuam rau ntawm nplooj ntawv, ces nyem ID nkag mus. Tom qab nkag mus rau hauv, mus rau cov ntawv qhia zaub mov txuas ntxiv ntawm sab laug, raws li qhia hauv daim duab hauv qab no, qhov twg koj yuav tau txais kev tshoov siab, thaum qhib tus thawj tswj hwm txuas ntxiv, kom muaj kev nyab xeeb txaus ntshai los ntawm kev txhim kho txuas ntxiv los ntawm cov neeg thib peb uas cov lus txib JupyterLab kev txhim kho tsis muaj lub luag haujlwm:

Launching Jupyter rau hauv LXD orbit

Txawm li cas los xij, peb cais tag nrho jupyter lab thiab muab tso rau hauv ib lub thawv kom cov neeg thib peb txuas ntxiv uas xav tau thiab siv NodeJS yam tsawg kawg tsis tuaj yeem nyiag cov ntaub ntawv ntawm disk uas tsis yog cov uas peb qhib hauv lub thawv. Nkag mus rau koj cov ntaub ntawv ntiag tug ntawm tus tswv tsev hauv /home cov txheej txheem los ntawm lub thawv tsis zoo li yuav ua tiav, thiab yog tias lawv ua, ces koj yuav tsum muaj cov cai ntawm cov ntaub ntawv ntawm tus tswv tsev, txij li thaum peb khiav lub thawv hauv hom tsis tsim nyog. Raws li cov ntaub ntawv no, koj tuaj yeem ntsuas qhov kev pheej hmoo ntawm suav nrog kev txuas ntxiv hauv jupyter lab.

Tsim IPython phau ntawv sau (nplooj hauv jupyter lab) tam sim no yuav raug tsim nyob rau hauv tus neeg siv lub tsev directory - /home/jupyter, tab sis peb cov phiaj xwm yog faib cov ntaub ntawv (sib qhia) ntawm tus tswv tsev thiab lub thawv, yog li rov qab mus rau lub console thiab nres jupyter lab los ntawm executing hotkey - CTRL+C thiab teb y thaum thov. Tom qab ntawd xaus tus neeg siv qhov kev sib tham sib tham jupyter ua kom tiav qhov hotkey CTRL+D.

Muab cov ntaub ntawv nrog tus tswv tsev ^

Txhawm rau qhia cov ntaub ntawv nrog tus tswv tsev, koj yuav tsum tsim cov cuab yeej hauv lub thawv uas tso cai rau koj ua qhov no thiab ua qhov no, khiav cov lus txib hauv qab no uas peb qhia cov yuam sij hauv qab no:

  • lxc config device add - Cov lus txib ntxiv cov cuab yeej teeb tsa
  • jupyter - ID ntawm lub thawv uas ntxiv rau kev teeb tsa
  • hostfs - Ntaus ID. Koj tuaj yeem tsim ib lub npe.
  • disk - Hom khoom siv tau qhia
  • path - Qhia txog txoj hauv kev hauv lub thawv uas LXD yuav mount lub cuab yeej no
  • source - Qhia qhov chaw, txoj hauv kev mus rau cov npe ntawm tus tswv tsev uas koj xav qhia nrog lub thawv. Qhia txoj hauv kev raws li koj nyiam
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Rau catalog /home/dv/projects/ipython-notebooks kev tso cai yuav tsum tau teeb tsa rau tus neeg siv lub thawv uas tam sim no muaj UID sib npaug SubUID + UID, saib tshooj Kev nyab xeeb. Ntim Cov Cai nyob rau hauv tsab xov xwm Cov yam ntxwv tseem ceeb ntawm LXD - Linux ntim tshuab.

Teem kev tso cai ntawm tus tswv tsev, qhov twg tus tswv yuav yog tus neeg siv lub thawv jupyter, thiab qhov sib txawv $USER yuav qhia koj tus tswv tsev neeg siv raws li ib pawg:

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

Nyob zoo, Ntiaj Teb! ^

Yog tias koj tseem muaj kev sib tham console qhib hauv lub thawv nrog jupyter lab, ces rov pib dua nrog tus yuam sij tshiab --notebook-dir los ntawm kev teeb tsa tus nqi /mnt/hostfs raws li txoj kev mus rau lub hauv paus ntawm lub laptops nyob rau hauv lub thawv rau lub ntaus ntawv uas peb tsim nyob rau hauv cov kauj ruam dhau los:

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

Tom qab ntawd mus rau nplooj ntawv http://10.0.5.5:8888 thiab tsim koj thawj lub laptop los ntawm nias lub pob ntawm nplooj ntawv raws li pom hauv daim duab hauv qab no:

Launching Jupyter rau hauv LXD orbit

Tom qab ntawd, hauv daim teb ntawm nplooj ntawv, nkag mus rau Python code uas yuav tso saib cov classic Hello World!. Thaum koj ua tiav nkag, nias CTRL+ENTER lossis "ua si" khawm ntawm lub toolbar nyob rau sab saum toj kom JupyterLab ua qhov no:

Launching Jupyter rau hauv LXD orbit

Lub sijhawm no, yuav luag txhua yam yog npaj rau kev siv, tab sis nws yuav tsis txaus siab yog tias peb tsis nruab Python modules ntxiv (cov ntawv thov ua tiav) uas tuaj yeem nthuav dav tus qauv peev txheej ntawm Python hauv. jupyter lab, yog li ntawd, cia peb mus rau :)

PS Qhov nthuav yog qhov qub kev siv jupyter sub code npe Jupyter Phau Ntawv tsis tau ploj mus thiab nws muaj nyob rau hauv parallel nrog jupyter lab. Txhawm rau hloov mus rau qhov qub version, ua raws li qhov txuas ntxiv qhov txuas ntxiv hauv qhov chaw nyob/tree, thiab kev hloov mus rau qhov tshiab version yog nqa tawm nrog lub ntsiab lus /lab, tab sis nws tsis tas yuav tsum tau teev tseg:

Expanding lub peev xwm ntawm Python ^

Nyob rau hauv seem no, peb yuav nruab xws li haib Python lus modules li numpy, pandas, matplotlib, IPyWidgets cov txiaj ntsig ntawm uas tau muab tso rau hauv lub laptops jupyter lab.

Ua ntej txhim kho cov npe Python modules los ntawm tus thawj tswj pob pip peb yuav tsum xub daws qhov system dependencies hauv Alpine Linux:

  • g++ - Xav tau kev sau cov qauv, txij li qee qhov ntawm lawv tau siv hauv cov lus C ++ thiab txuas rau Python ntawm runtime ua binary modules
  • freetype-dev - kev vam khom rau Python module matplotlib

Installation dependencies:

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

Muaj ib qho teeb meem: nyob rau hauv lub xeev tam sim no ntawm Alpine Linux kev faib tawm, nws yuav tsis tuaj yeem sau cov ntawv tshiab ntawm NumPy; qhov yuam kev muab tso ua ke yuav tshwm sim uas kuv daws tsis tau:

YUAM KEV: Tsis tuaj yeem tsim lub log rau numpy uas siv PEP 517 thiab tsis tuaj yeem ntsia ncaj qha

Yog li ntawd, peb yuav nruab no module raws li ib tug system pob uas faib ib tug twb compiled version, tab sis ib tug me ntsis laus dua li tam sim no muaj nyob rau ntawm lub site:

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

Tom ntej no, nruab Python modules los ntawm tus thawj tswj pob pip. Thov ua siab ntev vim qee qhov modules yuav sau thiab yuav siv sijhawm li ob peb feeb. Ntawm kuv lub tshuab, muab tso ua ke siv ~ 15 feeb:

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

Clearing installation caches:

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

Kev sim modules hauv JupyterLab ^

Yog koj khiav jupyter lab, rov pib dua nws kom cov tshiab tau teeb tsa modules qhib. Txhawm rau ua qhov no, hauv kev sib tham console, nyem CTRL+C qhov twg koj muaj nws khiav thiab nkag mus y kom tsis txhob thov thiab rov pib dua jupyter lab los ntawm nias lub xub nce rau ntawm cov keyboard kom tsis txhob nkag mus rau qhov hais kom ua dua thiab tom qab ntawd Enter pib nws:

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

Mus rau nplooj ntawv http://10.0.5.5:8888/lab lossis rov kho nplooj ntawv hauv koj tus browser, thiab tom qab ntawd nkag mus rau cov lej hauv qab no hauv lub xov tooj ntawm tes tshiab:

%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

Koj yuav tsum tau txais cov txiaj ntsig zoo li hauv daim duab hauv qab no, qhov twg IPyWidgets tsim ib qho UI ntsiab ntawm nplooj ntawv uas cuam tshuam nrog kev sib tham nrog lub hauv paus code, thiab matplotlib qhia qhov tshwm sim ntawm cov cai nyob rau hauv daim ntawv ntawm ib daim duab raws li ib tug function graph:

Launching Jupyter rau hauv LXD orbit

Ntau yam piv txwv IPyWidgets koj tuaj yeem pom nws hauv kev qhia no

Dab tsi ntxiv? ^

Ua tau zoo yog tias koj nyob thiab mus txog qhov kawg ntawm tsab xov xwm. Kuv txhob txwm tsis tshaj tawm tsab ntawv npaj ua ntej kawg ntawm tsab xov xwm uas yuav nruab jupyter lab hauv "ib nyem" los txhawb cov neeg ua haujlwm :) Tab sis koj tuaj yeem ua koj tus kheej, txij li koj twb paub yuav ua li cas, tau sau cov lus txib rau hauv ib tsab ntawv Bash :)

Koj tseem tuaj yeem:

  • Teem lub npe network rau lub thawv hloov chaw nyob IP los ntawm kev sau nws hauv qhov yooj yim /etc/hosts thiab ntaus qhov chaw nyob hauv qhov browser http://jupyter.local:8888
  • Ua si ncig nrog cov peev txheej txwv rau lub thawv, rau qhov no nyeem tshooj hauv Basic LXD muaj peev xwm lossis tau txais cov ntaub ntawv ntxiv ntawm LXD tus tsim tawm site.
  • Hloov lub ntsiab:

Launching Jupyter rau hauv LXD orbit

Thiab ntau ntxiv koj tuaj yeem ua tau! Yog tag nrho. Kuv thov kom koj ua tiav!

HLOOV TSHIAB: 15.04.2020/18/30 XNUMX:XNUMX - Kho qhov yuam kev hauv tshooj β€œHello, Ntiaj Teb!”
HLOOV TSHIAB: 16.04.2020/10/00 XNUMX:XNUMX - Kho thiab ntxiv cov ntawv hauv cov lus piav qhia ntawm tus thawj tswj xyuas txuas ntxiv jupyter lab
HLOOV TSHIAB: 16.04.2020/10/40 XNUMX:XNUMX - Kho qhov yuam kev pom nyob rau hauv cov ntawv nyeem thiab hloov me ntsis rau qhov zoo dua tshooj "Nruab software thiab teeb tsa lub system"

Tau qhov twg los: www.hab.com

Ntxiv ib saib