Vypustenie Jupyteru na obežnú dráhu LXD

Museli ste niekedy experimentovať s kódom alebo systémovými utilitami v Linuxe, aby ste sa nestarali o základný systém a nezbúrali všetko v prípade chyby v kóde, ktorý by mal bežať s oprávneniami root?

Ale čo skutočnosť, že povedzme, že potrebujete otestovať alebo spustiť celý klaster rôznych mikroslužieb na jednom počítači? Sto alebo dokonca tisíc?

S virtuálnymi strojmi spravovanými hypervízorom sa takéto problémy dajú a budú riešiť, ale za akú cenu? Napríklad kontajner v LXD založený na distribúcii Alpine Linux spotrebuje iba 7.60MB RAM a miesto, kde sa po spustení nachádza koreňový oddiel 9.5MB! Ako sa ti to páči, Elon Musk? Odporúčam sa pozrieť základné možnosti LXD - kontajnerového systému v Linuxe

Keď sa vo všeobecnosti vyjasní, čo sú to kontajnery LXD, poďme ďalej a zamyslime sa nad tým, čo keby existovala taká harvesterová platforma, kde by ste mohli bezpečne spúšťať kód pre hostiteľa, generovať grafy, dynamicky (interaktívne) prepájať UI widgety s vaším kódom, doplniť kód textom o blackjack... formátovanie? Nejaký interaktívny blog? Wow... chcem to! Chcem! 🙂

Pozrite sa pod mačku, kde spustíme kontajner jupyter laboratórium - ďalšia generácia používateľského rozhrania namiesto zastaraného Jupyter Notebooku a nainštalujeme aj moduly Pythonu ako napr. nemotorný, pandy, matplotlib, IPyWidgets čo vám umožní robiť všetko uvedené vyššie a všetko to uložiť do špeciálneho súboru – notebooku IPython.

Vypustenie Jupyteru na obežnú dráhu LXD

Orbitálny plán vzletu ^

Vypustenie Jupyteru na obežnú dráhu LXD

Poďme si načrtnúť krátky akčný plán, ktorý nám uľahčí implementáciu vyššie uvedenej schémy:

  • Poďme nainštalovať a spustiť kontajner založený na distribučnej súprave Alpský Linux. Túto distribúciu použijeme, pretože je zameraná na minimalizmus a nainštaluje do nej len najnutnejší softvér, nič zbytočné.
  • Pridajme do kontajnera ďalší virtuálny disk a pomenujeme ho - hostfs a pripojte ho do koreňového systému súborov. Tento disk umožní používať súbory na hostiteľovi z daného adresára v kontajneri. Naše údaje teda budú nezávislé od kontajnera. Ak sa kontajner odstráni, údaje zostanú na hostiteľovi. Táto schéma je tiež užitočná na zdieľanie rovnakých údajov medzi mnohými kontajnermi bez použitia štandardných sieťových mechanizmov distribúcie kontajnerov.
  • Nainštalujeme Bash, sudo, potrebné knižnice, pridáme a nakonfigurujeme používateľa systému
  • Nainštalujme si Python, moduly a skompilujme pre ne binárne závislosti
  • Poďme nainštalovať a spustiť jupyter laboratórium, prispôsobte vzhľad, nainštalujte si rozšírenia.

V tomto článku začneme spustením kontajnera, nebudeme uvažovať o inštalácii a konfigurácii LXD, to všetko nájdete v inom článku - Základné vlastnosti kontajnerových systémov LXD - Linux.

Inštalácia a konfigurácia základného systému ^

Kontajner vytvoríme príkazom, v ktorom zadáme obrázok - alpine3, identifikátor pre kontajner - jupyterlab a v prípade potreby konfiguračné profily:

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

Tu používam konfiguračný profil hddroot ktorý určuje vytvorenie kontajnera s koreňovým oddielom v Skladovací bazén umiestnené na fyzickom HDD disku:

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

To mi dáva možnosť experimentovať s kontajnermi na HDD disku a šetriť tak zdroje SSD disku, ktorý je dostupný aj v mojom systéme 🙂 pre ktorý som vytvoril samostatný konfiguračný profil ssdroot.

Po vytvorení je kontajner v stave STOPPED, takže ho musíme spustiť spustením init systému v ňom:

lxc start jupyterlab

Zobrazme zoznam kontajnerov v LXD pomocou klávesu -c čo naznačuje ktoré czobrazenie stĺpcov:

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

Pri vytváraní kontajnera bola IP adresa zvolená náhodne, keďže sme použili konfiguračný profil default ktorý bol predtým nakonfigurovaný v článku Základné vlastnosti kontajnerových systémov LXD - Linux.

Túto IP adresu zmeníme na pamätnejšiu tak, že vytvoríme sieťové rozhranie na úrovni kontajnera a nie na úrovni konfiguračného profilu, ako je to teraz v aktuálnej konfigurácii. Nemusíte to robiť, môžete to preskočiť.

Vytvorenie sieťového rozhrania eth0 ktorý prepojíme s prepínačom (sieťovým mostom) lxdbr0 v ktorom sme povolili NAT podľa predchádzajúceho článku a kontajner bude mať teraz prístup na internet a rozhraniu prideľujeme aj statickú IP adresu - 10.0.5.5:

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

Po pridaní zariadenia je potrebné kontajner reštartovať:

lxc restart jupyterlab

Kontrola stavu kontajnera:

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

Inštalácia základného softvéru a nastavenie systému ^

Ak chcete spravovať náš kontajner, musíte si nainštalovať nasledujúci softvér:

Balíček
Popis

tresnúť
GNU Bourne Again shell

bash-dokončenie
Programovateľné dokončenie pre bash shell

sudo
Dajte určitým používateľom možnosť spúšťať niektoré príkazy ako root

tieň
Sada nástrojov na správu hesiel a účtov s podporou tieňových súborov a PAM

tzdata
Zdroje údajov o časovom pásme a letnom čase

nano
Klon editora Pico s vylepšeniami

Okrem toho môžete nainštalovať podporu do systémových manuálových stránok inštaláciou nasledujúcich balíkov − man man-pages mdocml-apropos less

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

Pozrime sa na príkazy a klávesy, ktoré sme použili:

  • lxc — Zavolajte klientovi LXD
  • exec - Metóda klienta LXD, ktorá spúšťa príkaz v kontajneri
  • jupyterlab — ID kontajnera
  • -- - Špeciálny kľúč, ktorý určuje, že ďalšie kľúče sa nebudú interpretovať ako kľúče pre lxc a zvyšok povrazu prevlečte do nádoby
  • apk — Správca distribučných balíkov Alpine Linux
  • add — Metóda správcu balíkov, ktorá inštaluje balíky špecifikované za príkazom

Ďalej v systéme nastavíme časové pásmo Europe/Moscow:

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

Po nainštalovaní časového pásma balík tzdata už v systéme nie je potrebný, bude zaberať miesto, tak ho vymažte:

lxc exec jupyterlab -- apk del tzdata

Kontrola časového pásma:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Aby sme nestrávili veľa času nastavovaním Bash pre nových používateľov v kontajneri, v nasledujúcich krokoch doň skopírujeme hotové súbory skel z hostiteľského systému. To vám umožní interaktívne skrášliť Bash v kontajneri. Môj hostiteľský systém je Manjaro Linux a kopírované súbory /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors v zásade sú vhodné pre Alpine Linux a nespôsobujú kritické problémy, ale môžete mať inú distribúciu a musíte nezávisle zistiť, či sa pri spustení Bash v kontajneri nevyskytla chyba.

Skopírujte súbory Skel do kontajnera. kľúč --create-dirs vytvorí potrebné adresáre, ak neexistujú:

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

Pre existujúceho užívateľa root skopírujte súbory Skel práve skopírované do kontajnera do domovského adresára:

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 nainštaluje pre používateľov systémový shell /bin/sh, nahradíme ho root používateľ v Bash:

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

Že root používateľ nebol bez hesla, potrebuje si nastaviť heslo. Nasledujúci príkaz mu vygeneruje a nastaví nové náhodné heslo, ktoré po jeho vykonaní uvidíte na obrazovke konzoly:

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

Tiež vytvorte nového používateľa systému - jupyter pre ktoré budeme konfigurovať neskôr jupyter laboratórium:

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

Vygenerujeme a nastavíme preň heslo:

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

Ďalej vykonáme dva príkazy, prvý vytvorí systémovú skupinu sudoa druhý do nej pridá používateľa jupyter:

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

Pozrime sa, do akých skupín používateľ patrí jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Všetko je v poriadku, ideme ďalej.

Povoliť všetkým používateľom, ktorí sú členmi skupiny sudo použite príkaz sudo. Ak to chcete urobiť, spustite nasledujúci skript, kde sed odkomentuje riadok parametrov v konfiguračnom súbore /etc/sudoers:

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

Inštalácia a konfigurácia JupyterLab ^

jupyter laboratórium je aplikácia Python, takže musíme najprv nainštalovať tento interpret. tiež jupyter laboratórium nainštalujeme pomocou správcu balíkov Python pip, a nie systémový, pretože môže byť zastaraný v systémovom úložisku, a preto musíme manuálne vyriešiť jeho závislosti inštaláciou nasledujúcich balíkov − python3 python3-dev gcc libc-dev zeromq-dev:

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

Poďme aktualizovať moduly pythonu a správcu balíkov pip na aktuálnu verziu:

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

Sada jupyter laboratórium cez správcu balíkov pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Keďže rozšírenia v jupyter laboratórium sú experimentálne a nie sú oficiálne dodávané s balíkom jupyterlab, takže ich musíme nainštalovať a nakonfigurovať manuálne.

Nainštalujte si NodeJS a správcu balíkov - NPM, od r jupyter laboratórium používa ich pre svoje rozšírenia:

lxc exec jupyterlab -- apk add nodejs npm

K rozšíreniam pre jupyter laboratórium ktoré nainštalujeme fungovali, je potrebné ich nainštalovať do užívateľského adresára, keďže aplikácia sa spustí od užívateľa jupyter. Problém je v tom, že v príkaze launch nie je žiadny parameter, ktorý by sa dal odovzdať do adresára, aplikácia akceptuje iba premennú prostredia, a preto ju musíme definovať. Za týmto účelom napíšeme príkaz export premennej JUPYTERLAB_DIR v prostredí užívateľa jupyter, vyplniť .bashrcktorý sa vykoná vždy, keď sa používateľ prihlási:

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

Nasledujúci príkaz nainštaluje špeciálne rozšírenie - správca rozšírení jupyter laboratórium:

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

Teraz je všetko pripravené na prvé spustenie jupyter laboratórium, ale stále môžeme nainštalovať niekoľko užitočných rozšírení:

  • toc — Obsah, generuje zoznam nadpisov v článku/zošite
  • jupyterlab-horizon-theme — Téma používateľského rozhrania
  • jupyterlab_neon_theme — Téma používateľského rozhrania
  • jupyterlab-ubu-theme - Ďalší námet od autora tento článok :) Ale v tomto prípade sa ukáže inštalácia z úložiska GitHub

Ak chcete nainštalovať tieto rozšírenia, spustite nasledujúce príkazy postupne:

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"

Po nainštalovaní rozšírení ich musíme skompilovať, keďže predtým sme pri inštalácii špecifikovali kľúč --no-build aby ste ušetrili čas. Teraz to výrazne urýchlime tým, že ich skompilujeme naraz:

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

Teraz spustite nasledujúce dva príkazy, aby ste ho spustili prvýkrát jupyter laboratórium. Dalo by sa to spustiť jedným príkazom, ale v tomto prípade si príkaz na spustenie, ktorý si ťažko pamätáte, zapamätá bash v kontajneri a nie na hostiteľovi, kde je už príkazov dosť. zapísať ich do histórie :)

Prihláste sa do kontajnera ako používateľ jupyter:

lxc exec jupyterlab -- su -l jupyter

Ďalej bež jupyter laboratórium s kľúčmi a parametrami, ako je uvedené:

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

Prejdite na adresu vo webovom prehliadači http://10.0.5.5:8888 a na stránke, ktorá sa otvorí, zadajte známka prístup, ktorý uvidíte v konzole. Skopírujte a prilepte ho na stránku a potom kliknite Prihlásiť sa . Po prihlásení prejdite do ponuky rozšírení vľavo, ako je znázornené na obrázku nižšie, kde budete pri aktivácii správcu rozšírení vyzvaní, aby ste podstúpili bezpečnostné riziká inštaláciou rozšírení od tretích strán, pre ktoré je príkaz Vývoj JupyterLab nezodpovedá:

Vypustenie Jupyteru na obežnú dráhu LXD

Celé to však izolujeme jupyter laboratórium a umiestnite ho do kontajnera, aby rozšírenia tretích strán, ktoré vyžadujú a používajú NodeJS, nemohli aspoň ukradnúť dáta na disku iné ako tie, ktoré otvoríme vo vnútri kontajnera. Získajte svoje súkromné ​​dokumenty na hostiteľovi /home procesy z kontajnera pravdepodobne neuspejú, a ak áno, potom musíte mať privilégiá na súbory v hostiteľskom systéme, pretože kontajner spúšťame v neprivilegovaný režim. Na základe týchto informácií môžete posúdiť riziko zahrnutia rozšírení do jupyter laboratórium.

Vytvorené notebooky IPython (stránok v jupyter laboratórium) sa teraz vytvorí v domovskom adresári používateľa - /home/jupyter, ale naše plány sú rozdeliť údaje (zdieľanie) medzi hostiteľa a kontajner, takže sa vráťte do konzoly a zastavte jupyter laboratórium vykonaním klávesovej skratky - CTRL+C a odpovedanie y na požiadanie. Potom ukončite interaktívnu reláciu používateľa jupyter dokončenie klávesovej skratky CTRL+D.

Zdieľanie údajov s hostiteľom ^

Ak chcete zdieľať údaje s hostiteľom, musíte v kontajneri vytvoriť zariadenie, ktoré vám to umožní, a na tento účel spustite nasledujúci príkaz, v ktorom zadáme nasledujúce kľúče:

  • lxc config device add — Príkaz pridá konfiguráciu zariadenia
  • jupyter — ID kontajnera, do ktorého sa pridáva konfigurácia
  • hostfs — ID zariadenia. Môžete nastaviť ľubovoľný názov.
  • disk — Je uvedený typ zariadenia
  • path — Určuje cestu v kontajneri, ku ktorému LXD pripojí toto zariadenie
  • source — Zadajte zdroj, cestu k adresáru na hostiteľovi, ktorý chcete zdieľať s kontajnerom. Zadajte cestu podľa vašich preferencií
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Pre katalóg /home/dv/projects/ipython-notebooks povolenie musí byť nastavené na používateľa kontajnera, ktorý má aktuálne UID rovné SubUID + UID, pozri kapitolu Bezpečnosť. Kontajnerové privilégiá v článku Základné vlastnosti kontajnerových systémov LXD - Linux.

Nastavte povolenie na hostiteľovi, kde vlastníkom bude používateľ kontajnera jupytera premenná $USER určí vášho hostiteľa ako skupinu:

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

Dobrý deň, Svet! ^

Ak máte stále otvorenú reláciu konzoly v kontajneri s jupyter laboratóriuma potom ho reštartujte s novým kľúčom --notebook-dir nastavením hodnoty /mnt/hostfs ako cesta ku koreňovému adresáru prenosných počítačov v kontajneri pre zariadenie, ktoré sme vytvorili v predchádzajúcom kroku:

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

Potom prejdite na stránku http://10.0.5.5:8888 a vytvorte si svoj prvý laptop kliknutím na tlačidlo na stránke, ako je znázornené na obrázku nižšie:

Vypustenie Jupyteru na obežnú dráhu LXD

Potom do poľa na stránke zadajte kód Python, ktorý zobrazí klasiku Hello World!. Po dokončení zadávania stlačte CTRL+ENTER alebo tlačidlo "prehrať" na paneli s nástrojmi v hornej časti, aby to JupyterLab urobil:

Vypustenie Jupyteru na obežnú dráhu LXD

V tejto chvíli je takmer všetko pripravené na použitie, ale nebude zaujímavé, ak nenainštalujeme ďalšie moduly Pythonu (plnohodnotné aplikácie), ktoré môžu výrazne rozšíriť štandardné možnosti Pythonu v jupyter laboratóriumtak poďme ďalej :)

PS Zaujímavosťou je, že stará implementácia jupyter pod kódovým menom Jupyter Notebook neodišla a existuje paralelne s jupyter laboratórium. Ak chcete prejsť na starú verziu, kliknite na odkaz a pridajte do adresy príponu/treea prechod na novú verziu sa vykoná s príponou /lab, ale nemusí byť špecifikované:

Rozšírenie možností Pythonu ^

V tejto sekcii nainštalujeme také výkonné moduly jazyka Python ako nemotorný, pandy, matplotlib, IPyWidgets ktorých výsledky sú integrované do notebookov jupyter laboratórium.

Pred inštaláciou uvedených modulov Pythonu prostredníctvom správcu balíkov pip najprv musíme vyriešiť systémové závislosti v Alpine Linux:

  • g++ — Potrebné na zostavenie modulov, keďže niektoré z nich sú implementované v jazyku C + + a pripojiť sa k Pythonu za behu ako binárne moduly
  • freetype-dev - závislosť pre modul Python matplotlib

Inštalácia závislostí:

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

Je tu jeden problém: v súčasnom stave distribúcie Alpine Linux nebude možné skompilovať novú verziu NumPy, objaví sa chyba kompilácie, ktorú som nevedel vyriešiť:

ERROR: Nepodarilo sa vytvoriť kolesá pre numpy, ktoré používajú PEP 517 a nie je možné ich nainštalovať priamo

Preto nainštalujeme tento modul ako systémový balík, ktorý distribuuje už skompilovanú verziu, ale o niečo staršiu, ako je momentálne dostupná na stránke:

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

Ďalej nainštalujte moduly Pythonu cez správcu balíkov pip. Buďte prosím trpezliví, pretože niektoré moduly sa skompilujú a môže to trvať niekoľko minút. Na mojom počítači kompilácia trvala ~15 minút:

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

Vymazanie vyrovnávacej pamäte inštalácie:

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

Testovanie modulov v JupyterLab ^

Ak bežíte jupyter laboratórium, reštartujte ho, aby sa aktivovali novo nainštalované moduly. Ak to chcete urobiť, v relácii konzoly kliknite na CTRL+C kde ho máte spustený a zadajte y zastaviť požiadavku a potom začať znova jupyter laboratórium stlačením šípky nahor na klávesnici, aby ste príkaz nezadávali znova a potom Enter na spustenie:

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

Prejdite na stránku http://10.0.5.5:8888/lab alebo obnovte stránku v prehliadači a potom zadajte nasledujúci kód do novej bunky poznámkového bloku:

%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

Mali by ste dostať výsledok ako na obrázku nižšie, kde IPyWidgets vygeneruje prvok používateľského rozhrania na stránke, ktorý interaktívne interaguje so zdrojovým kódom a tiež matplotlib zobrazí výsledok kódu vo forme obrázka ako funkčný graf:

Vypustenie Jupyteru na obežnú dráhu LXD

Veľa príkladov IPyWidgets nájdete to v tutoriáloch tu

Čo ešte? ^

Výborne, ak ste zostali a dostali sa až na koniec článku. Zámerne som na konci článku nezverejnil hotový skript, ktorý by sa nainštaloval jupyter laboratórium jedným kliknutím povzbudíte pracovníkov :) Ale môžete to urobiť sami, pretože už viete ako, po zhromaždení príkazov do jedného Bash skriptu :)

Môžete tiež:

  • Nastavte názov siete pre kontajner namiesto IP adresy jednoduchým napísaním /etc/hosts a zadajte adresu do prehliadača http://jupyter.local:8888
  • Pohrajte sa s limitom zdrojov pre kontajner, prečítajte si túto kapitolu základné schopnosti LXD alebo získajte viac informácií na stránke vývojárov LXD.
  • Zmeňte tému:

Vypustenie Jupyteru na obežnú dráhu LXD

A oveľa viac môžete urobiť! To je všetko. Prajem ti úspech!

AKTUALIZÁCIA: 15.04.2020 18:30 - Opravené chyby v kapitole "Ahoj, Svet!"
AKTUALIZÁCIA: 16.04.2020/10/00 XNUMX:XNUMX — Opravený a doplnený text v popise aktivácie správcu rozšírení jupyter laboratórium
AKTUALIZÁCIA: 16.04.2020/10/40 XNUMX:XNUMX — Opravené chyby nájdené v texte a mierne zmenené k lepšiemu v kapitole „Inštalácia základného softvéru a nastavenie systému“

Zdroj: hab.com

Pridať komentár