Deductis Iuppiter in LXD orbita

Fuistine umquam experiri cum codice seu systema utilitates in Linux ut non cures de basi ratione et non omnia destruas in casu erroris in codice qui cum privilegiis radicibus currere debet?

Sed quid quod dicamus te probare vel currere in una machina totum fasciculum variarum micro- ionum? Centum an mille?

Cum machinis virtualis ab hypervisore tractatis, tales quaestiones solvi possunt et erunt, sed quanti? Exempli gratia, continens in LXD distributione Linux Alpinae secundum distributionem tantum consumit 7.60MB RAM, et ubi radix maceriæ obtinet post satus 9.5MB! Quomodo tibi placet, Elon Musk? Commendo reprehendo sicco fundamentales facultates LXD - continentis systematis in Linux

Postquam in genere patuit quaenam LXD continentia sint, longius eamus et cogitemus, quid si tale messoris suggestum fuerit ubi tuto codicem exercitui currere possis, graphas generare, dynamice (interactive) ligare UI- contenta cum codice tuo; supplementum codicem cum textu Aenean... formatting? Quidam interactive blog! Wow... Volo! Egestas! πŸ™‚

Vide sub felem ubi immittamus in vase Juppiter lab - posteros interfaciei usoris loco Iuppiter Comentarii iam pridem usoris, et modulos Python etiam ut instituemus. numpy, pandas, matplotlib', IPyWidgets quae omnia supra scripta facere tibi sinet et omnia in speciali documento - IPython laptop servabis.

Deductis Iuppiter in LXD orbita

Orbital ne longe consilium ^

Deductis Iuppiter in LXD orbita

Brevis actio consilium destinet, ut facilius nobis ad propositum supra modum exsequendum:

  • Sit scriptor install et launch vas secundum distributionem ornamentum Alpinae Linux. Distributione hac utemur, quia minimalismum spectat, ac solum necessariam in ea programmationem instituemus, nihil supervacaneum.
  • Addamus additamentum virtualis orbis in vase et nomen ei da - hostfs et conscende eam ad radicem fasciculi. Hic orbis efficiet ut lima in hospitem ex dato presul intra continente uti possit. Sic notitia nostra sine vase erit. Si continens deletum est, notitia super exercitum remanebit. Etiam hoc schema utile est ad eandem datam communicandam inter multa vasa sine norma retis mechanismi continentis distributionem.
  • Instituamus Bash, sudo, necessarias bibliothecas, systema usoris addere et configurare
  • Instruamus Pythonem, moduli et binarii clientelas illis componant
  • Sit scriptor install quod launch Juppiter labspeciem customize, extensiones instituere pro eo.

In hoc articulo incipiemus deducendo continens, non considerare de installando et configurando LXD, haec omnia in alio articulo reperire potes. Basic lineamenta LXD - Linux systemata continens.

Institutionem et configurationem systematis fundamentalis ^

Vas cum praecepto in quo imaginem definimus creamus alpine3, identifier pro continens - jupyterlab et, si opus est, figurae figurae;

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

Hic sum usus configuratione profile hddroot quae dat speciem radicis in vase cum partitione Repono Pool sita in corporis HDD orbis:

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

Hoc mihi facultatem dat experiendi cum vasis in orbe HDD, salvis opibus orbis SSD, quae etiam in systemate meo praesto est, pro quo figuram figuram separatam creavi. ssdroot.

postquam continens creatur, est in statu; STOPPEDsic oportet illud incipere cursando in ea ratio init;

lxc start jupyterlab

Indicem continentiae in LXD clavibus utendo ostendemus -c quae indicat columns proponere;

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

Cum continens creando, IP oratio passim electa est, cum figurationem profile adhibebamus default quod ante felis in articulum Basic lineamenta LXD - Linux systemata continens.

Hanc IP inscriptionem mutabimus ad memorabiliorem unum creando interfaciem retis in gradu continentis, et non in plano profile configurationis sicut nunc in figura hodierna. Hoc non habes, saltare potes.

Creando network interface eth0 quam ad transitum coniungimus (pons network) lxdbr0 in quibus NAT secundum articulum praecedentem et continens accessum habebimus ad Interreti, et etiam IP oratio stabilis ad interfaciem assignamus - 10.0.5.5:

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

His additis fabrica, receptaculum rescindi debet;

lxc restart jupyterlab

Reprehendo statum continentis;

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

Installing basic software and setting up the system ^

Ad vas nostrum administrandum, sequenti programmate inaugurari debes:

sarcina
Description

vercundus
GNU Burne Iterum concha

vercundus, complementum
Programmable complementum ad vercundus testa

sudo
Da quidam users posse currere quaedam praecepta ut radix

umbra
Tessera et instrumentorum administratio rationi consentaneum cum subsidiis ad fasciculos umbrarum et PAM

tzdata
Fontes ad tempus zonae et diei tempus salvificum data

Nano
Picus editor clone cum enhancements

Accedit, auxilium instituere potes in systematis hominis paginis insertis fasciculis sequentibus man man-pages mdocml-apropos less

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

Intueamur mandata et claves quibus usi sumus;

  • lxc - Voca LXD clientis
  • exec - LXD Clientem modum, qui imperium in vase decurrit
  • jupyterlab - Continens ID
  • -- - Peculiaris clavis quae dat speciem claves ulterius non interpretandi sicut claves pro lxc et reliquam chordae ut continens
  • apk - Alpina Linux distributio sarcina procurator
  • add - A sarcina procurator modum qui installs packages certa post mandatum

Deinde tempus zonam in systemate ponemus Europe/Moscow:

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

Post tempus installing zona, in sarcina tzdata iam non opus est in systemate, spatium capiet, ut eam deleas:

lxc exec jupyterlab -- apk del tzdata

Reprehendo tempus zona:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Ut non multum temporis impendamus Bash pro novis usoribus in continente instituendo, in sequentibus gradibus skel limas paratas factas ex hospitii systemate ad illud effingemus. Hoc permittet te Bash in vase interactive praetendere. Meus hospes systema Manjaro Linux et tabulae exscriptae sunt /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors in principio aptae sunt pro Alpine Linux et difficultates criticas non causant, sed aliam distributionem habere potes et debes sine modo instar sicco si error sit in continente currentem Bash.

Effingo lima ut osseam continens. Clavis --create-dirs necessaria directoria creabit si non sunt:

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

Pro usuario radicis existenti, lima scelestae tantum expressa in receptaculum ad domum directorium effingo:

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

Alpina Linux installs a testa pro users ratio /bin/sherimus repone cum root user in Bash:

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

quod root usoris non ignoro, in tortor eget. Praeceptum sequens generabit et novam ei tesseram temere tradet, quam in scrinio consolatorio post eius executionem videbis;

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

Etiam, novum usorem systematis crearemus - jupyter pro quo postea configurabimus Juppiter lab:

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

Let's generate and set a password for it:

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

Deinceps duo mandata exequemur, primum systema coetus creabit sudoet secunda adiciet usorem ei jupyter:

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

Videamus quid usor coetus pertinet ad jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Omnia est ok, moveamur in.

Patitur omnes users qui sunt membra coetus sudo uti imperium sudo. Ad hoc currunt scriptum sequens sed uncomments parametri linea in configuration file /etc/sudoers:

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

Installing ac Vestibulum JupyterLab ^

Juppiter lab Python est applicatio, ut primum hunc interpretem instituamus. Item, Juppiter lab nos install usura Pythone sarcina procurator pipet non ratio unius, quia in promptuario systematis superari potest, ideoque necesse est ut manually dependentias pro eo componat, fasciculos sequentes inaugurari. python3 python3-dev gcc libc-dev zeromq-dev:

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

Sit scriptor update pythonis modulorum et sarcina procurator pip ad emendationem:

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

install Juppiter lab per sarcina procurator pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Cum extensiones in Juppiter lab experimentalia sunt et in sarcina jupyterlabrum publice non exiguntur, ita manually instituere et configurare debemus.

NodeJS instituamus et pro eo procurator involucrum - NPM, cum Juppiter lab utitur illis ad extensiones suas;

lxc exec jupyterlab -- apk add nodejs npm

Ad extensiones Juppiter lab quae operati instituemus, institui debent in directorio usoris, cum applicatio ex usore deducetur jupyter. Problema est nullum esse modulum in imperio Lorem quod ad directorium transeundum esse potest: applicationis solum variabilis ambitus accipit ideoque definiendum est. Ad hoc faciendum, mandatum exportationis variae scribemus JUPYTERLAB_DIR in user scriptor amet jupyter, Ad file .bashrcquod fit omni tempore utentis trabes in:

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

Proximum mandatum instituet specialem extensionem - extensionem procurator in Juppiter 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"

Nunc primum omnia parata sunt Juppiter labsed adhuc paucas extensiones utiles instituere possumus:

  • toc β€” Tabula contentorum, elenchum capitulorum in an- ticulo/comentario generat
  • jupyterlab-horizon-theme - III theme
  • jupyterlab_neon_theme - III theme
  • jupyterlab-ubu-theme - Allium unus theme ab auctor hoc articulo :) Sed hoc in casu, institutionem ex Repositorio GitHub ostendetur

Curre sequentia mandata continue ut has extensiones instituas;

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"

His extensionibus insertis, eas scribere debemus, cum antea, durante institutione, clavem designamus --no-build ad tempus conserves. Nunc signanter acceleremus eos in unum componendo ire;

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

Nunc sequentia duo mandata percurre, ut curramus primum Juppiter lab. Fieri posset ut uno imperio id deducerem, sed in hoc casu mandatum launch, quod difficile est in animo tuo recordari, memoria retinebitur in vase, et non in exercitu, ubi iam satis imperat. in historia notare :)

Positum est vas in user jupyter:

lxc exec jupyterlab -- su -l jupyter

Deinceps run Juppiter lab cum clavibus et parametris ut notatur;

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

Vade ad electronicam in navigatro tuo http://10.0.5.5:8888 et in pagina quae aperit intrare firmitatis indicium accessum quem in console videbis. Effingo quod crustulum in pagina, deinde deprime login. Post logging in, vade ad extensiones tabulas sinistrae, ut in figura infra ostenderis, ubi tu promptus erit, cum procurator extensionem activum, periculum securitatis capias, extensiones ex aliis partibus inauguratis, quibus mandatum est. JupyterLab progressus non est reus;

Deductis Iuppiter in LXD orbita

Sed totam solitudinem sumus Juppiter lab et pone in vase ut extensiones tertiae partis quae NodeJS requirunt et utantur, notitias in disco saltem furari non possint praeter ea quae intra continentem aperimus. Adepto ad documenta privata tua in hospitio /home Processus continentis abhorret succedere, et si fecerint, debes habere privilegia in fasciculis in systematis militiae, quia in vasis curritur. unprivileged modus. Ex his indiciis, periculum aestimare potes in extensionibus inclusis Juppiter lab.

IPython codicillos creatos (paginae in Juppiter lab) nunc creabitur in directorio domus usoris - /home/jupytersed consilia nostra inter exercitum et continentem dividantur, ut ad consolandum revertamur et desinamus. Juppiter lab exsequendo hotkey - CTRL+C et respondens y postulante. Tum desinunt user scriptor interactive session jupyter completing hotkey CTRL+D.

Socius notitia cum exercitu ^

Ad data cum exercitu communicare, debes fabricam facere in vase quod sinit hoc facere et hoc facere, sequens mandatum currite ubi claves sequentes denotamus:

  • lxc config device add - Quod mandatum adiungit fabrica configuratione
  • jupyter β€” ID continentis cui conformatio additur
  • hostfs - Fabrica ID. nomen quodvis potes ponere.
  • disk - Quod genus fabrica significatur
  • path - Iter designat in vase ad quod LXD conscendet hanc machinam
  • source β€” Specificare fontem, viam ad indicem militiae quam cum vase communicare vis. Secundum iter specificare optiones tuas
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Nam catalogus /home/dv/projects/ipython-notebooks licentia apponenda est continens user qui currently habet UID = SubUID + UID, vide capitulum Omnium saluti. Continens Privilegia articulus Basic lineamenta LXD - Linux systemata continens.

Licentiam pone in hospitio, ubi dominus usor continens erit jupyterac variabilis $USER erit specificare exercitum user ut coetus:

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

Salve, Orbis Terrarum! ^

Si adhuc habes Sessionem consolatorium apertum in vase cum Juppiter lab, deinde sileo eam novam clavem --notebook-dir ab occasu in valorem /mnt/hostfs sicut semita ad radicem Laptopi in continente ad fabricam quam in priori passu creavimus;

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

Deinde ad paginam http://10.0.5.5:8888 et crea primum laptop strepitando puga paginae ut in tabula infra ostendetur:

Deductis Iuppiter in LXD orbita

Deinde, in agro paginae, codicem Pythonis qui classicum ostentabit Hello World!. Cum perfeceris ingressus, torcular CTRL+ENTER seu "ludere" bullam in summo instrumentorum instrumentorum communicatione habere, hoc facere JupyterLab;

Deductis Iuppiter in LXD orbita

Hoc loco omnia fere ad usum parata sunt, sed ignarus erit si modulos Pythonis additos (applicationes plenae plenae) quae signanter capacitates Pythonis in Juppiter labergo :) transeamus.

PS interesting res est ut vetus implementation Iuppiter sub codice nomine Pentium Jupyter non recessit et est in parallelis Juppiter lab. Ad antiquam versionem vertas, nexum addito suffixo in inscriptione sequere/treeac transitus ad novam versionem profertur cum suffixo /lab, sed non specificari:

Dilatandi facultates Pythonis ^

In hac sectione, tam potentes linguae Pythonis modulos instituemus ut numpy, pandas, matplotlib', IPyWidgets eventus quorum integrantur in laptop Juppiter lab.

Ante installing modulorum Python enumerantur per sarcina procurator pip praemittenda est ratio clientium in Alpina Linux;

  • g++ - Opus ad modulos componendos, cum aliqui ex eis in lingua perficiantur C ++ et coniungere ad Pythonem in runtime ut modulorum binarii
  • freetype-dev - Pythonis moduli dependentia matplotlib'

clientelas installare:

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

Una quaestio est: in statu hodiernae distributionis Linux Alpinae, novam versionem NumPy componi non poterit, compilatio erroris apparebit me expedire non posse;

ERROR: Rotas aedificare non potuit pro numpy quo PEP 517 utuntur et directe institui non possunt

Huius moduli ergo instituemus ut sarcina systematica quae versionem iam exaratam distribuit, sed paulo antiquiorem quam quae in situ nunc in promptu est:

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

Deinde, modulorum Python inaugurare per sarcinam procurator pip. Quaeso patientes estote sicut moduli aliquot componendi et pauca minuta sumite. In machina mea, compilatio ~15 minuta tulit:

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

Repurgari institutionem caches:

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

Testis moduli in JupyterLab ^

Si res currit Juppiter lab, sileo eam ut moduli novi inaugurati reducuntur. Hoc facere, in sessione console strepita CTRL+C ubi habes quod currit et intrabit y sistere petitionem et rursus " Juppiter lab premendo sagittam in tincidunt ne iterum iterumque intret Enter ut satus est;

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

Perge ad paginam http://10.0.5.5:8888/lab vel paginam in navigatro tuo refice, ac deinde sequentem codicem in cellula nova comedas;

%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

Provenire debes ut infra in pictura, ubi IPyWidgets generat elementum UI in pagina quae interactively cum source codice, et etiam matplotlib' ostendit ex codice in forma picturae quasi functionis graph;

Deductis Iuppiter in LXD orbita

Multa exempla IPyWidgets potes invenire in tutorials hic

Quid plura? ^

Bene, si manseris, et ad finem articulum perveneris. Consulto scriptum non notavi in ​​fine articuli qui inaugurat Juppiter lab in "deprimendo" ad operarios adhortandos :) Sed hoc ipsum facere potes, quoniam iam scis quomodo, in unum Bash scriptum iussionibus collectis :)

Vos can quoque:

  • Nomen retis pone continens loco IP oratio scribendo in simplici /etc/hosts et typus inscriptione in pasco http://jupyter.local:8888
  • Circum ludere cum limite subsidii continentis, hoc enim in capitulo legitur basic facultatem LXD vel plus informationes in LXD elit situs.
  • Muta thema:

Deductis Iuppiter in LXD orbita

Et quanto plus potestis! Id omne. Opto tibi successum!

UPDATE: 15.04.2020/18/30 XNUMX:XNUMX - Errores correcti in capite "Salve, Mundus!"
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX - Correctus et additus textus in descriptione extensionis procurator activation Juppiter lab
UPDATE: 16.04.2020/10/40 XNUMX:XNUMX β€” Errores correcti qui in textu inveniuntur ac leviter mutati sunt in melius caput "Instruendo programmata fundamentalia et systema instituens"

Source: www.habr.com