Jupyter LXD Orbitinə buraxılır

Baza sistem haqqında narahat olmamaq və kök imtiyazları ilə işləməli olan kodda bir səhv olarsa hər şeyi yıxmamaq üçün Linux-da kod və ya sistem yardımçıları ilə sınaqdan keçirmisiniz?

Bəs tutaq ki, bir maşında müxtəlif mikroservislərin bütün çoxluğunu sınamalı və ya işlətməlisən? Yüz, hətta min?

Hipervisor tərəfindən idarə olunan virtual maşınlarla bu cür problemlər həll edilə bilər və həll olunacaq, bəs nəyin bahasına? Məsələn, Alp Linux paylanmasına əsaslanan LXD-də konteyner yalnız istehlak edir 7.60MB RAM və başlanğıcdan sonra kök bölmənin tutduğu yer 9.5MB! Bunu necə bəyənirsən, Elon Musk? Yoxlamağı məsləhət görürəm LXD-nin əsas imkanları - Linux-da konteyner sistemi

Ümumilikdə LXD konteynerlərinin nə olduğu aydınlaşdıqdan sonra, gəlin daha da irəli gedək və düşünək ki, host üçün kodu təhlükəsiz işlədə, qrafiklər yarada, UI vidjetlərini kodunuzla dinamik (interaktiv) əlaqələndirə biləcəyiniz belə bir kombayn platforması olsaydı, necə olacaq? kodu mətnlə blackjack... formatla əlavə edin? Bir növ interaktiv blog? Vay... mən istəyirəm! İstəyin! 🙂

Bir konteynerə atacağımız pişiyin altına baxın Yupiter laboratoriyası - köhnəlmiş Jupyter Notebook əvəzinə yeni nəsil istifadəçi interfeysi və biz həmçinin Python modullarını quraşdıracağıq, məsələn saysız, Pandas, matplotlib, IPyVidjetləri yuxarıda sadalanan hər şeyi etməyə və hamısını xüsusi bir faylda - IPython noutbukunda saxlamağa imkan verəcəkdir.

Jupyter LXD Orbitinə buraxılır

Orbital uçuş planı ^

Jupyter LXD Orbitinə buraxılır

Yuxarıdakı sxemi həyata keçirməyimizi asanlaşdırmaq üçün qısa fəaliyyət planını təsvir edək:

  • Dağıtım dəstinə əsaslanan konteyneri quraşdırıb işə salaq Alpin Linux. Biz bu paylamadan istifadə edəcəyik, çünki o, minimalizmə yönəlib və orada yalnız ən zəruri proqram təminatını quraşdıracaq, artıq heç nə yoxdur.
  • Gəlin konteynerə əlavə virtual disk əlavə edək və ona ad verək - hostfs və onu kök fayl sisteminə quraşdırın. Bu disk konteynerin daxilində verilmiş kataloqdan hostda olan faylları istifadə etməyə imkan verəcək. Beləliklə, məlumatlarımız konteynerdən müstəqil olacaq. Konteyner silinərsə, məlumatlar hostda qalacaq. Həmçinin, bu sxem konteyner paylanmasının standart şəbəkə mexanizmlərindən istifadə etmədən bir çox konteynerlər arasında eyni məlumatların paylaşılması üçün faydalıdır.
  • Bash, sudo, lazımi kitabxanaları quraşdıraq, sistem istifadəçisini əlavə edək və konfiqurasiya edək
  • Python, modulları quraşdıraq və onlar üçün binar asılılıqları tərtib edək
  • Quraşdıraq və işə salaq Yupiter laboratoriyası, görünüşü fərdiləşdirin, bunun üçün uzantılar quraşdırın.

Bu yazıda konteynerin işə salınması ilə başlayacağıq, LXD-nin quraşdırılması və konfiqurasiyasını nəzərdən keçirməyəcəyik, bütün bunları başqa bir məqalədə tapa bilərsiniz - LXD-nin əsas xüsusiyyətləri - Linux konteyner sistemləri.

Əsas sistemin quraşdırılması və konfiqurasiyası ^

Şəkili təyin etdiyimiz əmrlə konteyner yaradırıq - alpine3, konteyner üçün identifikator - jupyterlab və zəruri hallarda konfiqurasiya profilləri:

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

Burada konfiqurasiya profilindən istifadə edirəm hddroot kök bölməsi olan bir konteyner yaratmağı təyin edir Saxlama Hovuzu fiziki HDD diskində yerləşir:

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

Bu, mənim sistemimdə də mövcud olan SSD diskinin resurslarına qənaət edərək HDD diskindəki konteynerlərlə sınaqdan keçirmək imkanı verir 🙂 bunun üçün ayrıca konfiqurasiya profili yaratdım. ssdroot.

Konteyner yaradıldıqdan sonra vəziyyətdədir STOPPED, ona görə də biz init sistemini işə salmaqla başlamalıyıq:

lxc start jupyterlab

Açardan istifadə edərək konteynerlərin siyahısını LXD-də göstərək -c hansını göstərir columns ekranı:

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

Konteyneri yaratarkən, konfiqurasiya profilindən istifadə etdiyimiz üçün IP ünvanı təsadüfi seçildi default əvvəllər məqalədə konfiqurasiya edilmişdi LXD-nin əsas xüsusiyyətləri - Linux konteyner sistemləri.

İndi cari konfiqurasiyada olduğu kimi konfiqurasiya profili səviyyəsində deyil, konteyner səviyyəsində şəbəkə interfeysi yaratmaqla bu IP ünvanını daha yaddaqalan ünvana dəyişəcəyik. Bunu etmək lazım deyil, keçə bilərsiniz.

Şəbəkə interfeysinin yaradılması eth0 keçidə bağladığımız (şəbəkə körpüsü) lxdbr0 əvvəlki məqaləyə uyğun olaraq NAT-ı işə saldıq və konteyner indi İnternetə çıxış əldə edəcək və biz də interfeysə statik IP ünvanı təyin edirik - 10.0.5.5:

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

Cihaz əlavə edildikdən sonra konteyner yenidən işə salınmalıdır:

lxc restart jupyterlab

Konteynerin vəziyyətinin yoxlanılması:

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

Əsas proqram təminatının quraşdırılması və sistemin qurulması ^

Konteynerimizi idarə etmək üçün aşağıdakı proqramı quraşdırmalısınız:

Paketi
təsvir

bash
GNU Bourne Again qabığı

bash-tamamlama
Bash shell üçün proqramlaşdırıla bilən tamamlama

sudo
Müəyyən istifadəçilərə bəzi əmrləri kök kimi işlətmək imkanı verin

kölgə
Kölgə faylları və PAM dəstəyi ilə parol və hesab idarəetmə alətləri dəsti

tzdata
Saat qurşağı və gün işığına qənaət vaxtı datası üçün mənbələr

nano
Təkmilləşdirmələrlə Pico redaktoru klonu

Əlavə olaraq, aşağıdakı paketləri quraşdıraraq sistemin man-səhifələrində dəstəyi quraşdıra bilərsiniz - man man-pages mdocml-apropos less

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

İstifadə etdiyimiz əmrlərə və düymələrə baxaq:

  • lxc — LXD müştərisinə zəng edin
  • exec - Konteynerdə əmr işlədən LXD müştəri metodu
  • jupyterlab - Konteyner ID
  • -- - Əlavə düymələri üçün açar kimi şərh etməməyi təyin edən xüsusi açar lxc və simin qalan hissəsini konteynerə olduğu kimi keçirin
  • apk — Alp Linux paylama paketi meneceri
  • add — Komandadan sonra göstərilən paketləri quraşdıran paket meneceri metodu

Sonra, sistemdə bir saat qurşağı təyin edəcəyik Europe/Moscow:

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

Saat qurşağını quraşdırdıqdan sonra paket tzdata sistemdə artıq lazım deyil, yer tutacaq, ona görə də onu silək:

lxc exec jupyterlab -- apk del tzdata

Saat qurşağının yoxlanılması:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Konteynerdə yeni istifadəçilər üçün Bash quraşdırmaq üçün çox vaxt sərf etməmək üçün aşağıdakı addımlarda hazır skel fayllarını host sistemindən ona köçürəcəyik. Bu, Bash-ı bir konteynerdə interaktiv şəkildə gözəlləşdirməyə imkan verəcəkdir. Mənim host sistemim Manjaro Linux və kopyalanan fayllardır /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors Prinsipcə onlar Alpine Linux üçün uyğundur və kritik problemlər yaratmır, lakin fərqli bir paylamaya sahib ola bilərsiniz və konteynerdə Bash-i işə salarkən bir səhv olub olmadığını müstəqil şəkildə müəyyənləşdirməlisiniz.

Skel fayllarını konteynerə kopyalayın. Açar --create-dirs Əgər onlar mövcud deyilsə, lazımi qovluqları yaradacaq:

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

Mövcud kök istifadəçi üçün konteynerə yenicə kopyalanmış skel fayllarını ev kataloquna kopyalayın:

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 istifadəçilər üçün sistem qabığını quraşdırır /bin/sh, ilə əvəz edəcəyik root Bash-də istifadəçi:

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

O root istifadəçi parolsuz deyildi, o, parol təyin etməlidir. Aşağıdakı əmr onun üçün yeni təsadüfi parol yaradacaq və təyin edəcək, onu icra etdikdən sonra konsol ekranında görəcəksiniz:

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

Həmçinin, yeni sistem istifadəçisi yaradaq - jupyter bunun üçün daha sonra konfiqurasiya edəcəyik Yupiter laboratoriyası:

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

Bunun üçün parol yaradaq və təyin edək:

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

Sonra, iki əmri yerinə yetirəcəyik, birincisi sistem qrupu yaradacaq sudo, ikincisi isə ona istifadəçi əlavə edəcək jupyter:

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

Baxaq görək istifadəçi hansı qruplara aiddir jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Hər şey qaydasındadır, davam edək.

Qrupun üzvü olan bütün istifadəçilərə icazə verin sudo əmrindən istifadə edin sudo. Bunu etmək üçün aşağıdakı skripti işləyin, burada sed konfiqurasiya faylında parametr xəttini şərhdən çıxarır /etc/sudoers:

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

JupyterLab-ın quraşdırılması və konfiqurasiyası ^

Yupiter laboratoriyası Python proqramıdır, ona görə də əvvəlcə bu tərcüməçini quraşdırmalıyıq. Həmçinin, Yupiter laboratoriyası Python paket menecerindən istifadə edərək quraşdıracağıq pip, və sistem deyil, çünki o, sistem deposunda köhnəlmiş ola bilər və buna görə də aşağıdakı paketləri quraşdıraraq onun asılılığını əl ilə həll etməliyik - python3 python3-dev gcc libc-dev zeromq-dev:

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

Python modullarını və paket menecerini yeniləyək pip cari versiyaya:

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

Təyin etmək Yupiter laboratoriyası paket meneceri vasitəsilə pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

İçindəki uzantılardan bəri Yupiter laboratoriyası eksperimentaldır və rəsmi olaraq jupyterlab paketi ilə göndərilmir, ona görə də biz onu əl ilə quraşdırmalı və konfiqurasiya etməliyik.

Gəlin NodeJS və onun üçün paket menecerini - NPM-i quraşdıraq Yupiter laboratoriyası onları genişləndirmələri üçün istifadə edir:

lxc exec jupyterlab -- apk add nodejs npm

Üçün uzantılara Yupiter laboratoriyası yükləyəcəyimiz işlədi, onlar istifadəçi kataloqunda quraşdırılmalıdır, çünki proqram istifadəçidən işə salınacaq jupyter. Problem ondadır ki, işə salma əmrində kataloqa ötürülə bilən heç bir parametr yoxdur; proqram yalnız mühit dəyişənini qəbul edir və buna görə də biz onu müəyyən etməliyik. Bunun üçün biz dəyişən ixrac əmrini yazacağıq JUPYTERLAB_DIR istifadəçi mühitində jupyter, sənədləşdirmək .bashrcistifadəçi hər dəfə daxil olduqda yerinə yetirilir:

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

Növbəti əmr xüsusi bir uzantı quraşdıracaq - genişləndirmə meneceri Yupiter laboratoriyası:

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

İndi hər şey ilk buraxılışa hazırdır Yupiter laboratoriyası, lakin biz hələ də bir neçə faydalı uzantı quraşdıra bilərik:

  • toc — Mündəricat, məqalə/dəftərdə başlıqların siyahısını yaradır
  • jupyterlab-horizon-theme - UI mövzusu
  • jupyterlab_neon_theme - UI mövzusu
  • jupyterlab-ubu-theme - Başqa biri müəllifdən mövzu bu məqalə :) Amma bu halda GitHub deposundan quraşdırma göstəriləcək

Beləliklə, bu uzantıları quraşdırmaq üçün aşağıdakı əmrləri ardıcıl olaraq yerinə yetirin:

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"

Genişləndirmələri quraşdırdıqdan sonra onları tərtib etməliyik, çünki əvvəllər quraşdırma zamanı açarı göstərdik --no-build vaxta qənaət etmək üçün. İndi onları bir anda bir araya toplamaqla əhəmiyyətli dərəcədə sürətləndirəcəyik:

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

İndi ilk dəfə işə salmaq üçün aşağıdakı iki əmri yerinə yetirin Yupiter laboratoriyası. Onu bir komanda ilə işə salmaq olardı, lakin bu zaman beyninizdə yadda saxlamaq çətin olan işə salma əmri artıq kifayət qədər əmrlərin olduğu hostda deyil, konteynerdə bash ilə yadda qalacaq. onları tarixə yazmaq :)

Konteynerə istifadəçi kimi daxil olun jupyter:

lxc exec jupyterlab -- su -l jupyter

Sonra, qaç Yupiter laboratoriyası göstərildiyi kimi düymələr və parametrlərlə:

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

Veb brauzerinizdə ünvana keçin http://10.0.5.5:8888 və açılan səhifəyə daxil olun nişan konsolda görəcəyiniz giriş. Kopyalayın və səhifəyə yapışdırın, sonra klikləyin Giriş. Daxil olduqdan sonra, aşağıdakı şəkildə göstərildiyi kimi, sol tərəfdəki genişləndirmələr menyusuna gedin, burada siz genişləndirmə menecerini aktivləşdirərkən əmrin verildiyi üçüncü tərəflərdən uzantıları quraşdıraraq təhlükəsizlik risklərini götürmək istəniləcək. JupyterLab inkişafı məsuliyyət daşımır:

Jupyter LXD Orbitinə buraxılır

Bununla belə, biz bütövlükdə təcrid edirik Yupiter laboratoriyası və onu konteynerə elə yerləşdirin ki, NodeJS-ni tələb edən və istifadə edən üçüncü tərəf uzantıları, heç olmasa, konteynerin içərisində açdığımızdan başqa diskdəki məlumatları oğurlaya bilməsin. Şəxsi sənədlərinizə hostda daxil olun /home konteynerdəki proseslərin uğur qazanması ehtimalı azdır və əgər onlar baş verirsə, onda siz host sistemindəki fayllarda imtiyazlara malik olmalısınız, çünki biz konteyneri işə salırıq. imtiyazsız rejim. Bu məlumatlara əsaslanaraq, genişləndirmələrin daxil edilməsi riskini qiymətləndirə bilərsiniz Yupiter laboratoriyası.

Yaradılmış IPython noutbukları (səhifələr Yupiter laboratoriyası) indi istifadəçinin ev kataloqunda yaradılacaq - /home/jupyter, lakin planlarımız məlumatı (paylaşmanı) host və konteyner arasında bölməkdir, ona görə də konsola qayıdın və dayanın Yupiter laboratoriyası isti düyməni yerinə yetirməklə - CTRL+C və cavab verir y xahişi ilə. Sonra istifadəçinin interaktiv sessiyasını dayandırın jupyter isti düyməni tamamlayır CTRL+D.

Ev sahibi ilə məlumatların paylaşılması ^

Məlumatları host ilə bölüşmək üçün konteynerdə bunu etməyə imkan verən bir cihaz yaratmalı və bunu etmək üçün aşağıdakı düymələri təyin etdiyimiz aşağıdakı əmri işlətməlisiniz:

  • lxc config device add — Komanda cihaz konfiqurasiyasını əlavə edir
  • jupyter — konfiqurasiyanın əlavə olunduğu konteynerin ID-si
  • hostfs — Cihaz ID. İstənilən ad təyin edə bilərsiniz.
  • disk — Cihazın növü göstərilir
  • path — LXD-nin bu cihazı quraşdıracağı konteynerdəki yolu müəyyən edir
  • source — Konteynerlə bölüşmək istədiyiniz mənbəni, hostda qovluğa gedən yolu göstərin. Seçimlərinizə uyğun olaraq yolu təyin edin
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Kataloq üçün /home/dv/projects/ipython-notebooks icazə hazırda UID-ə bərabər olan konteyner istifadəçisinə təyin edilməlidir SubUID + UID, bölməsinə baxın Təhlükəsizlik. Konteyner İmtiyazları məqalədə LXD-nin əsas xüsusiyyətləri - Linux konteyner sistemləri.

Sahibinin konteyner istifadəçisi olacağı hostda icazəni təyin edin jupyter, və dəyişən $USER host istifadəçinizi qrup olaraq təyin edəcək:

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

Salam, Dünya! ^

Əgər siz hələ də konteynırda açıq konsol seansınız varsa Yupiter laboratoriyası, sonra onu yeni açarla yenidən başladın --notebook-dir dəyəri təyin etməklə /mnt/hostfs əvvəlki addımda yaratdığımız cihaz üçün konteynerdəki noutbukların kökünə gedən yol kimi:

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

Sonra səhifəyə keçin http://10.0.5.5:8888 və aşağıdakı şəkildə göstərildiyi kimi səhifədəki düyməni sıxaraq ilk noutbukunuzu yaradın:

Jupyter LXD Orbitinə buraxılır

Sonra səhifədəki sahəyə klassiki göstərəcək Python kodunu daxil edin Hello World!. Daxil etməyi bitirdikdən sonra basın CTRL+ENTER və ya JupyterLab-ın bunu etməsi üçün yuxarıdakı alətlər panelindəki "oyun" düyməsi:

Jupyter LXD Orbitinə buraxılır

Bu nöqtədə, demək olar ki, hər şey istifadəyə hazırdır, lakin Python-un standart imkanlarını əhəmiyyətli dərəcədə genişləndirə bilən əlavə Python modullarını (tam hüquqlu proqramlar) quraşdırmasaq, bu maraqsız olacaq. Yupiter laboratoriyası, ona görə də davam edək :)

PS Maraqlısı odur ki, köhnə tətbiq Yupiter kod adı altında Jupyter noutbuku getməmişdir və paralel olaraq mövcuddur Yupiter laboratoriyası. Köhnə versiyaya keçmək üçün ünvana şəkilçi əlavə etməklə keçidi izləyin/tree, yeni varianta keçid isə şəkilçi ilə həyata keçirilir /lab, lakin müəyyən edilməli deyil:

Python-un imkanlarının genişləndirilməsi ^

Bu bölmədə, kimi güclü Python dil modullarını quraşdıracağıq saysız, Pandas, matplotlib, IPyVidjetləri nəticələri noutbuklara inteqrasiya olunur Yupiter laboratoriyası.

Siyahıda göstərilən Python modullarını paket meneceri vasitəsilə quraşdırmadan əvvəl pip əvvəlcə Alpine Linux-da sistem asılılıqlarını həll etməliyik:

  • g++ — Modulların tərtibi üçün lazımdır, çünki onların bəziləri dildə həyata keçirilir C + + və ikili modullar kimi iş vaxtında Python-a qoşulun
  • freetype-dev - Python modulundan asılılıq matplotlib

Asılılıqların quraşdırılması:

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

Bir problem var: Alpine Linux paylanmasının hazırkı vəziyyətində NumPy-nin yeni versiyasını tərtib etmək mümkün olmayacaq; mənim həll edə bilmədiyim bir kompilyasiya xətası görünəcək:

ERROR: PEP 517 istifadə edən və birbaşa quraşdırıla bilməyən numpy üçün təkərlər tikilə bilmədi

Buna görə də, bu modulu artıq tərtib edilmiş versiyanı paylayan, lakin hazırda saytda mövcud olandan bir qədər köhnə olan sistem paketi kimi quraşdıracağıq:

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

Sonra, paket meneceri vasitəsilə Python modullarını quraşdırın pip. Zəhmət olmasa səbirli olun, çünki bəzi modullar tərtib olunacaq və bir neçə dəqiqə çəkə bilər. Mənim maşınımda tərtib ~15 dəqiqə çəkdi:

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

Quraşdırma önbelleğinin təmizlənməsi:

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

JupyterLab-da modulların sınaqdan keçirilməsi ^

Əgər qaçırsınızsa Yupiter laboratoriyası, onu yenidən başladın ki, yeni quraşdırılmış modullar aktiv olsun. Bunu etmək üçün konsol seansında klikləyin CTRL+C Harada işlədirsən və daxil ol y sorğunu dayandırmaq və sonra yenidən başlamaq üçün Yupiter laboratoriyası əmri təkrar-təkrar daxil etməmək üçün klaviaturada yuxarı oxu sıxaraq Enter başlamaq üçün:

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

Səhifəyə keçin http://10.0.5.5:8888/lab və ya brauzerinizdə səhifəni yeniləyin və sonra yeni notebook xanasına aşağıdakı kodu daxil edin:

%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

Aşağıdakı şəkildəki kimi bir nəticə əldə etməlisiniz, harada IPyVidjetləri səhifədə mənbə kodu ilə interaktiv əlaqədə olan UI elementi yaradır və həmçinin matplotlib kodun nəticəsini funksiya qrafiki kimi şəkil şəklində göstərir:

Jupyter LXD Orbitinə buraxılır

Çoxlu nümunələr IPyVidjetləri dərsliklərdə tapa bilərsiniz burada

Başqa? ^

Qalıb məqalənin sonuna çatsanız yaxşı. Məqalənin sonunda quraşdırılacaq hazır ssenarini bilərəkdən yerləşdirmədim Yupiter laboratoriyası işçiləri həvəsləndirmək üçün "bir kliklə" :) Ancaq bunu özünüz edə bilərsiniz, çünki əmrləri bir Bash skriptində topladığınız üçün necə edəcəyinizi artıq bilirsiniz :)

Siz də edə bilərsiniz:

  • Konteyner üçün sadə bir şəkildə yazaraq IP ünvanı əvəzinə şəbəkə adını təyin edin /etc/hosts və ünvanı brauzerdə yazın http://jupyter.local:8888
  • Konteyner üçün resurs limiti ilə oynayın, bunun üçün bölməni oxuyun əsas LXD imkanları və ya LXD developer saytında daha çox məlumat əldə edin.
  • Mövzunu dəyişdirin:

Jupyter LXD Orbitinə buraxılır

Və daha çoxunu edə bilərsiniz! Hamısı budur. Sənə uğurlar arzu edirəm!

YENİLƏNİB: 15.04.2020/18/30 XNUMX:XNUMX - “Salam, Dünya!” Bölməsindəki səhvlər düzəldildi.
YENİLƏMƏ: 16.04.2020/10/00 XNUMX:XNUMX — Uzatma menecerinin aktivləşdirilməsinin təsvirində düzəliş edilmiş və əlavə edilmiş mətn Yupiter laboratoriyası
YENİLƏNİB: 16.04.2020/10/40 XNUMX:XNUMX — Mətndə aşkar edilmiş səhvlər düzəldildi və “Əsas proqram təminatının quraşdırılması və sistemin qurulması” bölməsi yaxşılığa doğru bir qədər dəyişdirildi.

Mənbə: www.habr.com

Добавить комментарий