ጁፒተርን ወደ LXD ኦርቢት በማስጀመር ላይ

ስለ መሰረታዊ ስርዓቱ ላለመጨነቅ እና ሁሉንም ነገር ላለማፍረስ ከ root privileges ጋር መሮጥ ያለበት ኮድ ውስጥ ስህተት ሲፈጠር በሊኑክስ ውስጥ በኮድ ወይም የስርዓት መገልገያዎችን መሞከር ነበረብህ?

ግን በአንድ ማሽን ላይ የተለያዩ ጥቃቅን አገልግሎቶችን ሙሉ በሙሉ መፈተሽ ወይም ማስኬድ ያስፈልግዎታል እንበል? አንድ መቶ ወይም አንድ ሺ እንኳ?

በሃይፐርቫይዘር የሚተዳደር ቨርቹዋል ማሽኖች እንደዚህ አይነት ችግሮች ሊፈቱ እና ሊፈቱ ይችላሉ ግን በምን ዋጋ ነው? ለምሳሌ፣ በአልፓይን ሊኑክስ ስርጭቱ ላይ የተመሰረተ በኤልኤክስዲ ውስጥ ያለ መያዣ ብቻ ይበላል 7.60MB RAM, እና ከጅምር በኋላ የስር ክፋይ የሚይዝበት 9.5MB! ኢሎን ማስክ ይህን እንዴት ወደዱት? እንዲመለከቱ እመክራለሁ የ LXD መሰረታዊ ችሎታዎች - በሊኑክስ ውስጥ የእቃ መያዣ ስርዓት

በአጠቃላይ የኤልኤክስዲ ኮንቴይነሮች ምን እንደሆኑ ከተገለጸ በኋላ፣ ወደ ፊት እንሂድና እናስብ፣ ለአስተናጋጁ ኮድን በደህና ማስኬድ፣ ግራፎችን ማመንጨት፣ በተለዋዋጭ (በመስተጋብራዊ) UI- widgets ከኮድዎ ጋር ማገናኘት የሚችሉበት እንዲህ አይነት አጫጅ መድረክ ቢኖርስ? ኮዱን በ blackjack በጽሑፍ ያሟሉ... ቅርጸት? አንዳንድ ዓይነት በይነተገናኝ ብሎግ? ዋው... እፈልጋለሁ! ይፈልጋሉ! 🙂

በኮንቴይነር ውስጥ የምንጀምርበትን ድመት ስር ተመልከት ጁፒተር ላብ - ጊዜው ካለፈበት የጁፒተር ማስታወሻ ደብተር ይልቅ የሚቀጥለው ትውልድ የተጠቃሚ በይነገጽ ፣ እና እንደ ፒቲን ያሉ ሞጁሎችን እንጭናለን ቁ, ፓናስ, ማትፕሎትሊብ, IPyWidgets ከላይ የተዘረዘሩትን ሁሉንም ነገሮች እንዲያደርጉ እና ሁሉንም በልዩ ፋይል ውስጥ እንዲያስቀምጡ የሚያስችልዎት - IPython ላፕቶፕ.

ጁፒተርን ወደ LXD ኦርቢት በማስጀመር ላይ

የምህዋር መነሳት እቅድ ^

ጁፒተርን ወደ LXD ኦርቢት በማስጀመር ላይ

ከላይ ያለውን እቅድ ተግባራዊ ለማድረግ ቀላል እንዲሆንልን አጭር የድርጊት መርሃ ግብር እንዘርዝር፡-

  • በማከፋፈያው ኪት ላይ በመመስረት መያዣ እንጭን እና እንጀምር አልዲ ሊንክስ. ይህንን ስርጭት እንጠቀማለን ምክንያቱም ዝቅተኛነት ላይ ያነጣጠረ እና በውስጡ በጣም አስፈላጊ የሆኑትን ሶፍትዌሮች ብቻ ይጭናል, ምንም ነገር የለም.
  • በመያዣው ውስጥ ተጨማሪ ቨርቹዋል ዲስክ እንጨምር እና ስም እንስጠው - hostfs እና ወደ ስርወ ፋይል ስርዓት ይጫኑት. ይህ ዲስክ በእቃ መያዣው ውስጥ ካለው ማውጫ ውስጥ በአስተናጋጁ ላይ ያሉ ፋይሎችን ለመጠቀም ያስችላል። ስለዚህ የእኛ መረጃ ከመያዣው ነፃ ይሆናል። መያዣው ከተሰረዘ, ውሂቡ በአስተናጋጁ ላይ ይቆያል. እንዲሁም ይህ እቅድ የእቃ መያዢያ ስርጭት መደበኛ የኔትወርክ ስልቶችን ሳይጠቀም በብዙ ኮንቴይነሮች መካከል ተመሳሳይ መረጃን ለማጋራት ይጠቅማል።
  • ባሽ፣ ሱዶ፣ አስፈላጊዎቹን ቤተ-መጻሕፍት እንጭን፣ የስርዓት ተጠቃሚን እንጨምር እና እናዋቅር
  • ፓይዘንን እንጭን ፣ ሞጁሎች እና ለእነሱ ሁለትዮሽ ጥገኞችን እናጠናቅቅላቸው
  • እንጫን እና እንጀምር ጁፒተር ላብ, መልክን ያብጁ, ለእሱ ቅጥያዎችን ይጫኑ.

በዚህ ጽሑፍ ውስጥ መያዣውን በማስጀመር እንጀምራለን, LXD ን መጫን እና ማዋቀርን አናስብም, ይህን ሁሉ በሌላ ጽሑፍ ውስጥ ማግኘት ይችላሉ - የ LXD ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ.

የመሠረታዊ ስርዓቱን መጫን እና ማዋቀር ^

ምስሉን በምንገልጽበት ትእዛዝ መያዣ እንፈጥራለን - 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 ዲስክን ሀብቶች በማስቀመጥ, በስርዓቴ ውስጥም ይገኛል 🙂 የተለየ የውቅር መገለጫ የፈጠርኩበት 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      |
+------------+---------+-------------------+--------------+

መያዣውን በሚፈጥሩበት ጊዜ የአይፒ አድራሻው በዘፈቀደ ተመርጧል, ምክንያቱም የማዋቀሪያ መገለጫን ስለምንጠቀም default ቀደም ሲል በአንቀጹ ውስጥ የተዋቀረው የ LXD ዋና ባህሪያት - የሊኑክስ ኮንቴይነር ሲስተምስ.

በኮንቴይነር ደረጃ የአውታረ መረብ በይነገጽ በመፍጠር ይህንን የአይፒ አድራሻ ወደ የማይረሳ እንለውጣለን ፣ እና አሁን ባለው ውቅር ውስጥ ባለው የውቅረት መገለጫ ደረጃ ላይ አይደለም። ይህን ማድረግ አያስፈልግም, መዝለል ይችላሉ.

የአውታረ መረብ በይነገጽ መፍጠር eth0 ወደ መቀየሪያ (የኔትወርክ ድልድይ) የምናገናኘው lxdbr0 በቀደመው መጣጥፍ መሠረት NAT ን ያነቃንበት እና መያዣው አሁን የበይነመረብ መዳረሻ ይኖረዋል ፣ እና እንዲሁም በበይነገጽ ላይ የማይለዋወጥ የአይፒ አድራሻ እንመድባለን። 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
የጂኤንዩ ቡርን ድጋሚ ዛጎል

ባሽ ማጠናቀቅ
ለባሽ ሼል በፕሮግራም ማጠናቀቅ

sudo
ለተወሰኑ ተጠቃሚዎች አንዳንድ ትዕዛዞችን እንደ ስር እንዲያሄዱ ችሎታ ይስጡ

ጥላ
የይለፍ ቃል እና የመለያ አስተዳደር መሣሪያ ስብስብ ለጥላ ፋይሎች እና PAM ድጋፍ

ትዝታታ
የሰዓት ሰቅ እና የቀን ብርሃን ቆጣቢ ጊዜ መረጃ ምንጮች

ናኖ
ፒኮ አርታዒ ክሎን ከማሻሻያዎች ጋር

በተጨማሪም ፣ የሚከተሉትን ጥቅሎች በመጫን በስርዓቱ ሰው ገፆች ውስጥ ድጋፍን መጫን ይችላሉ - 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 - የአልፓይን ሊኑክስ ስርጭት ጥቅል አስተዳዳሪ
  • 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 ፋይሎችን ከአስተናጋጅ ስርዓቱ ወደ እሱ እንቀዳለን። ይህ ባሽን በኮንቴይነር ውስጥ በይነተገናኝ ለማስዋብ ያስችልዎታል። የእኔ አስተናጋጅ ስርዓት ማንጃሮ ሊኑክስ እና ፋይሎች እየተገለበጡ ነው። /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors በመርህ ደረጃ እነሱ ለአልፓይን ሊኑክስ ተስማሚ ናቸው እና ወሳኝ ችግሮች አያስከትሉም ፣ ግን የተለየ ስርጭት ሊኖርዎት ይችላል እና ባሽ በእቃ መያዣው ውስጥ ሲሮጡ ስህተት ካለ እራስዎን እራስዎ ማወቅ ያስፈልግዎታል።

የ 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

አልፓይን ሊኑክስ ለተጠቃሚዎች የስርዓት ሼል ይጭናል /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 ጥቅል አስተዳዳሪን በመጠቀም እንጭናለን። 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

ውስጥ ቅጥያዎች ጀምሮ ጁፒተር ላብ የሙከራ ናቸው እና በይፋ ከጁፒተርላብ ጥቅል ጋር አልተላኩም፣ ስለዚህ መጫን እና ማዋቀር አለብን።

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 - የተጠቃሚ በይነገጽ ገጽታ
  • jupyterlab_neon_theme - የተጠቃሚ በይነገጽ ገጽታ
  • 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ነገር ግን እቅዳችን መረጃውን (ማጋራት) በአስተናጋጁ እና በመያዣው መካከል መከፋፈል ነው ስለዚህ ወደ ኮንሶሉ ይመለሱ እና ያቁሙ ጁፒተር ላብ hotkey በማስፈጸም - CTRL+C እና መልስ መስጠት y በጥያቄው መሰረት. ከዚያ የተጠቃሚውን በይነተገናኝ ክፍለ ጊዜ ያቋርጡ jupyter hotkey በማጠናቀቅ ላይ CTRL+D.

ከአስተናጋጁ ጋር ውሂብ ማጋራት። ^

መረጃን ከአስተናጋጁ ጋር ለመጋራት ይህንን እንዲያደርጉ የሚያስችልዎትን መሳሪያ በመያዣው ውስጥ መፍጠር ያስፈልግዎታል እና ይህንን ለማድረግ የሚከተሉትን ቁልፎች የገለፅንበትን የሚከተለውን ትዕዛዝ ያሂዱ።

  • lxc config device add - ትዕዛዙ የመሳሪያውን ውቅር ይጨምራል
  • jupyter - አወቃቀሩ የተጨመረበት መያዣ መታወቂያ
  • hostfs - የመሣሪያ መታወቂያ ማንኛውንም ስም ማዘጋጀት ይችላሉ.
  • disk - የመሳሪያው አይነት ተጠቁሟል
  • path - ይህንን መሳሪያ ኤልኤክስዲ የሚሰቀልበት መያዣ ውስጥ ያለውን መንገድ ይገልጻል
  • 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 ወይም ጁፒተርላብ ይህን ለማድረግ ከላይ ባለው የመሳሪያ አሞሌ ላይ ያለው የ"ጨዋታ" ቁልፍ፡-

ጁፒተርን ወደ LXD ኦርቢት በማስጀመር ላይ

በዚህ ጊዜ ሁሉም ነገር ማለት ይቻላል ለአገልግሎት ዝግጁ ነው ፣ ግን የ Python መደበኛ ችሎታዎችን በከፍተኛ ሁኔታ ሊያሰፋ የሚችል ተጨማሪ የ Python ሞጁሎችን (ሙሉ-ሙሉ አፕሊኬሽኖችን) ካልጫንን አስደሳች አይሆንም ። ጁፒተር ላብስለዚህ እንቀጥል :)

PS የሚያስደንቀው ነገር የድሮው አተገባበር ነው ጁፒተር በኮድ ስም Jupyter Notebook አልሄደም እና በትይዩ አለ ጁፒተር ላብ. ወደ አሮጌው ስሪት ለመቀየር በአድራሻው ውስጥ ቅጥያውን በመጨመር አገናኙን ይከተሉ/tree, እና ወደ አዲሱ ስሪት የሚደረገው ሽግግር በቅጥያው ይከናወናል /labነገር ግን መገለጽ የለበትም፡-

የ Python ችሎታዎችን ማስፋፋት። ^

በዚህ ክፍል ውስጥ እንደ ኃይለኛ የ Python ቋንቋ ሞጁሎችን እንጭናለን ቁ, ፓናስ, ማትፕሎትሊብ, IPyWidgets ውጤቶቹ ወደ ላፕቶፖች የተዋሃዱ ናቸው ጁፒተር ላብ.

በጥቅል አቀናባሪ በኩል የተዘረዘሩትን የ Python ሞጁሎችን ከመጫንዎ በፊት pip በመጀመሪያ በአልፓይን ሊኑክስ ውስጥ የስርዓት ጥገኝነቶችን መፍታት አለብን።

  • g++ — ሞጁሎችን ለማጠናቀር ያስፈልጋል፣ አንዳንዶቹ በቋንቋው ስለሚተገበሩ በ C ++ እና እንደ ሁለትዮሽ ሞጁሎች ሆነው ከፓይዘን ጋር ይገናኙ
  • freetype-dev - ለ Python ሞጁል ጥገኝነት ማትፕሎትሊብ

የመጫን ጥገኛዎች፡-

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

አንድ ችግር አለ፡ አሁን ባለው የአልፓይን ሊኑክስ ስርጭት ሁኔታ አዲሱን የNumPy ስሪት ማጠናቀር አይቻልም፤ መፍታት ያልቻልኩት የማጠናቀር ስህተት ይመጣል፡

ስህተትPEP 517 ለሚጠቀሙ እና በቀጥታ መጫን ለማይችሉ መንኮራኩሮች መገንባት አልተቻለም

ስለዚህ ፣ ይህንን ሞጁል እንደ የስርዓት ፓኬጅ እንጭነዋለን ፣ ቀድሞውኑ የተጠናቀረ ስሪት የሚያሰራጭ ፣ ግን በአሁኑ ጊዜ በጣቢያው ላይ ካለው ትንሽ የቆየ።

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/*

በጁፒተርላብ ውስጥ ሞጁሎችን መሞከር ^

እየሮጥክ ከሆነ ጁፒተር ላብ, አዲስ የተጫኑ ሞጁሎች እንዲነቁ እንደገና ያስጀምሩት. ይህንን ለማድረግ በኮንሶል ክፍለ ጊዜ ውስጥ ጠቅ ያድርጉ 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 ስክሪፕት ሰብስበው :)

እንዲሁም የሚከተሉትን ማድረግ ይችላሉ:

  • ቀላል በሆነ መልኩ በመጻፍ ከአይፒ አድራሻ ይልቅ ለመያዣው የኔትወርክ ስም ያዘጋጁ /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 XNUMX:XNUMX — በጽሁፉ ውስጥ የተስተካከሉ ስህተቶች እና “መሠረታዊ ሶፍትዌሮችን መጫን እና ስርዓቱን ማዋቀር” በሚለው ምዕራፍ በትንሹ ተለውጠዋል።

ምንጭ: hab.com

አስተያየት ያክሉ