Түбірлік артықшылықтармен іске қосылуы керек кодта қате болған жағдайда базалық жүйе туралы алаңдамау және бәрін бұзбау үшін Linux жүйесінде кодпен немесе жүйелік утилиталармен тәжірибе жасауға тура келді ме?
Бірақ бір машинада әртүрлі микросервистердің тұтас кластерін сынау немесе іске қосу керек делік делік? Жүз немесе мың ба?
Гипервизор басқаратын виртуалды машиналармен мұндай мәселелер шешіледі және шешіледі, бірақ қанша тұрады? Мысалы, Alpine Linux дистрибутивіне негізделген LXD ішіндегі контейнер ғана тұтынады 7.60MB
ЖЖҚ және іске қосқаннан кейін түбірлік бөлімнің алатын орны 9.5MB
! Сізге бұл қалай ұнады, Илон Маск? Мен тексеруді ұсынамын LXD негізгі мүмкіндіктері - Linux жүйесіндегі контейнерлік жүйе
LXD контейнерлерінің не екені жалпы түсінікті болғаннан кейін, ары қарай ойланып көрейік, егер сіз хост кодын қауіпсіз іске қосатын, графиктер жасай алатын, UI-виджеттерін кодпен динамикалық (интерактивті) байланыстыратын комбайн платформасы болса ше? кодты blackjack... пішімдеу арқылы мәтінмен толықтырыңыз? Интерактивті блогтың қандай да бір түрі? Уау... мен оны қалаймын! Қалаймын! 🙂
Біз контейнерде ұшырылатын мысықтың астына қараңыз юпитер зертханасы - ескірген Jupyter Notebook орнына пайдаланушы интерфейсінің келесі буыны, сонымен қатар біз Python модульдерін орнатамыз, мысалы сансыз, Панда, matplotlib, IPyВиджеттері бұл жоғарыда аталғандардың барлығын орындауға және барлығын арнайы файлда - IPython ноутбугында сақтауға мүмкіндік береді.
Навигация
- Орбиталық ұшып шығу жоспары
- Негізгі жүйені орнату және конфигурациялау
- Негізгі бағдарламалық құралды орнату және жүйені орнату
- JupyterLab орнату және конфигурациялау
- Хостпен деректерді ортақ пайдалану
- Сәлем Әлем!
- Python мүмкіндіктерін кеңейту
- JupyterLab жүйесінде тестілеу модульдері
- Тағы да не?
Орбиталық ұшып шығу жоспары ^
Жоғарыдағы схеманы жүзеге асыруды жеңілдету үшін қысқаша іс-қимыл жоспарын көрсетейік:
- Бөлу жинағы негізінде контейнерді орнатып, іске қосайық 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 әзірлеу жауапты емес:
Дегенмен, біз толығымен оқшаулап жатырмыз юпитер зертханасы және оны контейнерге орналастырыңыз, сонда 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 және төмендегі суретте көрсетілгендей беттегі түймені басу арқылы бірінші ноутбукты жасаңыз:
Содан кейін беттегі өріске классиканы көрсететін Python кодын енгізіңіз Hello World!
. Енгізуді аяқтаған кезде түймесін басыңыз CTRL+ENTER
немесе JupyterLab мұны істеуі үшін жоғарғы жағындағы құралдар тақтасындағы «ойнату» түймесін басыңыз:
Қазіргі уақытта барлығы дерлік пайдалануға дайын, бірақ Python стандартты мүмкіндіктерін айтарлықтай кеңейте алатын Python қосымша модульдерін (толық қосымшалар) орнатпасақ, бұл қызық емес болады. юпитер зертханасы, сондықтан әрі қарай жүрейік :)
PS Бір қызығы, ескі іске асыру Юпитер кодтық атаумен Jupyter Notebook жойылған жоқ және ол параллельде бар юпитер зертханасы. Ескі нұсқаға ауысу үшін мекенжайға жұрнақты қосатын сілтемені орындаңыз/tree
, ал жаңа нұсқаға көшу жұрнақ арқылы жүзеге асады /lab
, бірақ оны көрсету қажет емес:
- Jupyter дәптері - http://10.0.5.5:8888/tree
- Jupyter зертханасы - http://10.0.5.5:8888/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 кодтың нәтижесін функция графигі ретінде сурет түрінде көрсетеді:
Көптеген мысалдар IPyВиджеттері оны оқулықтардан таба аласыз осында
Тағы да не? ^
Егер сіз қалып, мақаланың соңына жетсеңіз, жарайсың. Мақаланың соңына орнатылатын дайын сценарийді әдейі орналастырмадым юпитер зертханасы жұмысшыларды ынталандыру үшін «бір рет басу» арқылы :) Бірақ сіз мұны өзіңіз жасай аласыз, өйткені сіз командаларды бір Bash сценарийіне жинап, қалай жасау керектігін білесіз :)
Сіз сондай-ақ:
- IP мекенжайының орнына контейнерге желі атауын оны қарапайым түрде жазу арқылы орнатыңыз
/etc/hosts
және браузерде мекенжайды теріңіз http://jupyter.local:8888 - Контейнердің ресурс шектеуімен ойнаңыз, ол үшін тарауды оқыңыз негізгі LXD мүмкіндіктері немесе LXD әзірлеушісінің сайтында қосымша ақпаратты алыңыз.
- Тақырыпты өзгерту:
Және тағы да көп нәрсені жасай аласыз! Бар болғаны. Сізге сәттілік тілеймін!
ЖАҢАРТУ: 15.04.2020 18:30 - «Сәлем, әлем!» тарауындағы қателер түзетілді.
ЖАҢАРТУ: 16.04.2020 10:00 — Кеңейтім менеджерін белсендіру сипаттамасына түзетілген және қосылған мәтін юпитер зертханасы
ЖАҢАЛЫҚ: 16.04.2020 10:40 — Мәтінде табылған қателер түзетілді және «Негізгі бағдарламалық құралды орнату және жүйені орнату» тарауын жақсарту үшін сәл өзгертілді.
Ақпарат көзі: www.habr.com