Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Та үндсэн системийн талаар санаа зовохгүй байх, root эрхтэй ажиллах кодонд алдаа гарсан тохиолдолд бүгдийг нураахгүйн тулд Линукс дээрх код эсвэл системийн хэрэгслүүдийг туршиж үзсэн үү?

Гэхдээ та нэг машин дээр янз бүрийн микро үйлчилгээний бүхэл бүтэн кластерыг туршиж үзэх эсвэл ажиллуулах хэрэгтэй гэж хэлье? Зуу эсвэл бүр мянга уу?

Гипервизороор удирддаг виртуал машинуудын хувьд ийм асуудлууд шийдэгдэж болох бөгөөд шийдэгдэх болно, гэхдээ ямар үнээр? Жишээлбэл, Alpine Linux түгээлт дээр суурилсан LXD дахь контейнер нь зөвхөн хэрэглэдэг 7.60MB RAM, мөн эхлүүлсний дараа үндсэн хуваалт хаана байрладаг 9.5MB! Илон Маск, чамд энэ нь хэр таалагдаж байна вэ? Би шалгахыг зөвлөж байна LXD-ийн үндсэн боломжууд - Линукс дахь контейнер систем

LXD савнууд гэж юу болох нь ерөнхийдөө тодорхой болсны дараа цаашаа цаашаа бодоод үзье, хэрэв та хостын кодыг аюулгүй ажиллуулж, график үүсгэж, UI-виджетүүдийг өөрийн кодтой динамик (интерактив) холбох боломжтой ийм комбайн платформ байсан бол яах вэ? кодыг блэк... форматтай текстээр нэмэх үү? Зарим төрлийн интерактив блог уу? Хөөх... Би үүнийг хүсч байна! Хүсч байна! 🙂

Бид саванд хийх муурны доор хараарай бархасбадь лаборатори - хуучирсан Jupyter Notebook-ийн оронд дараагийн үеийн хэрэглэгчийн интерфэйс, мөн бид Python модулиудыг суулгах болно. Тоон, Пандас, Матплотлиб, IPyWidgets Энэ нь дээр дурдсан бүх зүйлийг хийж, бүгдийг нь тусгай файл болох IPython зөөврийн компьютерт хадгалах боломжийг танд олгоно.

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Орбитын хөөрөх төлөвлөгөө ^

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Дээрх схемийг хэрэгжүүлэхэд хялбар болгохын тулд үйл ажиллагааны товч төлөвлөгөөг тоймлоё:

  • Түгээлтийн иж бүрдэл дээр тулгуурлан сав суулгаж ажиллуулъя Уулын Линукс. Бид энэ түгээлтийг ашиглах болно, учир нь энэ нь минимализмд чиглэгдсэн бөгөөд зөвхөн хамгийн хэрэгцээтэй програм хангамжийг суулгаж өгөх болно, илүүдэхгүй.
  • Контейнерт нэмэлт виртуал диск нэмж, түүнд нэр өгье - hostfs мөн үүнийг root файлын системд холбоно уу. Энэ диск нь контейнер доторх өгөгдсөн лавлахаас байгаа файлуудыг хост дээр ашиглах боломжтой болгоно. Тиймээс бидний өгөгдөл нь контейнерээс хамааралгүй байх болно. Хэрэв контейнер устгагдсан бол өгөгдөл нь хост дээр үлдэх болно. Түүнчлэн, энэ схем нь контейнер түгээлтийн стандарт сүлжээний механизмыг ашиглахгүйгээр олон контейнер хооронд ижил өгөгдлийг хуваалцахад хэрэгтэй.
  • Bash, sudo, шаардлагатай сангуудыг суулгаж, системийн хэрэглэгчийг нэмж, тохируулцгаая
  • Python, модулиудыг суулгаж, тэдгээрийн хоёртын хамаарлыг хөрвүүлье
  • Суулгаж ажиллуулцгаая бархасбадь лаборатори, гадаад төрхийг өөрчлөх, түүнд зориулсан өргөтгөлүүдийг суулгах.

Энэ нийтлэлд бид савыг эхлүүлэхээс эхлэх болно, бид LXD суулгах, тохируулах талаар бодохгүй, та энэ бүгдийг өөр нийтлэлээс олж болно - LXD - Линуксийн контейнер системийн үндсэн шинж чанарууд.

Үндсэн системийг суурилуулах, тохируулах ^

Бид дүрсийг зааж өгөх команд бүхий савыг үүсгэдэг - alpine3, савны танигч - jupyterlab шаардлагатай бол тохиргооны профайл:

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

Энд би тохиргооны профайлыг ашиглаж байна hddroot нь үндсэн хуваалт бүхий контейнер үүсгэхийг зааж өгдөг Хадгалах сан физик HDD диск дээр байрладаг:

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 - Линуксийн контейнер системийн үндсэн шинж чанарууд.

Бид одоогийн тохиргоонд байгаа шиг тохиргооны профайлын түвшинд биш харин контейнерийн түвшинд сүлжээний интерфейс үүсгэснээр энэ 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 shell-д зориулсан программчлагдах боломжтой

sudo
Зарим хэрэглэгчдэд зарим тушаалыг root хэлбэрээр ажиллуулах боломжийг олгох

сүүдэр
Сүүдрийн файлууд болон PAM-г дэмждэг нууц үг, дансны удирдлагын хэрэгслийн багц

tzdata
Цагийн бүс, зуны цагийн мэдээллийн эх сурвалж

Нано
Сайжруулалт бүхий Pico засварлагчийн клон

Нэмж дурдахад, та дараах багцуудыг суулгаснаар системийн man-pages-д дэмжлэг суулгах боломжтой man man-pages mdocml-apropos less

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

Бидний ашигласан тушаалууд болон түлхүүрүүдийг харцгаая:

  • lxc — LXD үйлчлүүлэгч рүү залгана уу
  • exec - Контейнер доторх командыг ажиллуулдаг LXD клиентийн арга
  • jupyterlab - Контейнер ID
  • -- - Цаашид түлхүүрүүдийг түлхүүр болгон тайлбарлахгүй байхыг заасан тусгай түлхүүр 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-ийг саванд ажиллуулахад алдаа байгаа эсэхийг бие даан тодорхойлох шаардлагатай.

Скел файлуудыг саванд хуулж ав. Түлхүүр --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

Одоо байгаа root хэрэглэгчийн хувьд чингэлэгт хуулсан 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"

Дараагийн тушаал нь тусгай өргөтгөл суулгах болно - өргөтгөлийн менежер in бархасбадь лаборатори:

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 хөгжүүлэлт хариуцлага хүлээхгүй:

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Гэсэн хэдий ч бид бүхэлд нь тусгаарлаж байна бархасбадь лаборатори NodeJS-г шаарддаг болон ашигладаг гуравдагч этгээдийн өргөтгөлүүд нь бидний нээсэнээс бусад диск дээрх өгөгдлийг ядаж хулгайлж чадахгүй байхаар үүнийг саванд хийнэ. Хост дээрх хувийн бичиг баримтаа аваарай /home Контейнерийн процессууд амжилтанд хүрэх магадлал багатай бөгөөд хэрэв тийм бол бид контейнерыг ажиллуулдаг тул та хост систем дээрх файлууд дээр давуу эрхтэй байх хэрэгтэй. давуу эрхгүй горим. Эдгээр мэдээлэлд үндэслэн та өргөтгөлүүдийг оруулах эрсдэлийг үнэлж болно бархасбадь лаборатори.

IPython дэвтэр үүсгэсэн (хуудсууд бархасбадь лаборатори) нь одоо хэрэглэгчийн гэрийн лавлахад үүсгэгдэх болно - /home/jupyter, гэхдээ бидний төлөвлөгөө бол хост болон контейнерийн хооронд өгөгдлийг (хуваалцах) хуваах тул консол руу буцаж очоод зогсоо. бархасбадь лаборатори халуун товчлуурыг ажиллуулснаар - CTRL+C мөн хариулах y хүсэлтийн дагуу. Дараа нь хэрэглэгчийн интерактив сессийг зогсооно jupyter халуун товчлуурыг бөглөж байна CTRL+D.

Хосттой өгөгдөл хуваалцах ^

Хосттой өгөгдөл хуваалцахын тулд та үүнийг хийх боломжтой төхөөрөмжийг контейнерт үүсгэх хэрэгтэй бөгөөд үүнийг хийхийн тулд бид дараах товчлууруудыг зааж өгсөн дараах тушаалыг ажиллуулна уу.

  • lxc config device add — Тушаал нь төхөөрөмжийн тохиргоог нэмнэ
  • jupyter — Тохиргоог нэмж оруулсан контейнерийн ID
  • hostfs - Төхөөрөмжийн ID. Та ямар ч нэрийг тохируулж болно.
  • 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 - Линуксийн контейнер системийн үндсэн шинж чанарууд.

Эзэмшигч нь контейнерын хэрэглэгч байх хост дээр зөвшөөрлийг тохируулна уу 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 Дараах зурагт үзүүлсэн шиг хуудасны товчлуур дээр дарж анхны зөөврийн компьютерээ үүсгэнэ үү.

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Дараа нь хуудасны талбарт сонгодог дүрсийг харуулах Python кодыг оруулна уу Hello World!. Оруулж дууссаны дараа дарна уу CTRL+ENTER эсвэл JupyterLab-д үүнийг хийхийн тулд дээд талын хэрэгслийн самбар дээрх "тоглох" товчийг дарна уу:

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Энэ үед бараг бүх зүйл ашиглахад бэлэн байгаа боловч Python-ийн стандарт чадамжийг мэдэгдэхүйц өргөжүүлэх нэмэлт Python модулиудыг (бүрэн хэмжээний програмууд) суулгахгүй бол сонирхолгүй байх болно. бархасбадь лабораториТиймээс цаашаа явцгаая :)

Жич Сонирхолтой зүйл бол хуучин хэрэгжилт юм Жуптер кодын нэрээр Jupyter тэмдэглэлийн дэвтэр арилаагүй бөгөөд зэрэгцээ оршиж байна бархасбадь лаборатори. Хуучин хувилбар руу шилжихийн тулд хаяг дахь дагавар нэмэх холбоосыг дагана уу/tree, мөн шинэ хувилбар руу шилжих нь дагавараар хийгддэг /lab, гэхдээ үүнийг зааж өгөх шаардлагагүй:

Python-ийн чадавхийг өргөжүүлэх ^

Энэ хэсэгт бид Python хэлний хүчирхэг модулиудыг суулгах болно Тоон, Пандас, Матплотлиб, IPyWidgets Үүний үр дүнг зөөврийн компьютерт нэгтгэсэн бархасбадь лаборатори.

Жагсаалтад орсон Python модулиудыг багц менежерээр дамжуулан суулгахын өмнө pip Бид эхлээд Alpine Linux дээрх системийн хамаарлыг шийдэх ёстой.

  • g++ - Модулиудыг эмхэтгэхэд шаардлагатай, учир нь тэдгээрийн зарим нь хэл дээр хэрэгждэг C ++ болон Python-д ажиллах үед хоёртын модулиар холбогдоно
  • freetype-dev - Python модулийн хамаарал Матплотлиб

Хамаарал суулгах:

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

Та доорх зураг дээрх шиг үр дүнг авах ёстой, хаана IPyWidgets хуудас дээр эх кодтой харилцан үйлчилдэг UI элементийг үүсгэдэг, мөн түүнчлэн Матплотлиб кодын үр дүнг функцийн график хэлбэрээр зураг хэлбэрээр харуулна.

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Олон жишээ IPyWidgets Та үүнийг хичээлээс олж болно энд

Өөр юу гэж? ^

Хэрэв та үлдэж, нийтлэлийн төгсгөлд хүрсэн бол сайн байна. Суулгах нийтлэлийн төгсгөлд би зориуд бэлэн скрипт оруулаагүй бархасбадь лаборатори Ажилчдыг урамшуулахын тулд "нэг товшилтоор" :) Гэхдээ та командуудыг нэг Bash скрипт болгон цуглуулсан тул үүнийг өөрөө хийж болно :)

Та мөн:

  • Сүлжээний нэрийг IP хаягийн оронд энгийн хэлбэрээр бичнэ үү /etc/hosts болон хөтөч дээр хаягаа бичнэ үү http://jupyter.local:8888
  • Контейнерийн нөөцийн хязгаартай тоглож, энэ бүлгийг уншина уу үндсэн LXD боломжууд эсвэл LXD хөгжүүлэгчийн сайтаас нэмэлт мэдээлэл аваарай.
  • Сэдвийг өөрчлөх:

Бархасбадь гаригийг LXD тойрог замд хөөргөж байна

Мөн та илүү их зүйлийг хийж чадна! Тэгээд л болоо. Чамд амжилт хүсье!

ШИНЭЧЛЭГДСЭН: 15.04.2020 оны 18-р сарын 30-ны XNUMX:XNUMX - “Сайн уу, Дэлхий!” бүлэгт гарсан алдааг зассан.
ШИНЭЧЛЭЛТ: 16.04.2020 оны 10-р сарын 00-ны XNUMX:XNUMX - Өргөтгөл менежерийн идэвхжүүлэлтийн тайлбарт залруулж, текст нэмсэн. бархасбадь лаборатори
ШИНЭЧЛЭГДЭХҮҮН: 16.04.2020 10:40 — Текст дэх алдааг засч, "Үндсэн программ хангамжийг суулгах, системийг тохируулах" бүлгийг илүү сайн болгох үүднээс бага зэрэг өөрчилсөн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх