Jupyter LXD орбитасына шығарылуда

Түбірлік артықшылықтармен іске қосылуы керек кодта қате болған жағдайда базалық жүйе туралы алаңдамау және бәрін бұзбау үшін Linux жүйесінде кодпен немесе жүйелік утилиталармен тәжірибе жасауға тура келді ме?

Бірақ бір машинада әртүрлі микросервистердің тұтас кластерін сынау немесе іске қосу керек делік делік? Жүз немесе мың ба?

Гипервизор басқаратын виртуалды машиналармен мұндай мәселелер шешіледі және шешіледі, бірақ қанша тұрады? Мысалы, Alpine Linux дистрибутивіне негізделген LXD ішіндегі контейнер ғана тұтынады 7.60MB ЖЖҚ және іске қосқаннан кейін түбірлік бөлімнің алатын орны 9.5MB! Сізге бұл қалай ұнады, Илон Маск? Мен тексеруді ұсынамын LXD негізгі мүмкіндіктері - Linux жүйесіндегі контейнерлік жүйе

LXD контейнерлерінің не екені жалпы түсінікті болғаннан кейін, ары қарай ойланып көрейік, егер сіз хост кодын қауіпсіз іске қосатын, графиктер жасай алатын, UI-виджеттерін кодпен динамикалық (интерактивті) байланыстыратын комбайн платформасы болса ше? кодты blackjack... пішімдеу арқылы мәтінмен толықтырыңыз? Интерактивті блогтың қандай да бір түрі? Уау... мен оны қалаймын! Қалаймын! 🙂

Біз контейнерде ұшырылатын мысықтың астына қараңыз юпитер зертханасы - ескірген Jupyter Notebook орнына пайдаланушы интерфейсінің келесі буыны, сонымен қатар біз Python модульдерін орнатамыз, мысалы сансыз, Панда, matplotlib, IPyВиджеттері бұл жоғарыда аталғандардың барлығын орындауға және барлығын арнайы файлда - IPython ноутбугында сақтауға мүмкіндік береді.

Jupyter LXD орбитасына шығарылуда

Орбиталық ұшып шығу жоспары ^

Jupyter LXD орбитасына шығарылуда

Жоғарыдағы схеманы жүзеге асыруды жеңілдету үшін қысқаша іс-қимыл жоспарын көрсетейік:

  • Бөлу жинағы негізінде контейнерді орнатып, іске қосайық Alpine Linux. Біз бұл таратуды қолданамыз, өйткені ол минимализмге бағытталған және оған тек ең қажетті бағдарламалық жасақтаманы орнатады, артық ештеңе жоқ.
  • Контейнерге қосымша виртуалды диск қосып, оған ат берейік - hostfs және оны түбірлік файлдық жүйеге орнатыңыз. Бұл диск хосттағы файлдарды контейнер ішіндегі берілген каталогтан пайдалануға мүмкіндік береді. Осылайша, біздің деректер контейнерден тәуелсіз болады. Контейнер жойылса, деректер хостта қалады. Сондай-ақ, бұл схема контейнерді таратудың стандартты желілік механизмдерін пайдаланбай көптеген контейнерлер арасында бірдей деректерді ортақ пайдалану үшін пайдалы.
  • Bash, sudo, қажетті кітапханаларды орнатып, жүйе пайдаланушысын қосып, конфигурациялаймыз
  • Python, модульдерді орнатып, олар үшін екілік тәуелділіктерді құрастырайық
  • Орнатып, іске қосайық юпитер зертханасы, сыртқы түрін реттеңіз, оған кеңейтімдерді орнатыңыз.

Бұл мақалада біз контейнерді іске қосудан бастаймыз, біз LXD орнатуды және конфигурациялауды қарастырмаймыз, мұның бәрін басқа мақаладан таба аласыз - LXD - Linux контейнерлік жүйелерінің негізгі мүмкіндіктері.

Негізгі жүйені орнату және конфигурациялау ^

Біз суретті көрсететін пәрменмен контейнер жасаймыз - alpine3, контейнер идентификаторы - jupyterlab және қажет болған жағдайда конфигурация профильдері:

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

Мұнда мен конфигурация профилін пайдаланамын hddroot түбірлік бөлімі бар контейнер жасауды көрсетеді Бассейн физикалық қатты дискіде орналасқан:

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

Бұл маған SSD дискінің ресурстарын үнемдей отырып, HDD дискісінде контейнерлермен тәжірибе жасауға мүмкіндік береді, ол менің жүйемде де бар 🙂 ол үшін мен жеке конфигурация профилін жасадым. ssdroot.

Контейнер жасалғаннан кейін ол күйде болады STOPPED, сондықтан оны ондағы init жүйесін іске қосу арқылы бастау керек:

lxc start jupyterlab

Кілтті пайдаланып LXD-де контейнерлер тізімін көрсетейік -c бұл қайсысын көрсетеді columns дисплейі:

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

Контейнерді жасау кезінде IP мекенжайы кездейсоқ таңдалды, өйткені біз конфигурация профилін пайдаландық default мақалада бұрын конфигурацияланған LXD - Linux контейнерлік жүйелерінің негізгі мүмкіндіктері.

Біз бұл IP мекенжайын қазіргі конфигурациядағыдай конфигурация профилі деңгейінде емес, контейнер деңгейінде желі интерфейсін жасау арқылы есте қалатын мекенжайға өзгертеміз. Мұны істеудің қажеті жоқ, оны өткізіп жіберуге болады.

Желі интерфейсін құру eth0 біз коммутаторға байланыстырамыз (желі көпірі) lxdbr0 онда біз алдыңғы мақалаға сәйкес NAT қостық және контейнер енді Интернетке қол жеткізе алады, сонымен қатар интерфейске статикалық IP мекенжайын тағайындаймыз - 10.0.5.5:

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

Құрылғыны қосқаннан кейін контейнерді қайта жүктеу керек:

lxc restart jupyterlab

Контейнердің күйін тексеру:

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

Негізгі бағдарламалық құралды орнату және жүйені орнату ^

Контейнерді басқару үшін келесі бағдарламалық құралды орнату қажет:

пакет
сипаттамасы

bash
GNU Bourne Again қабығы

bash-аяқтау
Bash қабығы үшін бағдарламаланатын аяқтау

sudo
Кейбір пайдаланушыларға кейбір пәрмендерді түбір ретінде іске қосу мүмкіндігін беріңіз

көлеңке
Көлеңкелі файлдар мен PAM қолдауы бар құпия сөз және есептік жазбаны басқару құралдары жиынтығы

тздата
Уақыт белдеуі және жазғы уақыт деректерінің көздері

Нано
Pico редакторының жақсартулары бар клон

Оған қоса, келесі бумаларды орнату арқылы жүйенің басқарушы беттерінде қолдауды орнатуға болады − man man-pages mdocml-apropos less

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

Біз пайдаланған командалар мен пернелерді қарастырайық:

  • lxc — LXD клиентіне қоңырау шалыңыз
  • exec - Контейнердегі пәрменді іске қосатын LXD клиент әдісі
  • jupyterlab — Контейнер идентификаторы
  • -- - Келесі кілттерді кілттер ретінде түсіндірмеуді көрсететін арнайы кілт lxc және жолдың қалған бөлігін контейнерге өткізіңіз
  • apk — Alpine Linux тарату пакетінің менеджері
  • add — Пәрменнен кейін көрсетілген бумаларды орнататын бума менеджері әдісі

Әрі қарай, біз жүйеде уақыт белдеуін орнатамыз Europe/Moscow:

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

Уақыт белдеуін орнатқаннан кейін бума tzdata жүйеде енді қажет емес, ол орын алады, сондықтан оны жойайық:

lxc exec jupyterlab -- apk del tzdata

Уақыт белдеуін тексеру:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

Контейнердегі жаңа пайдаланушылар үшін Bash орнатуға көп уақыт жұмсамау үшін келесі қадамдарда біз хост жүйесінен оған дайын skel файлдарын көшіреміз. Бұл контейнердегі Bash-ті интерактивті түрде жақсартуға мүмкіндік береді. Менің хост жүйесі - Manjaro Linux және көшірілетін файлдар /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors негізінен олар Alpine Linux үшін жарамды және маңызды проблемаларды тудырмайды, бірақ сізде басқа тарату болуы мүмкін және контейнерде Bash іске қосу кезінде қате бар-жоғын дербес анықтау керек.

Skel файлдарын контейнерге көшіріңіз. Кілт --create-dirs егер олар жоқ болса, қажетті каталогтарды жасайды:

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

Бар түбірлік пайдаланушы үшін контейнерге жаңа ғана көшірілген skel файлдарын үй каталогына көшіріңіз:

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 пайдаланушылар үшін жүйелік қабықты орнатады /bin/sh, біз оны ауыстырамыз root Bash пайдаланушысы:

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

сол root пайдаланушы құпия сөзсіз болған жоқ, ол құпия сөзді орнатуы керек. Келесі пәрмен оған жаңа кездейсоқ құпия сөзді жасайды және орнатады, оны орындағаннан кейін консоль экранында көресіз:

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

Сондай-ақ, жаңа жүйе пайдаланушысын жасайық - jupyter ол үшін кейінірек конфигурациялаймыз юпитер зертханасы:

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

Ол үшін пароль жасап, орнатайық:

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

Содан кейін біз екі команданы орындаймыз, біріншісі жүйелік топты жасайды sudo, ал екіншісі оған пайдаланушы қосады jupyter:

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

Пайдаланушы қандай топтарға жататынын көрейік jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

Бәрі жақсы, әрі қарай жүрейік.

Топ мүшелері болып табылатын барлық пайдаланушыларға рұқсат беріңіз sudo пәрменін пайдаланыңыз sudo. Ол үшін келесі сценарийді іске қосыңыз, мұнда sed конфигурация файлындағы параметр жолына түсініктеме береді /etc/sudoers:

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

JupyterLab орнату және конфигурациялау ^

юпитер зертханасы Python қолданбасы, сондықтан біз алдымен осы аудармашыны орнатуымыз керек. Сондай-ақ, юпитер зертханасы біз Python пакет менеджері арқылы орнатамыз pip, және жүйе емес, себебі ол жүйелік репозиторийде ескірген болуы мүмкін, сондықтан келесі пакеттерді орнату арқылы оған тәуелділіктерді қолмен шешуге тура келеді - python3 python3-dev gcc libc-dev zeromq-dev:

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

Python модульдері мен пакет менеджерін жаңартайық pip ағымдағы нұсқаға:

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

Орнату юпитер зертханасы пакет менеджері арқылы pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Кеңейтімдер болғандықтан юпитер зертханасы эксперименталды және jupyterlab бумасымен бірге ресми түрде жеткізілмейді, сондықтан біз оны қолмен орнатып, конфигурациялауымыз керек.

NodeJS және ол үшін пакет менеджерін орнатайық - NPM, өйткені юпитер зертханасы оларды кеңейтімдері үшін пайдаланады:

lxc exec jupyterlab -- apk add nodejs npm

үшін кеңейтімдерге юпитер зертханасы біз орнататын жұмыс істеді, олар пайдаланушы каталогында орнатылуы керек, өйткені қолданба пайдаланушыдан іске қосылады jupyter. Мәселе мынада, іске қосу пәрменінде каталогқа жіберуге болатын параметр жоқ; қолданба тек ортаның айнымалы мәнін қабылдайды, сондықтан біз оны анықтауымыз керек. Ол үшін айнымалыны экспорттау командасын жазамыз JUPYTERLAB_DIR пайдаланушы ортасында jupyter, файлға .bashrcол пайдаланушы жүйеге кірген сайын орындалады:

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

Келесі пәрмен арнайы кеңейтімді - кеңейтім менеджерін орнатады юпитер зертханасы:

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

Енді бірінші ұшыруға барлығы дайын юпитер зертханасы, бірақ біз әлі де бірнеше пайдалы кеңейтімдерді орната аламыз:

  • toc — Мазмұны, мақала/дәптердегі тақырыптар тізімін жасайды
  • jupyterlab-horizon-theme — UI тақырыбы
  • jupyterlab_neon_theme — UI тақырыбы
  • jupyterlab-ubu-theme - Тағы бір автордан тақырып бұл мақала :) Бірақ бұл жағдайда GitHub репозиторийінен орнату көрсетіледі

Сонымен, осы кеңейтімдерді орнату үшін келесі пәрмендерді кезекпен орындаңыз:

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"

Кеңейтімдерді орнатқаннан кейін біз оларды құрастыруымыз керек, өйткені бұрын орнату кезінде біз кілтті көрсеткен болатынбыз --no-build уақытты үнемдеу үшін. Енді біз оларды бір уақытта құрастыру арқылы айтарлықтай жылдамдаймыз:

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

Енді бірінші рет іске қосу үшін келесі екі пәрменді орындаңыз юпитер зертханасы. Оны бір пәрменмен іске қосуға болатын еді, бірақ бұл жағдайда есте сақтау қиын іске қосу пәрмені командалар жеткілікті болған хостта емес, контейнерде bash арқылы есте қалады. оларды тарихқа жазу үшін :)

Контейнерге пайдаланушы ретінде кіріңіз jupyter:

lxc exec jupyterlab -- su -l jupyter

Әрі қарай, жүгіріңіз юпитер зертханасы пернелермен және параметрлермен көрсетілгендей:

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

Веб-шолғыштағы мекенжайға өтіңіз http://10.0.5.5:8888 және ашылған бетте енгізіңіз белгі консольде көретін қол жеткізу. Оны бетке көшіріп, қойыңыз, содан кейін басыңыз Кіру. Жүйеге кіргеннен кейін төмендегі суретте көрсетілгендей сол жақтағы кеңейтімдер мәзіріне өтіңіз, онда кеңейтім менеджерін іске қосқан кезде пәрмен берілген үшінші тараптардың кеңейтімдерін орнату арқылы қауіпсіздік тәуекелін қабылдау сұралады. JupyterLab әзірлеу жауапты емес:

Jupyter LXD орбитасына шығарылуда

Дегенмен, біз толығымен оқшаулап жатырмыз юпитер зертханасы және оны контейнерге орналастырыңыз, сонда NodeJS-ті қажет ететін және пайдаланатын үшінші тарап кеңейтімдері, ең болмағанда, біз ашатын контейнерден басқа дискідегі деректерді ұрлай алмайды. Хосттағы жеке құжаттарыңызға кіріңіз /home контейнердегі процестердің сәтті болуы екіталай және олар орындалса, хост жүйесіндегі файлдарға артықшылықтар болуы керек, өйткені біз контейнерді іске қосамыз. артықшылықсыз режим. Осы ақпарат негізінде кеңейтімдерді қосу қаупін бағалай аласыз юпитер зертханасы.

IPython жазу кітапшалары жасалды (беттер юпитер зертханасы) енді пайдаланушының үй каталогында жасалады - /home/jupyter, бірақ біздің жоспарларымыз деректерді (бөлісуді) хост пен контейнер арасында бөлу, сондықтан консольге оралып, тоқтаңыз. юпитер зертханасы жылдам пернені орындау арқылы - CTRL+C және жауап беру y сұрауы бойынша. Содан кейін пайдаланушының интерактивті сеансын тоқтатыңыз jupyter жылдам пернені аяқтау CTRL+D.

Хостпен деректерді ортақ пайдалану ^

Хостпен деректерді ортақ пайдалану үшін контейнерде мұны істеуге мүмкіндік беретін құрылғыны жасау керек және мұны істеу үшін келесі пернелерді көрсететін келесі пәрменді іске қосыңыз:

  • lxc config device add — Пәрмен құрылғы конфигурациясын қосады
  • jupyter — Конфигурация қосылған контейнердің идентификаторы
  • hostfs — Құрылғы идентификаторы. Кез келген атауды орнатуға болады.
  • disk — Құрылғының түрі көрсетілген
  • path — LXD осы құрылғыны бекітетін контейнердегі жолды көрсетеді
  • source — Контейнермен бөліскіңіз келетін хосттағы дереккөзді, каталогқа жолды көрсетіңіз. Қалауларыңызға сәйкес жолды көрсетіңіз
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Каталог үшін /home/dv/projects/ipython-notebooks рұқсат қазіргі уақытта тең UID коды бар контейнер пайдаланушысына орнатылуы керек SubUID + UID, тарауын қараңыз Қауіпсіздік. Контейнерлік артықшылықтар мақалада LXD - Linux контейнерлік жүйелерінің негізгі мүмкіндіктері.

Иесі контейнер пайдаланушысы болатын хостқа рұқсатты орнатыңыз jupyter, және айнымалы $USER хост пайдаланушыңызды топ ретінде көрсетеді:

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

Сәлем Әлем! ^

Консоль сеансы әлі де болса контейнерде ашылады юпитер зертханасы, содан кейін оны жаңа кілтпен қайта іске қосыңыз --notebook-dir мәнін орнату арқылы /mnt/hostfs алдыңғы қадамда жасаған құрылғыға арналған контейнердегі ноутбуктердің түбіріне жол ретінде:

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

Содан кейін бетке өтіңіз http://10.0.5.5:8888 және төмендегі суретте көрсетілгендей беттегі түймені басу арқылы бірінші ноутбукты жасаңыз:

Jupyter LXD орбитасына шығарылуда

Содан кейін беттегі өріске классиканы көрсететін Python кодын енгізіңіз Hello World!. Енгізуді аяқтаған кезде түймесін басыңыз CTRL+ENTER немесе JupyterLab мұны істеуі үшін жоғарғы жағындағы құралдар тақтасындағы «ойнату» түймесін басыңыз:

Jupyter LXD орбитасына шығарылуда

Қазіргі уақытта барлығы дерлік пайдалануға дайын, бірақ Python стандартты мүмкіндіктерін айтарлықтай кеңейте алатын Python қосымша модульдерін (толық қосымшалар) орнатпасақ, бұл қызық емес болады. юпитер зертханасы, сондықтан әрі қарай жүрейік :)

PS Бір қызығы, ескі іске асыру Юпитер кодтық атаумен Jupyter Notebook жойылған жоқ және ол параллельде бар юпитер зертханасы. Ескі нұсқаға ауысу үшін мекенжайға жұрнақты қосатын сілтемені орындаңыз/tree, ал жаңа нұсқаға көшу жұрнақ арқылы жүзеге асады /lab, бірақ оны көрсету қажет емес:

Python мүмкіндіктерін кеңейту ^

Бұл бөлімде біз Python тілінің қуатты модульдерін орнатамыз сансыз, Панда, matplotlib, IPyВиджеттері оның нәтижелері ноутбуктерге біріктірілген юпитер зертханасы.

Пакет менеджері арқылы тізімделген Python модульдерін орнатпас бұрын pip біз алдымен Alpine Linux жүйесіндегі жүйелік тәуелділіктерді шешуіміз керек:

  • g++ — Модульдерді құрастыру үшін қажет, өйткені олардың кейбіреулері тілде жүзеге асырылады C ++ және екілік модульдер ретінде орындау уақытында Python-ға қосылыңыз
  • freetype-dev - Python модуліне тәуелділік matplotlib

Тәуелділіктерді орнату:

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

Бір мәселе бар: Alpine Linux дистрибутивінің ағымдағы күйінде NumPy жаңа нұсқасын құрастыру мүмкін болмайды; мен шеше алмаған компиляция қатесі пайда болады:

ERROR: PEP 517 қолданатын және тікелей орнатуға болмайтын numpy дөңгелектерін құрастыру мүмкін емес

Сондықтан, біз бұл модульді қазірдің өзінде құрастырылған нұсқаны тарататын жүйелік бума ретінде орнатамыз, бірақ қазіргі уақытта сайтта бардан сәл ескі:

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

Содан кейін пакет менеджері арқылы Python модульдерін орнатыңыз pip. Сабырлы болыңыз, себебі кейбір модульдер құрастырылады және бірнеше минут кетуі мүмкін. Менің құрылғымда компиляция ~ 15 минутқа созылды:

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

Орнату кэштерін тазалау:

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

JupyterLab жүйесінде тестілеу модульдері ^

Егер сіз жүгіріп жүрсеңіз юпитер зертханасы, жаңадан орнатылған модульдер іске қосылуы үшін оны қайта іске қосыңыз. Мұны істеу үшін консоль сеансында түймесін басыңыз CTRL+C ол жұмыс істеп тұрған жерде және кіріңіз y сұрауды тоқтатып, қайта бастау үшін юпитер зертханасы пәрменді қайта-қайта енгізбеу үшін пернетақтадағы жоғары көрсеткіні басу арқылы Enter оны бастау үшін:

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

Бетке өтіңіз http://10.0.5.5:8888/lab немесе браузердегі бетті жаңартыңыз, содан кейін жаңа жазу кітапшасының ұяшығына келесі кодты енгізіңіз:

%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

Төмендегі суреттегідей нәтиже алуыңыз керек, қайда IPyВиджеттері бастапқы кодпен интерактивті әрекеттесетін бетте UI элементін жасайды, сонымен қатар matplotlib кодтың нәтижесін функция графигі ретінде сурет түрінде көрсетеді:

Jupyter LXD орбитасына шығарылуда

Көптеген мысалдар IPyВиджеттері оны оқулықтардан таба аласыз осында

Тағы да не? ^

Егер сіз қалып, мақаланың соңына жетсеңіз, жарайсың. Мақаланың соңына орнатылатын дайын сценарийді әдейі орналастырмадым юпитер зертханасы жұмысшыларды ынталандыру үшін «бір рет басу» арқылы :) Бірақ сіз мұны өзіңіз жасай аласыз, өйткені сіз командаларды бір Bash сценарийіне жинап, қалай жасау керектігін білесіз :)

Сіз сондай-ақ:

  • IP мекенжайының орнына контейнерге желі атауын оны қарапайым түрде жазу арқылы орнатыңыз /etc/hosts және браузерде мекенжайды теріңіз http://jupyter.local:8888
  • Контейнердің ресурс шектеуімен ойнаңыз, ол үшін тарауды оқыңыз негізгі LXD мүмкіндіктері немесе LXD әзірлеушісінің сайтында қосымша ақпаратты алыңыз.
  • Тақырыпты өзгерту:

Jupyter LXD орбитасына шығарылуда

Және тағы да көп нәрсені жасай аласыз! Бар болғаны. Сізге сәттілік тілеймін!

ЖАҢАРТУ: 15.04.2020 18:30 - «Сәлем, әлем!» тарауындағы қателер түзетілді.
ЖАҢАРТУ: 16.04.2020 10:00 — Кеңейтім менеджерін белсендіру сипаттамасына түзетілген және қосылған мәтін юпитер зертханасы
ЖАҢАЛЫҚ: 16.04.2020 10:40 — Мәтінде табылған қателер түзетілді және «Негізгі бағдарламалық құралды орнату және жүйені орнату» тарауын жақсарту үшін сәл өзгертілді.

Ақпарат көзі: www.habr.com

пікір қалдыру