ስለ መሰረታዊ ስርዓቱ ላለመጨነቅ እና ሁሉንም ነገር ላለማፍረስ ከ root privileges ጋር መሮጥ ያለበት ኮድ ውስጥ ስህተት ሲፈጠር በሊኑክስ ውስጥ በኮድ ወይም የስርዓት መገልገያዎችን መሞከር ነበረብህ?
ግን በአንድ ማሽን ላይ የተለያዩ ጥቃቅን አገልግሎቶችን ሙሉ በሙሉ መፈተሽ ወይም ማስኬድ ያስፈልግዎታል እንበል? አንድ መቶ ወይም አንድ ሺ እንኳ?
በሃይፐርቫይዘር የሚተዳደር ቨርቹዋል ማሽኖች እንደዚህ አይነት ችግሮች ሊፈቱ እና ሊፈቱ ይችላሉ ግን በምን ዋጋ ነው? ለምሳሌ፣ በአልፓይን ሊኑክስ ስርጭቱ ላይ የተመሰረተ በኤልኤክስዲ ውስጥ ያለ መያዣ ብቻ ይበላል 7.60MB RAM, እና ከጅምር በኋላ የስር ክፋይ የሚይዝበት 9.5MB! ኢሎን ማስክ ይህን እንዴት ወደዱት? እንዲመለከቱ እመክራለሁ የ LXD መሰረታዊ ችሎታዎች - በሊኑክስ ውስጥ የእቃ መያዣ ስርዓት
በአጠቃላይ የኤልኤክስዲ ኮንቴይነሮች ምን እንደሆኑ ከተገለጸ በኋላ፣ ወደ ፊት እንሂድና እናስብ፣ ለአስተናጋጁ ኮድን በደህና ማስኬድ፣ ግራፎችን ማመንጨት፣ በተለዋዋጭ (በመስተጋብራዊ) UI- widgets ከኮድዎ ጋር ማገናኘት የሚችሉበት እንዲህ አይነት አጫጅ መድረክ ቢኖርስ? ኮዱን በ blackjack በጽሑፍ ያሟሉ... ቅርጸት? አንዳንድ ዓይነት በይነተገናኝ ብሎግ? ዋው... እፈልጋለሁ! ይፈልጋሉ! 🙂
በኮንቴይነር ውስጥ የምንጀምርበትን ድመት ስር ተመልከት ጁፒተር ላብ - ጊዜው ካለፈበት የጁፒተር ማስታወሻ ደብተር ይልቅ የሚቀጥለው ትውልድ የተጠቃሚ በይነገጽ ፣ እና እንደ ፒቲን ያሉ ሞጁሎችን እንጭናለን ቁ, ፓናስ, ማትፕሎትሊብ, IPyWidgets ከላይ የተዘረዘሩትን ሁሉንም ነገሮች እንዲያደርጉ እና ሁሉንም በልዩ ፋይል ውስጥ እንዲያስቀምጡ የሚያስችልዎት - IPython ላፕቶፕ.

ዳሰሳ
- የምህዋር መነሳት እቅድ
- የመሠረታዊ ስርዓቱን መጫን እና ማዋቀር
- መሰረታዊ ሶፍትዌሮችን መጫን እና ስርዓቱን ማዋቀር
- JupyterLabን መጫን እና ማዋቀር
- ከአስተናጋጁ ጋር ውሂብ ማጋራት።
- ሰላም ልዑል!
- የ Python ችሎታዎችን ማስፋፋት።
- በጁፒተርላብ ውስጥ ሞጁሎችን መሞከር
- ሌላስ?
የምህዋር መነሳት እቅድ ^

ከላይ ያለውን እቅድ ተግባራዊ ለማድረግ ቀላል እንዲሆንልን አጭር የድርጊት መርሃ ግብር እንዘርዝር፡-
- በማከፋፈያው ኪት ላይ በመመስረት መያዣ እንጭን እና እንጀምር አልዲ ሊንክስ. ይህንን ስርጭት እንጠቀማለን ምክንያቱም ዝቅተኛነት ላይ ያነጣጠረ እና በውስጡ በጣም አስፈላጊ የሆኑትን ሶፍትዌሮች ብቻ ይጭናል, ምንም ነገር የለም.
- በመያዣው ውስጥ ተጨማሪ ቨርቹዋል ዲስክ እንጨምር እና ስም እንስጠው -
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 ልማት ተጠያቂ አይደለም፡-

ሆኖም ግን, እኛ ሙሉውን እየገለልን ነው ጁፒተር ላብ እና 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 እና ከታች በምስሉ ላይ እንደሚታየው በገጹ ላይ ያለውን ቁልፍ በመጫን የመጀመሪያውን ላፕቶፕ ይፍጠሩ።

ከዚያ በገጹ ላይ ባለው መስክ ላይ ክላሲክን የሚያሳየውን የ Python ኮድ ያስገቡ Hello World!. ገብተው ሲጨርሱ ይጫኑ CTRL+ENTER ወይም ጁፒተርላብ ይህን ለማድረግ ከላይ ባለው የመሳሪያ አሞሌ ላይ ያለው የ"ጨዋታ" ቁልፍ፡-

በዚህ ጊዜ ሁሉም ነገር ማለት ይቻላል ለአገልግሎት ዝግጁ ነው ፣ ግን የ Python መደበኛ ችሎታዎችን በከፍተኛ ሁኔታ ሊያሰፋ የሚችል ተጨማሪ የ Python ሞጁሎችን (ሙሉ-ሙሉ አፕሊኬሽኖችን) ካልጫንን አስደሳች አይሆንም ። ጁፒተር ላብስለዚህ እንቀጥል :)
PS የሚያስደንቀው ነገር የድሮው አተገባበር ነው ጁፒተር በኮድ ስም Jupyter Notebook አልሄደም እና በትይዩ አለ ጁፒተር ላብ. ወደ አሮጌው ስሪት ለመቀየር በአድራሻው ውስጥ ቅጥያውን በመጨመር አገናኙን ይከተሉ/tree, እና ወደ አዲሱ ስሪት የሚደረገው ሽግግር በቅጥያው ይከናወናል /labነገር ግን መገለጽ የለበትም፡-
- ጁፒተር ማስታወሻ ደብተር - http://10.0.5.5:8888/tree
- ጁፒተር ላብ - http://10.0.5.5:8888/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 አባል ያመነጫል። ማትፕሎትሊብ የኮዱን ውጤት በሥዕል መልክ እንደ ተግባር ግራፍ ያሳያል፡-

ብዙ ምሳሌዎች IPyWidgets በመማሪያዎች ውስጥ ሊያገኙት ይችላሉ እዚህ
ሌላስ? ^
እርስዎ ከቆዩ እና የጽሁፉ መጨረሻ ላይ ከደረሱ ደህና ነዎት። የሚጫነው ጽሑፉ መጨረሻ ላይ ሆን ብዬ የተዘጋጀ ስክሪፕት አላስቀመጥኩም ጁፒተር ላብ ሠራተኞችን ለማበረታታት “በአንድ ጠቅታ” ውስጥ :) ግን እርስዎ እንዴት ማድረግ እንደሚችሉ አስቀድመው ስለሚያውቁ ፣ ትእዛዞቹን ወደ አንድ የ Bash ስክሪፕት ሰብስበው :)
እንዲሁም የሚከተሉትን ማድረግ ይችላሉ:
- ቀላል በሆነ መልኩ በመጻፍ ከአይፒ አድራሻ ይልቅ ለመያዣው የኔትወርክ ስም ያዘጋጁ
/etc/hostsእና በአሳሹ ውስጥ አድራሻውን ይተይቡ http://jupyter.local:8888 - ለመያዣው ባለው የግብዓት ገደብ ዙሪያ ይጫወቱ፣ ለዚህም ምዕራፍ አንብብ መሰረታዊ 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
