Lansiranje Jupytera u LXD orbitu

Da li ste ikada morali da eksperimentišete sa kodom ili sistemskim uslužnim programima u Linuxu kako ne biste brinuli o osnovnom sistemu i da ne biste sve srušili u slučaju greške u kodu koji bi trebao da radi sa root privilegijama?

Ali šta je sa činjenicom da, recimo, trebate testirati ili pokrenuti cijeli klaster raznih mikroservisa na jednom stroju? Stotinu ili čak hiljadu?

Sa virtuelnim mašinama kojima upravlja hipervizor, takvi problemi mogu i biće rešeni, ali po koju cenu? Na primjer, kontejner u LXD baziran na Alpine Linux distribuciji troši samo 7.60MB RAM-a i gdje korijenska particija zauzima nakon pokretanja 9.5MB! Kako ti se to sviđa, Elone Musk? Preporučujem odjavu osnovne mogućnosti LXD - kontejnerskog sistema u Linuxu

Nakon što je generalno postalo jasno šta su LXD kontejneri, idemo dalje i razmislimo, šta ako postoji takva platforma za harvester na kojoj možete bezbedno pokrenuti kod za host, generisati grafikone, dinamički (interaktivno) povezati UI-widgete sa svojim kodom, dopuniti kod tekstom sa blackjack... formatiranjem? Neka vrsta interaktivnog bloga? Vau... želim to! Željeti! 🙂

Pogledajte ispod mačke gdje ćemo lansirati u kontejneru jupyter lab - sljedeću generaciju korisničkog sučelja umjesto zastarjelog Jupyter Notebooka, a instalirat ćemo i Python module kao npr. numpy, Pandas, matplotlib, IPyWidgets koji će vam omogućiti da uradite sve gore navedeno i sve to snimite u poseban fajl - IPython laptop.

Lansiranje Jupytera u LXD orbitu

Plan orbitalnog polijetanja ^

Lansiranje Jupytera u LXD orbitu

Hajde da navedemo kratak akcioni plan kako bi nam olakšali implementaciju gornje šeme:

  • Hajde da instaliramo i pokrenemo kontejner na osnovu kompleta za distribuciju Alpine Linux. Koristit ćemo ovu distribuciju jer je usmjerena na minimalizam i u nju će instalirati samo najpotrebniji softver, ništa suvišno.
  • Hajde da dodamo dodatni virtuelni disk u kontejner i damo mu ime - hostfs i montirajte ga na korijenski sistem datoteka. Ovaj disk će omogućiti korištenje datoteka na hostu iz datog direktorija unutar kontejnera. Tako će naši podaci biti neovisni o kontejneru. Ako se kontejner izbriše, podaci će ostati na hostu. Također, ova šema je korisna za dijeljenje istih podataka između mnogih kontejnera bez korištenja standardnih mrežnih mehanizama distribucije kontejnera.
  • Hajde da instaliramo Bash, sudo, potrebne biblioteke, dodamo i konfigurišemo korisnika sistema
  • Hajde da instaliramo Python, module i kompajlirajmo binarne zavisnosti za njih
  • Hajde da instaliramo i pokrenemo jupyter lab, prilagodite izgled, instalirajte ekstenzije za njega.

U ovom članku ćemo početi s pokretanjem kontejnera, nećemo razmatrati instalaciju i konfiguraciju LXD-a, sve ovo možete pronaći u drugom članku - Osnovne karakteristike LXD - Linux kontejnerskih sistema.

Instalacija i konfiguracija osnovnog sistema ^

Kreiramo kontejner naredbom u kojoj specificiramo sliku - alpine3, identifikator za kontejner - jupyterlab i, ako je potrebno, konfiguracijski profili:

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

Ovdje koristim konfiguracijski profil hddroot koji specificira kreiranje kontejnera sa root particijom skladišni bazen nalazi se na fizičkom 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

Ovo mi daje priliku da eksperimentišem sa kontejnerima na HDD disku, štedeći resurse SSD diska, koji je takođe dostupan u mom sistemu 🙂 za koji sam napravio poseban konfiguracioni profil ssdroot.

Nakon što je kontejner kreiran, on je u stanju STOPPED, tako da ga trebamo pokrenuti pokretanjem init sistema u njemu:

lxc start jupyterlab

Hajde da prikažemo listu kontejnera u LXD pomoću tastera -c što ukazuje na koje cprikaz stubova:

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

Prilikom kreiranja kontejnera, IP adresa je odabrana nasumično, jer smo koristili konfiguracijski profil default koji je prethodno konfigurisan u članku Osnovne karakteristike LXD - Linux kontejnerskih sistema.

Ovu IP adresu ćemo promijeniti u pamtljiviju kreiranjem mrežnog interfejsa na nivou kontejnera, a ne na nivou konfiguracionog profila kao što je sada u trenutnoj konfiguraciji. Ne morate ovo da radite, možete to preskočiti.

Kreiranje mrežnog interfejsa eth0 koji povezujemo sa prekidačem (mrežni most) lxdbr0 u kojem smo omogućili NAT prema prethodnom članku i kontejner će sada imati pristup internetu, a interfejsu dodjeljujemo i statičku 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

Nakon dodavanja uređaja, kontejner se mora ponovo pokrenuti:

lxc restart jupyterlab

Provjera statusa kontejnera:

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

Instalacija osnovnog softvera i podešavanje sistema ^

Da biste upravljali našim kontejnerom, morate instalirati sljedeći softver:

paket
Opis

bash
GNU Bourne Again ljuska

bash-završetak
Programabilni završetak za bash shell

sudo
Dajte određenim korisnicima mogućnost da pokrenu neke komande kao root

senka
Paket alata za upravljanje lozinkom i nalogom sa podrškom za shadow fajlove i PAM

tzdata
Izvori podataka o vremenskoj zoni i ljetnom računanju vremena

nano
Pico editor klon sa poboljšanjima

Dodatno, možete instalirati podršku u sistemske man-stranice tako što ćete instalirati sljedeće pakete − man man-pages mdocml-apropos less

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

Pogledajmo naredbe i tipke koje smo koristili:

  • lxc — Pozovite LXD klijenta
  • exec - LXD klijentska metoda koja pokreće naredbu u kontejneru
  • jupyterlab — ID kontejnera
  • -- — Poseban ključ koji specificira da se dalji ključevi ne tumače kao ključevi za lxc i proslijedite ostatak niza kao što jeste u kontejner
  • apk — Alpine Linux distribucijski paket menadžer
  • add — Metoda upravitelja paketa koja instalira pakete navedene nakon naredbe

Zatim ćemo postaviti vremensku zonu u sistemu Europe/Moscow:

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

Nakon instaliranja vremenske zone, paket tzdata više nije potreban u sistemu, zauzet će prostor, pa hajde da ga izbrišemo:

lxc exec jupyterlab -- apk del tzdata

Provjera vremenske zone:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Kako ne bismo trošili puno vremena na postavljanje Bash-a za nove korisnike u kontejneru, u sljedećim koracima ćemo kopirati gotove skel fajlove sa host sistema na njega. Ovo će vam omogućiti da interaktivno uljepšate Bash u kontejneru. Moj host sistem je Manjaro Linux i fajlovi koji se kopiraju /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors u principu su prikladni za Alpine Linux i ne uzrokuju kritične probleme, ali možda imate drugačiju distribuciju i trebate samostalno otkriti postoji li greška prilikom pokretanja Bash-a u kontejneru.

Kopirajte skel fajlove u kontejner. Ključ --create-dirs će kreirati potrebne direktorije ako ne postoje:

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

Za postojećeg root korisnika, kopirajte skel datoteke upravo kopirane u kontejner u početni direktorij:

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 instalira sistemsku ljusku za korisnike /bin/sh, zamijenit ćemo ga sa root korisnik u Bashu:

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

da root korisnik nije bio bez lozinke, treba postaviti lozinku. Sljedeća naredba će za njega generirati i postaviti novu slučajnu lozinku, koju ćete vidjeti na ekranu konzole nakon njenog izvršenja:

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

Takođe, kreirajmo novog korisnika sistema - jupyter za koje ćemo kasnije konfigurisati jupyter lab:

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

Hajde da generišemo i postavimo lozinku za to:

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

Zatim ćemo izvršiti dvije naredbe, prva će kreirati sistemsku grupu sudo, a drugi će mu dodati korisnika jupyter:

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

Pogledajmo kojoj grupi korisnik pripada jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Sve je ok, idemo dalje.

Dozvoli svim korisnicima koji su članovi grupe sudo koristi komandu sudo. Da biste to učinili, pokrenite sljedeću skriptu gdje sed dekomentira liniju parametara u konfiguracijskoj datoteci /etc/sudoers:

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

Instalacija i konfiguracija JupyterLaba ^

jupyter lab je Python aplikacija, tako da prvo moramo instalirati ovaj interpreter. također, jupyter lab mi ćemo instalirati koristeći Python paket menadžer pip, a ne sistemski, jer je možda zastario u sistemskom spremištu i stoga moramo ručno riješiti ovisnosti za njega instaliranjem sljedećih paketa – python3 python3-dev gcc libc-dev zeromq-dev:

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

Ažurirajmo Python module i menadžer paketa pip na trenutnu verziju:

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

Instalirajte jupyter lab preko menadžera paketa pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Budući da su ekstenzije u jupyter lab su eksperimentalni i službeno se ne isporučuju s jupyterlab paketom, tako da ga moramo ručno instalirati i konfigurirati.

Hajde da instaliramo NodeJS i menadžer paketa za njega - NPM, pošto jupyter lab koristi ih za svoje ekstenzije:

lxc exec jupyterlab -- apk add nodejs npm

Za ekstenzije za jupyter lab koje ćemo instalirati proradile, potrebno ih je instalirati u korisnički direktorij jer će se aplikacija pokrenuti od korisnika jupyter. Problem je u tome što u naredbi pokretanja ne postoji parametar koji se može proslijediti direktoriju; aplikacija prihvata samo varijablu okruženja i stoga je moramo definirati. Da bismo to učinili, napisat ćemo naredbu za izvoz varijable JUPYTERLAB_DIR u korisničkom okruženju jupyter, u datoteku .bashrckoji se izvršava svaki put kada se korisnik prijavi:

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

Sljedeća komanda će instalirati posebnu ekstenziju - upravitelj ekstenzija 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"

Sada je sve spremno za prvo lansiranje jupyter lab, ali još uvijek možemo instalirati nekoliko korisnih ekstenzija:

  • toc — Sadržaj, generiše listu naslova u članku/bilježnici
  • jupyterlab-horizon-theme — UI tema
  • jupyterlab_neon_theme — UI tema
  • jupyterlab-ubu-theme - Drugi tema od autora ovaj članak :) Ali u ovom slučaju će biti prikazana instalacija iz GitHub repozitorija

Dakle, pokrenite sljedeće naredbe uzastopno da instalirate ove ekstenzije:

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"

Nakon instaliranja ekstenzija, moramo ih kompajlirati, jer smo prethodno, tokom instalacije, naveli ključ --no-build da uštedite vreme. Sada ćemo značajno ubrzati tako što ćemo ih sastaviti u jednom potezu:

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

Sada pokrenite sljedeće dvije naredbe da ga pokrenete po prvi put jupyter lab. Bilo bi moguće pokrenuti je jednom komandom, ali u ovom slučaju, naredbu za pokretanje, koju je teško zapamtiti u mislima, pamti bash u kontejneru, a ne na hostu, gdje već ima dovoljno komandi da ih upišem u istoriju :)

Prijavite se na kontejner kao korisnik jupyter:

lxc exec jupyterlab -- su -l jupyter

Sljedeće, trči jupyter lab sa ključevima i parametrima kako je naznačeno:

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

Idite na adresu u vašem web pretraživaču http://10.0.5.5:8888 i na stranici koja se otvori enter token pristup koji ćete vidjeti u konzoli. Kopirajte ga i zalijepite na stranicu, a zatim kliknite Ulogovati se. Nakon prijave, idite na meni ekstenzija s lijeve strane, kao što je prikazano na donjoj slici, gdje ćete biti upitani, prilikom aktivacije upravitelja ekstenzija, da preuzmete sigurnosni rizik instaliranjem ekstenzija od trećih lica za koje je naredba JupyterLab razvoj nije odgovoran:

Lansiranje Jupytera u LXD orbitu

Međutim, mi izolujemo celinu jupyter lab i smjestite ga u kontejner tako da ekstenzije treće strane koje zahtijevaju i koriste NodeJS ne mogu barem ukrasti podatke na disku osim onih koje otvorimo unutar kontejnera. Dođite do svojih privatnih dokumenata na hostu /home malo je vjerovatno da će procesi iz kontejnera uspjeti, a ako uspiju, onda morate imati privilegije nad datotekama na host sistemu, pošto kontejner pokrećemo u neprivilegirani način rada. Na osnovu ovih informacija možete procijeniti rizik od uključivanja proširenja jupyter lab.

Kreirane IPython sveske (stranice u jupyter lab) će se sada kreirati u korisničkom početnom direktoriju - /home/jupyter, ali naši planovi su da podijelimo podatke (share) između hosta i kontejnera, pa se vratite na konzolu i zaustavite jupyter lab izvršavanjem prečice - CTRL+C i odgovaranje y na zahtjev. Zatim prekinuti interaktivnu sesiju korisnika jupyter dovršavanje prečice CTRL+D.

Dijeljenje podataka sa domaćinom ^

Da biste podijelili podatke sa hostom, potrebno je da kreirate uređaj u kontejneru koji vam to omogućava i da to uradite, pokrenite sljedeću naredbu gdje navodimo sljedeće ključeve:

  • lxc config device add — Komanda dodaje konfiguraciju uređaja
  • jupyter — ID kontejnera kojem je konfiguracija dodana
  • hostfs — ID uređaja. Možete postaviti bilo koje ime.
  • disk — Tip uređaja je naznačen
  • path — Određuje putanju u kontejneru na koji će LXD montirati ovaj uređaj
  • source — Navedite izvor, putanju do direktorija na hostu koji želite podijeliti sa kontejnerom. Odredite putanju prema vašim željama
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Za katalog /home/dv/projects/ipython-notebooks dozvola mora biti postavljena na korisnika kontejnera koji trenutno ima UID jednak SubUID + UID, vidi poglavlje Sigurnost. Privilegije kontejnera u članku Osnovne karakteristike LXD - Linux kontejnerskih sistema.

Postavite dozvolu za host, gdje će vlasnik biti korisnik kontejnera jupyter, i varijabla $USER će specificirati vašeg host korisnika kao grupu:

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

Zdravo svijete! ^

Ako još uvijek imate otvorenu sesiju konzole u kontejneru sa jupyter lab, a zatim ga ponovo pokrenite novim ključem --notebook-dir postavljanjem vrijednosti /mnt/hostfs kao put do korijena prijenosnih računala u kontejneru za uređaj koji smo kreirali u prethodnom koraku:

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

Zatim idite na stranicu http://10.0.5.5:8888 i kreirajte svoj prvi laptop klikom na dugme na stranici kao što je prikazano na slici ispod:

Lansiranje Jupytera u LXD orbitu

Zatim u polje na stranici unesite Python kod koji će prikazati klasični Hello World!. Kada završite sa unosom, pritisnite CTRL+ENTER ili dugme "play" na alatnoj traci na vrhu kako bi JupyterLab uradio ovo:

Lansiranje Jupytera u LXD orbitu

U ovom trenutku je gotovo sve spremno za upotrebu, ali će biti nezanimljivo ako ne instaliramo dodatne Python module (punopravne aplikacije) koji mogu značajno proširiti standardne mogućnosti Pythona u jupyter lab, dakle, idemo dalje :)

PS Zanimljivo je da je stara implementacija Jupiter pod kodnim imenom Jupyter Notebook nije nestao i postoji paralelno sa jupyter lab. Da biste se prebacili na staru verziju, slijedite vezu dodajući sufiks u adresu/tree, a prijelaz na novu verziju vrši se sufiksom /lab, ali ne mora biti specificirano:

Proširivanje mogućnosti Pythona ^

U ovom odeljku ćemo instalirati tako moćne Python jezičke module kao što su numpy, Pandas, matplotlib, IPyWidgets čiji su rezultati integrisani u laptop računare jupyter lab.

Prije instaliranja navedenih Python modula preko upravitelja paketa pip prvo moramo riješiti sistemske ovisnosti u Alpine Linuxu:

  • g++ — Potreban za kompajliranje modula, pošto su neki od njih implementirani u jeziku C ++ i povežite se na Python u vrijeme izvođenja kao binarni moduli
  • freetype-dev - zavisnost od Python modula matplotlib

Instaliranje zavisnosti:

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

Postoji jedan problem: u trenutnom stanju Alpine Linux distribucije, neće biti moguće kompajlirati novu verziju NumPyja; pojavit će se greška kompilacije koju nisam mogao riješiti:

GREŠKA: Nije moguće napraviti kotače za numpy koji koriste PEP 517 i ne mogu se direktno instalirati

Stoga ćemo ovaj modul instalirati kao sistemski paket koji distribuira već kompajliranu verziju, ali malo stariju od one koja je trenutno dostupna na stranici:

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

Zatim instalirajte Python module kroz upravitelj paketa pip. Budite strpljivi jer će se neki moduli kompajlirati i može potrajati nekoliko minuta. Na mojoj mašini, kompilacija je trajala ~15 minuta:

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

Brisanje predmemorije instalacije:

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

Testiranje modula u JupyterLabu ^

Ako trčiš jupyter lab, ponovo ga pokrenite tako da se novoinstalirani moduli aktiviraju. Da biste to učinili, u sesiji konzole kliknite CTRL+C gdje je pokrenut i uđite y da zaustavite zahtjev, a zatim počnete ponovo jupyter lab pritiskom na strelicu nagore na tastaturi da ne bi ponovo uneli komandu i zatim Enter za početak:

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

Idite na stranicu http://10.0.5.5:8888/lab ili osvježite stranicu u svom pretraživaču, a zatim unesite sljedeći kod u novu ćeliju bilježnice:

%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

Trebali biste dobiti rezultat kao na slici ispod, gdje IPyWidgets generiše UI element na stranici koji interaktivno stupa u interakciju s izvornim kodom, a također matplotlib prikazuje rezultat koda u obliku slike kao graf funkcije:

Lansiranje Jupytera u LXD orbitu

Mnogo primjera IPyWidgets možete ga pronaći u tutorijalima ovdje

Šta još? ^

Bravo ako ste ostali i došli do samog kraja članka. Namjerno nisam postavio gotovu skriptu na kraju članka koja bi se instalirala jupyter lab u "jednom kliku" da ohrabrite radnike :) Ali to možete i sami, pošto već znate kako, nakon što ste sakupili komande u jednu Bash skriptu :)

Također možete:

  • Postavite naziv mreže za kontejner umjesto IP adrese tako što ćete ga napisati na jednostavnom /etc/hosts i ukucajte adresu u pretraživač http://jupyter.local:8888
  • Poigrajte se s ograničenjem resursa za kontejner, za ovo pročitajte poglavlje u osnovne LXD mogućnosti ili dobiti više informacija na LXD developer stranici.
  • Promijenite temu:

Lansiranje Jupytera u LXD orbitu

I još mnogo toga možete učiniti! To je sve. Želim ti uspjeh!

AŽURIRANJE: 15.04.2020 18:30 - Ispravljene greške u poglavlju “Zdravo, svijete!”
AŽURIRANJE: 16.04.2020 10:00 — Ispravljen i dodan tekst u opisu aktivacije upravitelja ekstenzija jupyter lab
AŽURIRANJE: 16.04.2020 10:40 — Ispravljene greške pronađene u tekstu i neznatno izmenjeno na bolje poglavlje „Instaliranje osnovnog softvera i podešavanje sistema“

izvor: www.habr.com

Dodajte komentar