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.
Navigácia
- Orbitálny plán vzletu
- Inštalácia a konfigurácia základného systému
- Inštalácia základného softvéru a nastavenie systému
- Inštalácia a konfigurácia JupyterLab
- Zdieľanie údajov s hostiteľom
- Dobrý deň, Svet!
- Rozšírenie možností Pythonu
- Testovanie modulov v JupyterLab
- Čo ešte?
Orbitálny plán vzletu ^
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 LXDexec
- Metóda klienta LXD, ktorá spúšťa príkaz v kontajnerijupyterlab
— ID kontajnera--
- Špeciálny kľúč, ktorý určuje, že ďalšie kľúče sa nebudú interpretovať ako kľúče prelxc
a zvyšok povrazu prevlečte do nádobyapk
— Správca distribučných balíkov Alpine Linuxadd
— 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 sudo
a 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ť .bashrc
ktorý 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šitejupyterlab-horizon-theme
— Téma používateľského rozhraniajupyterlab_neon_theme
— Téma používateľského rozhraniajupyterlab-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á:
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 zariadeniajupyter
— ID kontajnera, do ktorého sa pridáva konfiguráciahostfs
— ID zariadenia. Môžete nastaviť ľubovoľný názov.disk
— Je uvedený typ zariadeniapath
— Určuje cestu v kontajneri, ku ktorému LXD pripojí toto zariadeniesource
— 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 jupyter
a 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:
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:
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/tree
a prechod na novú verziu sa vykoná s príponou /lab
, ale nemusí byť špecifikované:
- Jupyter Notebook - http://10.0.5.5:8888/tree
- Jupyter Lab - http://10.0.5.5:8888/lab
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 modulyfreetype-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:
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:
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