Hues du jeemools mat Code oder Systemprogrammer experimentéiert? Linux Sou datt Dir Iech keng Suergen ëm den ënnerlÀitende System maache musst an alles zerstéiere musst, wann et e Feeler am Code gëtt, deen mat Root-Privilegien lafe muss?
Awer wat iwwer d'Tatsaach datt loosst eis soen datt Dir e ganze StÀrekoup vu verschiddene Mikroservicer op enger Maschinn testen oder ausféiert? Honnert oder souguer dausend?
Hypervisor-verwaltete virtuell Maschinnen kéinten esou Problemer léisen, awer zu wéi engem PrÀis? Zum Beispill, en LXD Container baséiert op der Alpine Distributioun Linux verbraucht nëmme minimal Energie 7.60MB RAM, a wou d'Root Partition nom Startup besetzt 9.5MB! Wéi gefÀllt Dir dat, Elon Musk? Ech recommandéieren erauszekréien BasisfÀegkeeten vun LXD - engem Containersystem an Linux
Nodeems et allgemeng kloer gouf wat LXD Container sinn, loosst eis mĂ©i wĂ€it goen an denken, wat wann et sou eng Ernteplattform wier, wou Dir sĂ©cher Code fir den Host lafe kĂ«nnt, Grafike generĂ©ieren, dynamesch (interaktiv) UI- Widgets mat Ărem Code verbannen, ergĂ€nzen de Code mat Text mat Blackjack ... FormatĂ©ieren? Eng Zort interaktiv Blog? Wow ... ech wĂ«ll et! WĂ«llt! đ
Kuckt ënnert der Kaz wou mir an engem Container starten Jupyter Labo - déi nÀchst Generatioun vu Benotzerinterface amplaz vum alen Jupyter Notizbuch, a mir wÀerten och Python Moduler installéieren wéi z. NummPy, Pandas, matplotlib, IPyWidgets wat Iech erlaabt alles uewen opgezielt ze maachen an alles an enger spezieller Datei ze spÀicheren - en IPython Laptop.

Navigatioun
- Orbital Startplang
- Installatioun an Configuratioun vun der Basis System
- Basis Software installéieren an de System opbauen
- JupyterLab installéieren an konfiguréieren
- Deelen Daten mam Host
- Moien Welt!
- Erweidert d'FĂ€egkeete vum Python
- Testen Moduler am JupyterLab
- Wat soss?
Orbital Startplang ^

Loosst eis e kuerzen Handlungsplang skizzéieren fir et méi einfach ze maachen fir de Schema hei uewen ëmzesetzen:
- Loosst eis e Container installéieren a starten op Basis vum Verdeelungskit Alpine Linux. Mir wÀerten dës Verdeelung benotzen well se op Minimalismus zielt a wÀert nëmmen déi néideg Software dran installéieren, nÀischt iwwerflësseg.
- Loosst eis eng zousÀtzlech virtuell Scheif am Container derbÀi a ginn et en Numm -
hostfsa montéiert et op de Root Dateisystem. Dës Disk wÀert et méiglech maachen Dateien um Host aus engem bestëmmte Verzeechnes am Container ze benotzen. Sou wÀerten eis Donnéeën onofhÀngeg vum Container sinn. Wann de Container gelÀscht gëtt, bleiwen d'Donnéeën um Host. Och dëst Schema ass nëtzlech fir déiselwecht Donnéeën tëscht ville Container ze deelen ouni d'Standard Netzwierkmechanismen vun der Containerverdeelung ze benotzen. - Loosst eis Bash, sudo, déi néideg Bibliothéiken installéieren, e System Benotzer addéieren a konfiguréieren
- Loosst eis Python, Moduler installéieren a binÀr OfhÀngegkeete fir si kompiléieren
- Loosst eis installéieren a starten Jupyter Labo, d'Erscheinung personaliséieren, Extensiounen dofir installéieren.
An dësem Artikel fÀnke mir mam Container unzefÀnken, mir betruechten net d'LXD z'installéieren an ze konfiguréieren, Dir kënnt dat alles an engem aneren Artikel fannen - Déi grondleeënd FÀegkeeten vun LXD, engem Containersystem an Linux.
Installatioun an Configuratioun vun der Basis System ^
Mir erstellen e Container mam Kommando an deem mir d'Bild spezifizéieren - alpine3, Identifizéierer fir de Container - jupyterlab an, wann néideg, Konfiguratiounsprofile:
lxc init alpine3 jupyterlab --profile=default --profile=hddrootHei benotzen ech e Konfiguratiounsprofil hddroot déi spezifizéiert fir e Container mat enger Root-Partition ze kreéieren Stockage Pool op enger kierperlecher HDD Disk lÀit:
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:
- noneDĂ«st gĂ«tt mir d'MĂ©iglechkeet fir mat Container op der HDD Disk ze experimentĂ©ieren, d'Ressourcen vun der SSD Disk ze spueren, dĂ©i och a mengem System verfĂŒgbar ass đ fir deen ech e separaten Konfiguratiounsprofil erstallt hunn ssdroot.
Nodeems de Container erstallt ass, ass et am Staat STOPPED, also musse mir et starten andeems Dir den Init System dran leeft:
lxc start jupyterlabLoosst eis eng Lëscht vu Container am LXD mat dem Schlëssel weisen -c wat weist wéi eng columnen weisen:
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+Wann Dir de Container erstellt, gouf d'IP Adress zoufÀlleg gewielt, well mir e Konfiguratiounsprofil benotzt hunn default déi virdru am Artikel konfiguréiert war Déi grondleeënd FÀegkeeten vun LXD, engem Containersystem an Linux.
Mir wÀerten dës IP Adress op eng méi memorablen Ànneren andeems en Netzwierk Interface um Containerniveau erstellt, an net um Konfiguratiounsprofilniveau wéi et elo an der aktueller Konfiguratioun ass. Dir musst dat net maachen, Dir kënnt et iwwersprangen.
Schafen engem Netzwierk Interface eth0 déi mir un de Schalter verlinken (Netzbréck) lxdbr0 an deem mir NAT no dem viregten Artikel aktivéiert hunn an de Container elo Zougang zum Internet huet, a mir ginn och eng statesch IP Adress un d'Interface zou - 10.0.5.5:
lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5Nodeems Dir en Apparat bĂ€igefĂŒĂŒgt hutt, muss de Container nei gestart ginn:
lxc restart jupyterlabIwwerpréift de Status vum Container:
lxc list -c ns4b
+------------+---------+------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0) | hddpool |
+------------+---------+------------------+--------------+Basis Software installéieren an de System opbauen ^
Fir eise Container ze administréieren, musst Dir déi folgend Software installéieren:
Pak
Beschreiwung
ze brong
D'GNU Bourne Again Shell
bash-VervollstÀnnegung
Programméierbar FÀerdegstellung fir d'Bash Shell
sudo
Gitt bestëmmte Benotzer d'FÀegkeet fir e puer Kommandoen als Root auszeféieren
Schied
Passwuert a Kontemanagement Tool Suite mat ĂnnerstĂ«tzung fir Schattendateien a PAM
tzdaten
Quelle fir ZÀitzone an DagesliichtzÀitdaten
Nanotechnike sinn
Pico Editor Klon mat Verbesserungen
ZousĂ€tzlech kĂ«nnt Dir ĂnnerstĂ«tzung an de System Man-SĂ€iten installĂ©ieren andeems Dir dĂ©i folgend Packagen installĂ©iert - man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nanoLoosst eis d'Befehle an d'Schlësselen kucken, déi mir benotzt hunn:
lxc- Call LXD Clientexec- LXD Client Method dĂ©i e Kommando am Container leeftjupyterlab- Container ID--- E spezielle SchlĂ«ssel datt spezifizĂ©iert net weider SchlĂ«sselen als SchlĂ«ssel interpretĂ©ieren firlxca gitt de Rescht vun der String wĂ©i et an de Containerapkâ Verdeelungspaketmanager vun Alpine Linuxadd- Eng Package Manager Method dĂ©i Packagen installĂ©iert dĂ©i nom Kommando spezifizĂ©iert sinn
Als nÀchst wÀerte mir eng ZÀitzone am System setzen Europe/Moscow:
lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtimeNo der Installatioun vun der ZÀitzone, de Package tzdata ass net méi am System gebraucht, et wÀert Plaz ophuelen, also loosse mer et lÀschen:
lxc exec jupyterlab -- apk del tzdataIwwerpréift vun der ZÀitzone:
lxc exec jupyterlab -- date
Wed Apr 15 10:49:56 MSK 2020Fir ZÀit ze spueren beim Astellen vu Bash fir nei Benotzer am Container, kopéiere mir fÀerdeg Skel-Dateien vum Hostsystem drop. Dëst erlaabt eis, Bash am Container am interaktiven Modus unzepassen. MÀi Hostsystem ass Manjaro. Linux a kopéiert Dateien /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors am Prinzip passen se op Alpine Linux an verursaachen keng kritesch Problemer, awer Dir kënnt eng aner Verdeelung hunn an Dir musst selwer erausfannen, ob et e Feeler beim Ausféiere vu Bash am Container gëtt.
Kopie der skel Fichier'en op de Container. Schlëssel --create-dirs wÀert déi néideg Verzeichnisser erstellen wa se net existéieren:
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_colorsFir eng bestehend root Benotzer, Kopie der skel Fichier'en just an de Container an d'Haus Verzeechnes kopéiert:
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_colorsAn den Alpen Linux eng Systemshell ass fir Benotzer installéiert /bin/sh, mir ersetzen et mat root Benotzer am Bash:
lxc exec jupyterlab -- usermod --shell=/bin/bash rootdatt root de Benotzer war net ouni Passwuert, hie muss e Passwuert astellen. De folgende Kommando generéiert a setzt en neit zoufÀlleg Passwuert fir hien, dat Dir op der Konsolebildschierm no senger Ausféierung gesitt:
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: sFiXEvBswuWALoosst eis och en neie System Benotzer erstellen - jupyter fir déi mir spéider konfiguréieren Jupyter Labo:
lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyterLoosst eis e Passwuert generéieren an setzen:
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: ZIcbzWrF8tkiAls nÀchst wÀerte mir zwee Kommandoen ausféieren, déi éischt wÀert e Systemgrupp erstellen sudo, an déi zweet wÀert e Benotzer dobÀi ginn jupyter:
lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyterLoosst eis kucken wéi eng Gruppen de Benotzer gehéiert jupyter:
lxc exec jupyterlab -- id -Gn jupyter
jupyter sudoAlles ass ok, loosst eis weidergoen.
Erlaabt all Benotzer déi Member vum Grupp sinn sudo benotzen Kommando sudo. Fir dëst ze maachen, lafen déi folgend Skript, wou sed decommentéiert d'Parameterlinn an der Konfiguratiounsdatei /etc/sudoers:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"JupyterLab installéieren an konfiguréieren ^
Jupyter Labo ass eng Python Applikatioun, also musse mir als éischt dësen Dolmetscher installéieren. Och, Jupyter Labo mir installéiere mam Python Package Manager pip, an net de System eent, well et am Systemrepository verÀnnert ka sinn an dofir musse mir d'OfhÀngegkeete fir et manuell léisen andeems Dir déi folgend Packagen installéiert - python3 python3-dev gcc libc-dev zeromq-dev:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-devLoosst eis Python Moduler a Package Manager aktualiséieren pip op déi aktuell Versioun:
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheelInstalléieren Jupyter Labo iwwer Package Manager pip:
lxc exec jupyterlab -- python3 -m pip install jupyterlabZënter den Extensiounen an Jupyter Labo sinn experimentell a ginn net offiziell mam Jupyterlab Package verschéckt, also musse mir et manuell installéieren an konfiguréieren.
Loosst eis NodeJS an de Package Manager fir et installéieren - NPM, zënter Jupyter Labo benotzt se fir seng Extensiounen:
lxc exec jupyterlab -- apk add nodejs npmZu Erweiderunge fir Jupyter Labo dĂ©i mir installĂ©ieren geschafft hunn, mussen se am Benotzerverzeichnis installĂ©iert ginn, well d'Applikatioun vum Benotzer lancĂ©iert gĂ«tt jupyter. De Problem ass datt et kee Parameter am Startbefehl gĂ«tt deen an e Verzeechnes weidergeleet ka ginn; d'Applikatioun akzeptĂ©iert nĂ«mmen eng Ămfeldvariabel an dofir musse mir se definĂ©ieren. Fir dĂ«st ze maachen, schreiwen mir de Variabel Export Kommando JUPYTERLAB_DIR an der Ămwelt vum Benotzer jupyter, ze Fichier .bashrcdĂ©i ausgefouert gĂ«tt all KĂ©ier wann de Benotzer aloggen:
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"De nÀchste Kommando wÀert eng speziell Extensioun installéieren - Extensioun Manager an Jupyter Labo:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"Elo ass alles prett fir den éischte Start Jupyter Labo, awer mir kënnen nach ëmmer e puer nëtzlech Extensiounen installéieren:
toc- Inhaltsverzeechnes, generéiert eng Lëscht vun Rubriken an engem Artikel / Notizbuchjupyterlab-horizon-theme- UI Themajupyterlab_neon_theme- UI Themajupyterlab-ubu-theme- Eng aner Thema vum Auteur dësen Artikel :) Awer an dësem Fall gëtt d'Installatioun vum GitHub Repository gewisen
Also, lafen déi folgend Kommandoen sequenziell fir dës Extensiounen ze installéieren:
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"Nodeems mir d'Extensiounen installéiert hunn, musse mir se kompiléieren, well virdrun, wÀhrend der Installatioun, hu mir de Schlëssel uginn --no-build ZÀit ze spueren. Elo wÀerte mir dÀitlech beschleunegen andeems se se an engem Go kompiléieren:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"Elo lafen dĂ©i folgend zwee Kommandoen fir et fir d'Ă©ischte KĂ©ier auszefĂ©ieren Jupyter Labo. Et wier mĂ©iglech et mat engem Kommando ze lancĂ©ieren, awer an dĂ«sem Fall gĂ«tt de Startbefehl, dee schwĂ©ier an Ărem Kapp ze erĂ«nneren ass, duerch Bash am Container erĂ«nnert ginn, an net um Host, wou et scho genuch Kommandoen sinn fir se an d'Geschicht opzehuelen :)
Aloggen op de Container als Benotzer jupyter:
lxc exec jupyterlab -- su -l jupyterAls nÀchst, lafen Jupyter Labo mat Schlësselen a Parameteren wéi uginn:
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browserGitt op d'Adress an Ărem Webbrowser http://10.0.5.5:8888 an op der SĂ€it dĂ©i opmaacht gitt Token Zougang deen Dir an der Konsole gesitt. KopĂ©iert a paste se op d'SĂ€it, da klickt Login. Nodeems Dir Iech ugemellt hutt, gitt op d'ExtensiounsmenĂŒ op der lĂ©nker SĂ€it, wĂ©i an der Figur hei Ă«nnendrĂ«nner, wou Dir gefuerdert gĂ«tt, wann Dir den Extensiounsmanager aktivĂ©iert, SĂ©cherheetsrisiken ze huelen andeems Dir Extensiounen vun DrĂ«tt Parteien installĂ©iert fir dĂ©i de Kommando JupyterLab EntwĂ©cklung ass net verantwortlech:

Mir isolĂ©ieren awer dat Ganzt Jupyter Labo a plazĂ©iert et an engem Container sou datt DrĂ«tt-Partei-Extensiounen dĂ©i NodeJS erfuerderen a benotzen, kĂ«nnen net op d'mannst Daten op der Disk klauen wĂ©i dĂ©i, dĂ©i mir am Container opmaachen. Gitt op Ăr privat Dokumenter um Host an /home Prozesser aus dem Container sinn onwahrscheinlech erfollegrĂ€ich, a wa se et maachen, da musst Dir Privilegien op Dateien am Hostsystem hunn, well mir de Container lafen onprivilegiĂ©ierten Modus. BasĂ©ierend op dĂ«s Informatioun, kĂ«nnt Dir de Risiko bewĂ€erten fir Extensiounen anzebezĂ©ien Jupyter Labo.
Erstellt IPython Notizbicher (SĂ€iten an Jupyter Labo) gĂ«tt elo am Heemverzeechnes vum Benotzer erstallt - /home/jupyter, awer eis PlĂ€ng sinn d'DonnĂ©eĂ«n (deelen) tĂ«scht dem Host an dem Container opzedeelen, also zrĂ©ck an d'Konsole a stoppen Jupyter Labo andeems Dir Hotkey ausfĂ©iert - CTRL+C an Ăntwert y op Ufro. Dann ofschlĂ©issen d'Interaktiv Sessioun vum Benotzer jupyter eng Hotkey ausfĂ«llen CTRL+D.
Deelen Daten mam Host ^
Fir Daten mat dem Host ze deelen, musst Dir en Apparat am Container erstellen deen Iech erlaabt dëst ze maachen an dëst ze maachen, fuert de folgende Kommando, wou mir déi folgend Schlësselen spezifizéieren:
lxc config device add- De Kommando fĂŒĂŒgt d'Apparatkonfiguratioun unjupyter- ID vum Container an deem d'Konfiguratioun bĂ€igefĂŒĂŒgt gĂ«tthostfs- Apparat ID. Dir kĂ«nnt all Numm setzen.disk- D'Zort vum Apparat gĂ«tt uginnpath- SpezifizĂ©iert de Wee am Container op deen LXD dĂ«sen Apparat montĂ©iertsource- Gitt d'Quell un, de Wee zum Verzeechnes um Host deen Dir mam Container deele wĂ«llt. SpezifizĂ©iert de Wee no Ăre VirlĂ©iften
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooksFir de Katalog /home/dv/projects/ipython-notebooks Erlaabnis muss op de Container Benotzer gesat ginn, deen am Moment eng UID glÀich ass SubUID + UID, kuckt Kapitel Sécherheet. Container Privilegien an Artikel Déi grondleeënd FÀegkeeten vun LXD, engem Containersystem an Linux.
Setzt d'Erlaabnis op den Host, wou de BesĂ«tzer de Container Benotzer ass jupyter, an d'Variabel $USER wĂ€ert Ăre Host Benotzer als Grupp uginn:
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooksMoien Welt! ^
Wann Dir nach eng Konsol Sessioun oppen am Container mat Jupyter Labo, da restart et mat engem neie Schlëssel --notebook-dir andeems Dir de WÀert setzt /mnt/hostfs wéi de Wee op d'Wurzel vun de Laptops am Container fir den Apparat deen mir am virege Schrëtt erstallt hunn:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfsDa gitt op d'SĂ€it http://10.0.5.5:8888 a erstellt Ăren Ă©ischte Laptop andeems Dir op de KnĂ€ppchen op der SĂ€it klickt wĂ©i op der Foto hei Ă«nnendrĂ«nner:

Dann, am Feld op der SÀit, gitt de Python Code deen de Klassiker weist Hello World!. Wann Dir fÀerdeg sidd aginn, dréckt CTRL+ENTER oder de "Spill" KnÀppchen op der Toolbar uewen fir JupyterLab dëst ze maachen:

Zu dësem ZÀitpunkt ass bal alles prett fir ze benotzen, awer et wÀert oninteressant sinn wa mir keng zousÀtzlech Python Moduler installéieren (vollwÀerteg Uwendungen) déi d'StandardfÀegkeete vum Python wesentlech ausbaue kënnen Jupyter Laboalso loosst eis weidergoen :)
PS DĂ©i interessant Saach ass, datt dĂ©i al Ămsetzung jupyter Ă«nner Code Numm Jupyter Notizbuch ass net fortgaang an et existĂ©iert parallel mat Jupyter Labo. Fir op dĂ©i al Versioun ze wiesselen, befollegt de Link deen de Suffix an der Adress bĂ€idrĂ©it/tree, an den Iwwergank op dĂ©i nei Versioun gĂ«tt mam Suffix duerchgefouert /lab, awer et muss net spezifizĂ©iert ginn:
- Jupyter Notizbuch - http://10.0.5.5:8888/tree
- Jupyter Lab - http://10.0.5.5:8888/lab
Erweidert d'FĂ€egkeete vum Python ^
An dëser Rubrik wÀerte mir sou mÀchteg Python Sproochmoduler installéieren wéi NummPy, Pandas, matplotlib, IPyWidgets d'Resultater vun deenen an Laptops integréiert sinn Jupyter Labo.
Ier Dir déi opgelëscht Python Moduler duerch de Package Manager installéiert pip Mir mussen als éischt d'SystemofhÀngegkeeten an Alpine léisen Linux:
g++- Noutwendeg fir Moduler ze kompiléieren, well e puer vun hinnen an der Sprooch implementéiert sinn C ++ a verbënnt mam Python beim Runtime als binÀre Modulerfreetype-dev- OfhÀngegkeet fir Python Modul matplotlib
OfhÀngegkeeten installéieren:
lxc exec jupyterlab -- apk add g++ freetype-devEt gëtt ee Problem mam aktuellen Zoustand vun der Alpenverbreedung. Linux Ech kann déi nei Versioun vun NumPy net kompiléieren; ech kréien e Kompilatiounsfehler, deen ech net léise kann:
Feeler: Konnt net bauen Rieder fir numpy déi PEP benotzen 517 a kann net direkt installéiert ginn
Dofir wĂ€erte mir dĂ«se Modul als System Package installĂ©ieren, deen eng scho kompilĂ©iert Versioun verdeelt, awer e bĂ«sse mĂ©i al wĂ©i dat wat de Moment um Site verfĂŒgbar ass:
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-devAls nÀchst installéiert Python Moduler duerch de Package Manager pip. Gitt w.e.g. Gedold well e puer Moduler kompiléieren a kënnen e puer Minutten daueren. Op menger Maschinn huet d'Kompilatioun ~15 Minutten gedauert:
lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlibInstallatioun Cache lÀschen:
lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*Testen Moduler am JupyterLab ^
Wann Dir lafen Jupyter Labo, Restart et sou datt déi nei installéiert Moduler aktivéiert ginn. Fir dëst ze maachen, klickt an enger Konsolsessioun CTRL+C wou Dir hutt et Lafen an gitt y Ufro ze stoppen an dann erëm ufÀnken Jupyter Labo andeems Dir den Up-Pfeil op der Tastatur dréckt fir de Kommando net erëm an dann anzeginn Enter fir et unzefÀnken:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfsGitt op d'SĂ€it http://10.0.5.5:8888/lab oder erfrĂ«scht d'SĂ€it an Ărem Browser, a gitt dann de folgende Code an enger neier Notizbuchzelle:
%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_plotDir sollt e Resultat kréien wéi am Bild hei drënner, wou IPyWidgets generéiert en UI Element op der SÀit déi interaktiv mam Quellcode interagéiert, an och matplotlib weist d'Resultat vum Code a Form vun engem Bild als Funktiounsgraf:

Vill Beispiller IPyWidgets Dir kënnt et an Tutorials fannen hei
Wat soss? ^
Gutt geschafft wann Dir bliwwen sidd an um Enn vum Artikel erreecht hutt. Ech hunn bewosst kee fÀerdege Skript um Enn vum Artikel gepost deen installéiere géif Jupyter Labo an "eem Klick" fir d'Aarbechter ze encouragéieren :) Awer Dir kënnt et selwer maachen, well Dir scho wësst wéi, wann Dir d'Kommandoen an engem eenzege Bash Skript gesammelt hutt :)
Dir kënnt och:
- Setzt en Netznumm fir de Container anstatt eng IP Adress andeems Dir et einfach schreift
/etc/hostsa gitt d'Adress am Browser http://jupyter.local:8888 - Spillt ronderëm mat der Ressourcelimit fir de Container, fir dëst liest d'Kapitel an Basis LXD FÀegkeeten oder kritt méi Informatiounen op der LXD Entwéckler Site.
- Ănnert d'Thema:

A vill méi kënnt Dir maachen! Dat ass alles. Ech wënschen Iech Erfolleg!
UPDATE: 15.04.2020/18/30 XNUMX:XNUMX - Korrigéiert Feeler am Kapitel "Hallo, Welt!"
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX - KorrigĂ©iert a bĂ€igefĂŒĂŒgt Text an der Beschreiwung vun der Extensioun Manager Aktivatioun Jupyter Labo
UPDATE: 16.04.2020/10/40 XNUMX:XNUMX - Korrigéiert Feeler am Text fonnt a liicht geÀnnert fir d'Besserung d'Kapitel "Basis Software installéieren an de System opzestellen"
Source: will.com
