ජුපිටර් LXD කක්ෂයට දියත් කිරීම

Root වරප්‍රසාද සමඟ ක්‍රියාත්මක විය යුතු කේතයේ දෝෂයක් ඇති වුවහොත් යටින් පවතින පද්ධතිය ගැන කරදර නොවී සියල්ල ඉරා දැමීමෙන් තොරව ඔබට කවදා හෝ Linux හි කේත හෝ පද්ධති උපයෝගිතා අත්හදා බැලීමට සිදු වී තිබේද?

නමුත් ඔබට එක් යන්ත්‍රයක විවිධ ක්ෂුද්‍ර සේවා පොකුරක් පරීක්ෂා කිරීමට හෝ ක්‍රියාත්මක කිරීමට අවශ්‍ය යැයි සිතමු? සියයක් හෝ දහසක් පවා?

හයිපර්වයිසර් විසින් කළමනාකරණය කරන ලද අතථ්‍ය යන්ත්‍ර සමඟ, එවැනි ගැටළු විසඳිය හැකි සහ විසඳනු ඇත, නමුත් කුමන මිලකටද? උදාහරණයක් ලෙස, ඇල්පයින් ලිනක්ස් බෙදාහැරීම මත පදනම් වූ LXD කන්ටේනරයක් පමණක් පරිභෝජනය කරයි 7.60MB RAM, සහ ආරම්භයෙන් පසුව root කොටස අල්ලාගෙන සිටින ස්ථානය 9.5MB! ඔබ එයට කැමති වන්නේ කෙසේද, එලොන් මස්ක්? පරීක්ෂා කර බැලීමට මම නිර්දේශ කරමි LXD හි මූලික හැකියාවන් - Linux හි බහාලුම් පද්ධතියකි

LXD බහාලුම් යනු කුමක්දැයි සාමාන්‍යයෙන් පැහැදිලි වූ පසු, අපි තවත් ඉදිරියට ගොස් සිතන්න, ඔබට ධාරකය සඳහා ආරක්ෂිතව කේතය ධාවනය කළ හැකි, ප්‍රස්ථාර ජනනය කළ හැකි, ඔබේ කේතය සමඟ UI- විජට් සම්බන්ධ කළ හැකි, බ්ලැක් ජැක් සමඟ පෙළ සමඟ කේතය අතිරේක කරන්න... හැඩතල ගැන්වීම? යම් ආකාරයක අන්තර්ක්‍රියාකාරී බ්ලොග් එකක්ද? වාව්... මට ඒක ඕන! අවශ්යයි! 🙂

අපි කන්ටේනරයක දියත් කරන බළලා යට බලන්න jupyter රසායනාගාරය - යල් පැන ගිය Jupyter Notebook වෙනුවට මීළඟ පරම්පරාවේ පරිශීලක අතුරුමුහුණත, සහ අපි වැනි Python මොඩියුල ද ස්ථාපනය කරන්නෙමු numpy, පාණ්ඩස්, මැට්ප්ලොට්ලිබ්, IPyWidgets ඉහත ලැයිස්තුගත කර ඇති සියල්ල කිරීමට සහ ඒ සියල්ල විශේෂ ගොනුවක සුරැකීමට ඔබට ඉඩ සලසයි - IPython ලැප්ටොප්.

ජුපිටර් LXD කක්ෂයට දියත් කිරීම

කක්ෂගත ගුවන්ගත කිරීමේ සැලැස්ම ^

ජුපිටර් LXD කක්ෂයට දියත් කිරීම

ඉහත යෝජනා ක්‍රමය ක්‍රියාත්මක කිරීම අපට පහසු කිරීම සඳහා කෙටි ක්‍රියාකාරී සැලැස්මක් ගෙනහැර දක්වමු:

  • බෙදා හැරීමේ කට්ටලය මත පදනම්ව කන්ටේනරයක් ස්ථාපනය කර දියත් කරමු ඇල්පයින් ලිනක්ස්. අපි මෙම බෙදාහැරීම භාවිතා කරනුයේ එය අවමවාදය ඉලක්ක කර ඇති අතර එය තුළ වඩාත්ම අවශ්ය මෘදුකාංග පමණක් ස්ථාපනය කරනු ඇත, කිසිවක් අතිරික්ත නොවේ.
  • අපි කන්ටේනරය තුළ අමතර අතථ්‍ය තැටියක් එකතු කර එයට නමක් දෙමු - hostfs සහ එය root ගොනු පද්ධතියට සවි කරන්න. කන්ටේනරය තුළ ඇති ඩිරෙක්ටරියකින් ධාරකයේ ගොනු භාවිතා කිරීමට මෙම තැටිය මඟින් හැකි වේ. මේ අනුව, අපගේ දත්ත බහාලුම් වලින් ස්වාධීන වනු ඇත. කන්ටේනරය මකා දැමුවහොත්, දත්ත ධාරකයෙහි පවතිනු ඇත. එසේම, මෙම යෝජනා ක්රමය බහාලුම් බෙදාහැරීමේ සම්මත ජාල යාන්ත්රණ භාවිතා නොකර බොහෝ බහාලුම් අතර එකම දත්ත හුවමාරු කිරීම සඳහා ප්රයෝජනවත් වේ.
  • අපි Bash, sudo, අවශ්‍ය පුස්තකාල ස්ථාපනය කරමු, පද්ධති පරිශීලකයෙකු එකතු කර වින්‍යාස කරමු
  • අපි පයිතන්, මොඩියුල ස්ථාපනය කර ඒවා සඳහා ද්විමය පරායත්තතා සම්පාදනය කරමු
  • අපි ස්ථාපනය කර දියත් කරමු jupyter රසායනාගාරය, පෙනුම අභිරුචිකරණය කරන්න, ඒ සඳහා දිගු ස්ථාපනය කරන්න.

මෙම ලිපියෙන්, අපි කන්ටේනරය දියත් කිරීම ආරම්භ කරමු, අපි LXD ස්ථාපනය කිරීම සහ වින්‍යාස කිරීම සලකා බලන්නේ නැත, ඔබට මේ සියල්ල වෙනත් ලිපියකින් සොයාගත හැකිය - LXD - Linux බහාලුම් පද්ධතිවල මූලික ලක්ෂණ.

මූලික පද්ධතියේ ස්ථාපනය සහ වින්යාසය ^

අපි රූපය නියම කරන විධානය සමඟ කන්ටේනරයක් සාදන්නෙමු - 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

මෙය මට HDD තැටියේ බහාලුම් සමඟ අත්හදා බැලීමට අවස්ථාව ලබා දෙයි, SSD තැටියේ සම්පත් ඉතිරි කරයි, එය මගේ පද්ධතියේ ද ඇත 🙂 ඒ සඳහා මම වෙනම වින්‍යාස පැතිකඩක් නිර්මාණය කර ඇත. ssdroot.

කන්ටේනරය නිර්මාණය කිරීමෙන් පසු එය ප්රාන්තයේ පවතී STOPPED, එබැවින් අපි එහි init පද්ධතිය ධාවනය කිරීමෙන් එය ආරම්භ කළ යුතුය:

lxc start jupyterlab

යතුර භාවිතයෙන් LXD හි බහාලුම් ලැයිස්තුවක් පෙන්වමු -c කුමන පෙන්නුම් කරයි cඕලම් සංදර්ශකය:

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      |
+------------+---------+------------------+--------------+

මූලික මෘදුකාංග ස්ථාපනය කිරීම සහ පද්ධතිය සැකසීම ^

අපගේ බහාලුම් පරිපාලනය කිරීමට, ඔබ පහත මෘදුකාංග ස්ථාපනය කළ යුතුය:

පැකේජය
විස්තර

බෂ්
GNU Bourne Again කවචය

bash-සම්පූර්ණ කිරීම
bash shell සඳහා වැඩසටහන්ගත කළ හැකි සම්පූර්ණ කිරීම

කිසිදිනක භාවිතා
සමහර පරිශීලකයින්ට සමහර විධාන root ලෙස ක්‍රියාත්මක කිරීමේ හැකියාව ලබා දෙන්න

සෙවණැල්ලයි
සෙවනැලි ගොනු සහ PAM සඳහා සහය ඇති මුරපදය සහ ගිණුම් කළමනාකරණ මෙවලම් කට්ටලය

tzdata
කාල කලාපය සහ දිවා ආලෝකය ඉතිරි කිරීමේ කාල දත්ත සඳහා මූලාශ්‍ර

නැනෝ
වැඩිදියුණු කිරීම් සහිත Pico සංස්කාරක ක්ලෝනය

අතිරේකව, පහත පැකේජ - ස්ථාපනය කිරීමෙන් ඔබට පද්ධති man-පිටු තුළ සහය ස්ථාපනය කළ හැක 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 ප්‍රතිපත්තිමය වශයෙන් ඒවා ඇල්පයින් ලිනක්ස් සඳහා සුදුසු වන අතර විවේචනාත්මක ගැටළු ඇති නොකරයි, නමුත් ඔබට වෙනස් බෙදා හැරීමක් තිබිය හැකි අතර බහාලුම් තුළ 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

ඇල්පයින් ලිනක්ස් පරිශීලකයින් සඳහා පද්ධති කවචයක් ස්ථාපනය කරයි /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 ඒ සඳහා අපි පසුව වින්යාස කරන්නෙමු 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 වින්‍යාස ගොනුවේ පරාමිති රේඛාව uncomments කරයි /etc/sudoers:

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

JupyterLab ස්ථාපනය කිරීම සහ වින්‍යාස කිරීම ^

jupyter රසායනාගාරය යනු Python යෙදුමකි, එබැවින් අපි මුලින්ම මෙම පරිවර්තකය ස්ථාපනය කළ යුතුය. තවද, jupyter රසායනාගාරය අපි පයිතන් පැකේජ කළමනාකරු භාවිතයෙන් ස්ථාපනය කරන්නෙමු 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

ස්ථාපනය කරන්න jupyter රසායනාගාරය පැකේජ කළමනාකරු හරහා pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

තුළ දිගු සිට jupyter රසායනාගාරය පර්යේෂණාත්මක වන අතර නිල වශයෙන් jupyterlab පැකේජය සමඟ යවා නැත, එබැවින් අපට එය අතින් ස්ථාපනය කර වින්‍යාස කිරීමට සිදුවේ.

NodeJS සහ ඒ සඳහා පැකේජ කළමනාකරු ස්ථාපනය කරමු - NPM, සිට jupyter රසායනාගාරය එහි දිගු සඳහා ඒවා භාවිතා කරයි:

lxc exec jupyterlab -- apk add nodejs npm

සඳහා දිගු වෙත jupyter රසායනාගාරය අපි ස්ථාපනය කරන වැඩ, ඒවා පරිශීලක නාමාවලියෙහි ස්ථාපනය කළ යුතුය, මන්ද යෙදුම පරිශීලකයාගෙන් දියත් කෙරේ jupyter. ගැටළුව වන්නේ දියත් කිරීමේ විධානයේ නාමාවලියකට යැවිය හැකි පරාමිතියක් නොමැති වීමයි; යෙදුම පිළිගන්නේ පරිසර විචල්‍යයක් පමණක් වන අතර එබැවින් අප එය අර්ථ දැක්විය යුතුය. මෙය සිදු කිරීම සඳහා, අපි විචල්ය අපනයන විධානය ලියන්නෙමු JUPYTERLAB_DIR පරිශීලක පරිසරය තුළ jupyter, ගොනු කිරීමට .bashrcපරිශීලකයා ලොග් වන සෑම අවස්ථාවකම එය ක්‍රියාත්මක වේ:

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

ඊළඟ විධානය මඟින් විශේෂ දිගුවක් ස්ථාපනය කරනු ඇත - දිගු කළමනාකරු තුළ jupyter රසායනාගාරය:

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

දැන් පළමු දියත් කිරීමට සියල්ල සූදානම් jupyter රසායනාගාරය, නමුත් අපට තවමත් ප්‍රයෝජනවත් දිගු කිහිපයක් ස්ථාපනය කළ හැක:

  • 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"

දැන් එය පළමු වරට ක්‍රියාත්මක කිරීමට පහත විධාන දෙක ක්‍රියාත්මක කරන්න jupyter රසායනාගාරය. එය එක් විධානයකින් දියත් කිරීමට හැකි වනු ඇත, නමුත් මෙම අවස්ථාවෙහිදී, ඔබේ මනසෙහි මතක තබා ගැනීමට අපහසු දියත් කිරීමේ විධානය මතක තබා ගත හැක්කේ බහාලුම්වල ඇති බාෂ් මිස දැනටමත් ප්‍රමාණවත් විධාන ඇති සත්කාරක මත නොවේ. ඒවා ඉතිහාසයේ සටහන් කිරීමට :)

පරිශීලකයෙකු ලෙස බහාලුම් වෙත පිවිසෙන්න jupyter:

lxc exec jupyterlab -- su -l jupyter

ඊළඟට, ධාවනය කරන්න jupyter රසායනාගාරය දක්වා ඇති පරිදි යතුරු සහ පරාමිතීන් සමඟ:

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

ඔබගේ වෙබ් බ්‍රවුසරයේ ඇති ලිපිනයට යන්න http://10.0.5.5:8888 සහ විවෘත කරන පිටුවේ enter කරන්න සංකේතය ඔබ කොන්සෝලයේ දකින ප්‍රවේශය. එය පිටපත් කර පිටුවේ අලවන්න, ඉන්පසු ක්ලික් කරන්න ඇතුල් වන්න. ලොග් වූ පසු, පහත රූපයේ දැක්වෙන පරිදි, වම් පස ඇති දිගු මෙනුව වෙත යන්න, එහිදී, දිගු කළමනාකරු සක්‍රිය කිරීමේදී, විධානය ලබා දෙන තෙවන පාර්ශවයන්ගෙන් දිගු ස්ථාපනය කිරීමෙන් ආරක්ෂක අවදානම් ගැනීමට ඔබෙන් විමසනු ඇත. JupyterLab සංවර්ධනය වගකිව යුතු නොවේ:

ජුපිටර් LXD කක්ෂයට දියත් කිරීම

කෙසේ වෙතත්, අපි සමස්තය හුදකලා කරන්නෙමු jupyter රසායනාගාරය NodeJS අවශ්‍ය සහ භාවිතා කරන තුන්වන පාර්ශ්ව දිගුවලට අවම වශයෙන් අප බහාලුම් තුළ විවෘත කරන ඒවා හැර තැටියේ ඇති දත්ත සොරකම් කළ නොහැකි වන පරිදි එය බහාලුමක තබන්න. ධාරකයේ ඔබගේ පුද්ගලික ලේඛන වෙත යන්න /home කන්ටේනරයේ ක්‍රියාවලි සාර්ථක වීමට ඉඩක් නැති අතර ඒවා එසේ වුවහොත්, අපි කන්ටේනරය ක්‍රියාත්මක කරන බැවින් ධාරක පද්ධතියේ ගොනු සඳහා ඔබට වරප්‍රසාද තිබිය යුතුය. වරප්රසාද විරහිත මාදිලිය. මෙම තොරතුරු මත පදනම්ව, ඔබට දිගු ඇතුළත් කිරීමේ අවදානම තක්සේරු කළ හැකිය jupyter රසායනාගාරය.

සාදන ලද IPython සටහන් පොත් (පිටු වල jupyter රසායනාගාරය) දැන් පරිශීලකයාගේ මුල් නාමාවලිය තුළ නිර්මාණය වනු ඇත - /home/jupyter, නමුත් අපගේ සැලසුම් වන්නේ ධාරකය සහ බහාලුම අතර දත්ත (බෙදාගැනීම) බෙදා හැරීමයි, එබැවින් කොන්සෝලය වෙත ආපසු ගොස් නතර කරන්න jupyter රසායනාගාරය Hotkey ක්‍රියාත්මක කිරීමෙන් - CTRL+C සහ පිළිතුරු දීම y ඉල්ලීම පරිදි. ඉන්පසු පරිශීලකයාගේ අන්තර්ක්‍රියාකාරී සැසිය අවසන් කරන්න jupyter උණුසුම් යතුරක් සම්පූර්ණ කිරීම CTRL+D.

ධාරකය සමඟ දත්ත බෙදා ගැනීම ^

ධාරකය සමඟ දත්ත හුවමාරු කර ගැනීම සඳහා, ඔබට මෙය කිරීමට ඉඩ සලසන උපාංගයක් කන්ටේනරය තුළ නිර්මාණය කළ යුතු අතර මෙය සිදු කිරීම සඳහා, අපි පහත යතුරු සඳහන් කරන පහත විධානය ක්‍රියාත්මක කරන්න:

  • lxc config device add - විධානය මඟින් උපාංග වින්‍යාසය එක් කරයි
  • jupyter - වින්‍යාසය එකතු කරන ලද බහාලුම් ID
  • 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

හෙලෝ වර්ල්ඩ්! ^

ඔබට තවමත් කන්ටේනරය තුළ විවෘත කොන්සෝල සැසියක් තිබේ නම් jupyter රසායනාගාරය, පසුව එය නව යතුරකින් නැවත ආරම්භ කරන්න --notebook-dir අගය සැකසීමෙන් /mnt/hostfs පෙර පියවරේදී අප විසින් නිර්මාණය කරන ලද උපාංගය සඳහා බහාලුම්වල ඇති ලැප්ටොප් පරිගණකයේ මූලයට යන මාර්ගය ලෙස:

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

ඉන්පසු පිටුවට යන්න http://10.0.5.5:8888 පහත පින්තූරයේ පෙන්වා ඇති පරිදි පිටුවේ ඇති බොත්තම ක්ලික් කිරීමෙන් ඔබේ පළමු ලැප්ටොප් පරිගණකය සාදන්න:

ජුපිටර් LXD කක්ෂයට දියත් කිරීම

ඉන්පසුව, පිටුවේ ඇති ක්ෂේත්‍රය තුළ, සම්භාව්‍ය දර්ශනය වන පයිතන් කේතය ඇතුළත් කරන්න Hello World!. ඔබ ඇතුල් වීම අවසන් වූ පසු, ඔබන්න CTRL+ENTER හෝ JupyterLab මෙය කිරීමට ඉහළින් ඇති මෙවලම් තීරුවේ "play" බොත්තම:

ජුපිටර් LXD කක්ෂයට දියත් කිරීම

මෙම අවස්ථාවෙහිදී, සෑම දෙයක්ම පාහේ භාවිතයට සූදානම්ව ඇත, නමුත් අපි Python හි සම්මත හැකියාවන් සැලකිය යුතු ලෙස පුළුල් කළ හැකි අතිරේක Python මොඩියුල (සම්පූර්ණ යෙදුම්) ස්ථාපනය නොකරන්නේ නම් එය උනන්දුවක් නොදක්වයි. jupyter රසායනාගාරය, එබැවින්, අපි ඉදිරියට යමු :)

PS සිත්ගන්නා කරුණ නම් පැරණි ක්රියාත්මක කිරීමයි බ්‍රහස්පති කේත නාමය යටතේ ජුපිටර් නෝට්බුක් ඉවත්ව ගොස් නැති අතර එය සමාන්තරව පවතී jupyter රසායනාගාරය. පැරණි අනුවාදය වෙත මාරු වීමට, ලිපිනයෙහි උපසර්ගය එකතු කරන සබැඳිය අනුගමනය කරන්න/tree, සහ නව අනුවාදය වෙත සංක්‍රමණය උපසර්ගය සමඟ සිදු කෙරේ /lab, නමුත් එය සඳහන් කළ යුතු නැත:

Python හි හැකියාවන් පුළුල් කිරීම ^

මෙම කොටසේදී, අපි එවැනි බලවත් Python භාෂා මොඩියුල ස්ථාපනය කරන්නෙමු numpy, පාණ්ඩස්, මැට්ප්ලොට්ලිබ්, IPyWidgets එහි ප්‍රතිඵල ලැප්ටොප් පරිගණකවලට ඒකාබද්ධ කර ඇත jupyter රසායනාගාරය.

පැකේජ කළමනාකරු හරහා ලැයිස්තුගත Python මොඩියුල ස්ථාපනය කිරීමට පෙර pip අපි මුලින්ම ඇල්පයින් ලිනක්ස් හි පද්ධති පරායත්තතා විසඳිය යුතුයි:

  • g++ - මොඩියුල සම්පාදනය කිරීම සඳහා අවශ්ය වේ, ඒවායින් සමහරක් භාෂාවෙන් ක්රියාත්මක කර ඇත සී ++ සහ ද්විමය මොඩියුල ලෙස ධාවන වේලාවේදී Python වෙත සම්බන්ධ කරන්න
  • freetype-dev - පයිතන් මොඩියුලය සඳහා යැපීම මැට්ප්ලොට්ලිබ්

පරායත්තතා ස්ථාපනය කිරීම:

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

එක් ගැටළුවක් ඇත: Alpine Linux බෙදාහැරීමේ වත්මන් තත්වය තුළ, NumPy හි නව අනුවාදය සම්පාදනය කිරීමට නොහැකි වනු ඇත; මට විසඳිය නොහැකි සම්පාදන දෝෂයක් දිස්වනු ඇත:

දෝෂය: PEP 517 භාවිතා කරන numpy සඳහා රෝද තැනීමට නොහැකි වූ අතර සෘජුවම ස්ථාපනය කළ නොහැක

එබැවින්, අපි මෙම මොඩියුලය දැනටමත් සම්පාදනය කරන ලද අනුවාදයක් බෙදා හරින පද්ධති පැකේජයක් ලෙස ස්ථාපනය කරන්නෙමු, නමුත් දැනට වෙබ් අඩවියේ ඇති දේට වඩා ටිකක් පැරණි:

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

ඊළඟට, පැකේජ කළමනාකරු හරහා පයිතන් මොඩියුල ස්ථාපනය කරන්න 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 හි මොඩියුල පරීක්ෂා කිරීම ^

ඔබ ධාවනය කරන්නේ නම් jupyter රසායනාගාරය, අලුතින් ස්ථාපනය කර ඇති මොඩියුල සක්රිය වන පරිදි එය නැවත ආරම්භ කරන්න. මෙය සිදු කිරීම සඳහා, කොන්සෝල සැසියකදී, ක්ලික් කරන්න CTRL+C ඔබ එය ක්‍රියාත්මක කර ඇති තැනට ඇතුළු වන්න y ඉල්ලීම නතර කර නැවත ආරම්භ කිරීමට jupyter රසායනාගාරය යතුරුපුවරුවේ උඩ ඊතලය එබීමෙන් නැවත නැවතත් විධානය ඇතුල් නොකිරීමට 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 ඔබට එය නිබන්ධන වලින් සොයාගත හැකිය මෙහි

වෙන මොනවා ද? ^

ඔබ නැවතී ලිපියේ අවසානයට පැමිණියේ නම් හොඳයි. මම හිතාමතාම ලිපියේ අවසානයේ ස්ථාපනය කරන සූදානම් කළ පිටපතක් පළ නොකළෙමි jupyter රසායනාගාරය කම්කරුවන් දිරිමත් කිරීම සඳහා "එක් ක්ලික් කිරීමකින්" :) නමුත් ඔබට එය තනිවම කළ හැකිය, ඔබ දැනටමත් දන්නා බැවින්, විධානයන් තනි 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 - දිගු කළමණාකරු සක්‍රිය කිරීමේ විස්තරයේ නිවැරදි කර එකතු කරන ලද පෙළ jupyter රසායනාගාරය
යාවත්කාලීන කිරීම: 16.04.2020/10/40 XNUMX:XNUMX - පෙළෙහි ඇති දෝෂ නිවැරදි කරන ලද අතර “මූලික මෘදුකාංග ස්ථාපනය කිරීම සහ පද්ධතිය සැකසීම” යන පරිච්ඡේදය වඩා හොඳ සඳහා තරමක් වෙනස් කර ඇත.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න