LXD కక్ష్యలోకి జూపిటర్‌ని ప్రయోగిస్తోంది

మీరు ఎప్పుడైనా Linuxలో కోడ్ లేదా సిస్టమ్ యుటిలిటీలతో ప్రయోగాలు చేయవలసి వచ్చిందా, తద్వారా బేస్ సిస్టమ్ గురించి చింతించకుండా మరియు రూట్ అధికారాలతో అమలు చేయాల్సిన కోడ్‌లో లోపం ఏర్పడినప్పుడు ప్రతిదీ కూల్చివేయకుండా ఉందా?

కానీ మీరు ఒక మెషీన్‌లో వివిధ మైక్రోసర్వీస్‌ల మొత్తం క్లస్టర్‌ను పరీక్షించాలి లేదా అమలు చేయాలి అని చెప్పండి? వంద లేదా వెయ్యి?

హైపర్‌వైజర్ ద్వారా నిర్వహించబడే వర్చువల్ మెషీన్‌లతో, అటువంటి సమస్యలు పరిష్కరించబడతాయి మరియు పరిష్కరించబడతాయి, అయితే ఎంత ధర వద్ద? ఉదాహరణకు, Alpine Linux పంపిణీపై ఆధారపడిన LXDలోని కంటైనర్ మాత్రమే వినియోగిస్తుంది 7.60MB RAM, మరియు ప్రారంభమైన తర్వాత రూట్ విభజన ఎక్కడ ఆక్రమిస్తుంది 9.5MB! ఎలాన్ మస్క్, మీరు దీన్ని ఎలా ఇష్టపడతారు? నేను తనిఖీ చేయమని సిఫార్సు చేస్తున్నాను LXD యొక్క ప్రాథమిక సామర్థ్యాలు - Linuxలో ఒక కంటైనర్ సిస్టమ్

ఎల్‌ఎక్స్‌డి కంటైనర్‌లు అంటే ఏమిటో సాధారణంగా తేలిన తర్వాత, మరింత ముందుకు వెళ్లి, ఆలోచిద్దాం, అటువంటి హార్వెస్టర్ ప్లాట్‌ఫారమ్ ఉంటే మీరు హోస్ట్ కోసం కోడ్‌ని సురక్షితంగా అమలు చేయగలరు, గ్రాఫ్‌లను రూపొందించవచ్చు, డైనమిక్‌గా (ఇంటరాక్టివ్‌గా) మీ కోడ్‌తో UI- విడ్జెట్‌లను లింక్ చేయవచ్చు, బ్లాక్‌జాక్‌తో టెక్స్ట్‌తో కోడ్‌ను సప్లిమెంట్ చేయండి... ఫార్మాటింగ్? ఒకరకమైన ఇంటరాక్టివ్ బ్లాగ్? వావ్... నాకు కావాలి! కావాలా! 🙂

మేము ఒక కంటైనర్లో లాంచ్ చేసే పిల్లి కింద చూడండి జూపిటర్ ల్యాబ్ - కాలం చెల్లిన జూపిటర్ నోట్‌బుక్‌కు బదులుగా తదుపరి తరం వినియోగదారు ఇంటర్‌ఫేస్, మరియు మేము వంటి పైథాన్ మాడ్యూళ్లను కూడా ఇన్‌స్టాల్ చేస్తాము నంపి, పాండాలు, మాట్‌ప్లోట్‌లిబ్, IPyWidgets ఇది పైన పేర్కొన్న ప్రతిదాన్ని చేయడానికి మరియు ప్రత్యేక ఫైల్‌లో అన్నింటినీ సేవ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది - IPython ల్యాప్‌టాప్.

LXD కక్ష్యలోకి జూపిటర్‌ని ప్రయోగిస్తోంది

కక్ష్య టేకాఫ్ ప్లాన్ ^

LXD కక్ష్యలోకి జూపిటర్‌ని ప్రయోగిస్తోంది

ఎగువన ఉన్న పథకాన్ని అమలు చేయడం మాకు సులభతరం చేయడానికి సంక్షిప్త కార్యాచరణ ప్రణాళికను తెలియజేస్తాము:

  • డిస్ట్రిబ్యూషన్ కిట్ ఆధారంగా కంటైనర్‌ను ఇన్‌స్టాల్ చేసి లాంచ్ చేద్దాం ఆల్పైన్ లైనక్స్. మేము ఈ పంపిణీని ఉపయోగిస్తాము ఎందుకంటే ఇది మినిమలిజంను లక్ష్యంగా చేసుకుంది మరియు దానిలో అత్యంత అవసరమైన సాఫ్ట్‌వేర్‌ను మాత్రమే ఇన్‌స్టాల్ చేస్తాము, నిరుపయోగంగా ఏమీ లేదు.
  • కంటైనర్‌లో అదనపు వర్చువల్ డిస్క్‌ని జోడించి దానికి పేరు పెట్టండి - hostfs మరియు దానిని రూట్ ఫైల్ సిస్టమ్‌కు మౌంట్ చేయండి. కంటైనర్ లోపల ఇచ్చిన డైరెక్టరీ నుండి హోస్ట్‌లో ఫైల్‌లను ఉపయోగించడం ఈ డిస్క్ సాధ్యం చేస్తుంది. అందువలన, మా డేటా కంటైనర్ నుండి స్వతంత్రంగా ఉంటుంది. కంటైనర్ తొలగించబడితే, డేటా హోస్ట్‌లోనే ఉంటుంది. అలాగే, కంటైనర్ పంపిణీ యొక్క ప్రామాణిక నెట్‌వర్క్ మెకానిజమ్‌లను ఉపయోగించకుండా అనేక కంటైనర్‌ల మధ్య ఒకే డేటాను భాగస్వామ్యం చేయడానికి ఈ పథకం ఉపయోగపడుతుంది.
  • బాష్, సుడో, అవసరమైన లైబ్రరీలను ఇన్‌స్టాల్ చేద్దాం, సిస్టమ్ వినియోగదారుని జోడించి, కాన్ఫిగర్ చేద్దాం
  • పైథాన్, మాడ్యూల్స్ ఇన్‌స్టాల్ చేద్దాం మరియు వాటి కోసం బైనరీ డిపెండెన్సీలను కంపైల్ చేద్దాం
  • ఇన్‌స్టాల్ చేసి లాంచ్ చేద్దాం జూపిటర్ ల్యాబ్, రూపాన్ని అనుకూలీకరించండి, దాని కోసం పొడిగింపులను ఇన్‌స్టాల్ చేయండి.

ఈ వ్యాసంలో మేము కంటైనర్‌ను ప్రారంభించడంతో ప్రారంభిస్తాము, మేము 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      |
+------------+---------+------------------+--------------+

ప్రాథమిక సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయడం మరియు సిస్టమ్‌ను సెటప్ చేయడం ^

మా కంటైనర్‌ను నిర్వహించడానికి, మీరు క్రింది సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయాలి:

ప్యాకేజీ
<span style="font-family: Mandali; "> టెండర్‌ వివరణ</span>

బాష్
GNU బోర్న్ ఎగైన్ షెల్

బాష్-పూర్తి
బాష్ షెల్ కోసం ప్రోగ్రామబుల్ పూర్తి

సుడో
నిర్దిష్ట వినియోగదారులకు కొన్ని ఆదేశాలను రూట్‌గా అమలు చేయగల సామర్థ్యాన్ని ఇవ్వండి

నీడ
షాడో ఫైల్‌లు మరియు PAM కోసం మద్దతుతో పాస్‌వర్డ్ మరియు ఖాతా నిర్వహణ సాధనం సూట్

tzdata
టైమ్ జోన్ మరియు డేలైట్ సేవింగ్ టైమ్ డేటా కోసం సోర్సెస్

నానో
విస్తరింపులతో పికో ఎడిటర్ క్లోన్

అదనంగా, మీరు క్రింది ప్యాకేజీలను ఇన్‌స్టాల్ చేయడం ద్వారా సిస్టమ్ మ్యాన్-పేజీలలో మద్దతును ఇన్‌స్టాల్ చేయవచ్చు - 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

కంటైనర్‌లో కొత్త వినియోగదారుల కోసం బాష్‌ని సెటప్ చేయడానికి ఎక్కువ సమయం వెచ్చించకుండా ఉండటానికి, కింది దశల్లో మేము హోస్ట్ సిస్టమ్ నుండి రెడీమేడ్ స్కెల్ ఫైల్‌లను కాపీ చేస్తాము. ఇంటరాక్టివ్‌గా కంటైనర్‌లో బాష్‌ను అందంగా మార్చడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. నా హోస్ట్ సిస్టమ్ Manjaro Linux మరియు ఫైల్‌లు కాపీ చేయబడుతున్నాయి /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors సూత్రప్రాయంగా అవి ఆల్పైన్ లైనక్స్‌కు అనుకూలంగా ఉంటాయి మరియు క్లిష్టమైన సమస్యలను కలిగించవు, కానీ మీరు వేరే పంపిణీని కలిగి ఉండవచ్చు మరియు కంటైనర్‌లో బాష్‌ను నడుపుతున్నప్పుడు లోపం ఉందో లేదో మీరు స్వతంత్రంగా గుర్తించాలి.

స్కెల్ ఫైల్‌లను కంటైనర్‌కు కాపీ చేయండి. కీ --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

ఇప్పటికే ఉన్న రూట్ వినియోగదారు కోసం, కంటైనర్‌లోకి ఇప్పుడే కాపీ చేసిన స్కెల్ ఫైల్‌లను హోమ్ డైరెక్టరీకి కాపీ చేయండి:

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 బాష్‌లోని వినియోగదారు:

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ని ఇన్‌స్టాల్ చేయడం మరియు కాన్ఫిగర్ చేయడం ^

జూపిటర్ ల్యాబ్ అనేది పైథాన్ అప్లికేషన్, కాబట్టి మనం ముందుగా ఈ ఇంటర్‌ప్రెటర్‌ని ఇన్‌స్టాల్ చేయాలి. అలాగే, జూపిటర్ ల్యాబ్ మేము పైథాన్ ప్యాకేజీ మేనేజర్‌ని ఉపయోగించి ఇన్‌స్టాల్ చేస్తాము pip, మరియు సిస్టమ్ ఒకటి కాదు, ఎందుకంటే ఇది సిస్టమ్ రిపోజిటరీలో పాతది కావచ్చు మరియు అందువల్ల, కింది ప్యాకేజీలను ఇన్‌స్టాల్ చేయడం ద్వారా మనం దాని కోసం డిపెండెన్సీలను మాన్యువల్‌గా పరిష్కరించాలి - python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

పైథాన్ మాడ్యూల్స్ మరియు ప్యాకేజీ మేనేజర్‌ని అప్‌డేట్ చేద్దాం 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"

ఇప్పుడు దీన్ని మొదటిసారి అమలు చేయడానికి క్రింది రెండు ఆదేశాలను అమలు చేయండి జూపిటర్ ల్యాబ్. దీన్ని ఒక కమాండ్‌తో ప్రారంభించడం సాధ్యమవుతుంది, అయితే ఈ సందర్భంలో, లాంచ్ కమాండ్, మీ మనస్సులో గుర్తుంచుకోవడం కష్టం, కంటైనర్‌లోని బాష్ ద్వారా గుర్తుంచుకోబడుతుంది మరియు హోస్ట్‌లో కాదు, ఇప్పటికే తగినంత ఆదేశాలు ఉన్నాయి. వాటిని చరిత్రలో నమోదు చేయడానికి :)

వినియోగదారుగా కంటైనర్‌కు లాగిన్ చేయండి 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 - 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 మరియు దిగువ చిత్రంలో చూపిన విధంగా పేజీలోని బటన్‌ను క్లిక్ చేయడం ద్వారా మీ మొదటి ల్యాప్‌టాప్‌ను సృష్టించండి:

LXD కక్ష్యలోకి జూపిటర్‌ని ప్రయోగిస్తోంది

ఆపై, పేజీలోని ఫీల్డ్‌లో, క్లాసిక్‌ని ప్రదర్శించే పైథాన్ కోడ్‌ను నమోదు చేయండి Hello World!. మీరు ప్రవేశించడం పూర్తి చేసిన తర్వాత, నొక్కండి CTRL+ENTER లేదా JupyterLab దీన్ని చేయడానికి ఎగువన ఉన్న టూల్‌బార్‌లోని "ప్లే" బటన్:

LXD కక్ష్యలోకి జూపిటర్‌ని ప్రయోగిస్తోంది

ఈ సమయంలో, దాదాపు ప్రతిదీ ఉపయోగం కోసం సిద్ధంగా ఉంది, అయితే పైథాన్ యొక్క ప్రామాణిక సామర్థ్యాలను గణనీయంగా విస్తరించగల అదనపు పైథాన్ మాడ్యూల్స్ (పూర్తి స్థాయి అప్లికేషన్‌లు) ఇన్‌స్టాల్ చేయకపోతే అది రసహీనంగా ఉంటుంది. జూపిటర్ ల్యాబ్, కాబట్టి, ముందుకు వెళ్దాం :)

PS ఆసక్తికరమైన విషయం ఏమిటంటే పాత అమలు బృహస్పతి కోడ్ పేరుతో జూపిటర్ నోట్బుక్ దూరంగా వెళ్ళలేదు మరియు ఇది సమాంతరంగా ఉంది జూపిటర్ ల్యాబ్. పాత సంస్కరణకు మారడానికి, చిరునామాలో ప్రత్యయాన్ని జోడించే లింక్‌ను అనుసరించండి/tree, మరియు కొత్త సంస్కరణకు పరివర్తన ప్రత్యయంతో నిర్వహించబడుతుంది /lab, కానీ ఇది పేర్కొనవలసిన అవసరం లేదు:

పైథాన్ సామర్థ్యాలను విస్తరించడం ^

ఈ విభాగంలో, మేము శక్తివంతమైన పైథాన్ లాంగ్వేజ్ మాడ్యూళ్ళను ఇన్‌స్టాల్ చేస్తాము నంపి, పాండాలు, మాట్‌ప్లోట్‌లిబ్, IPyWidgets దీని ఫలితాలు ల్యాప్‌టాప్‌లలో విలీనం చేయబడ్డాయి జూపిటర్ ల్యాబ్.

ప్యాకేజీ మేనేజర్ ద్వారా జాబితా చేయబడిన పైథాన్ మాడ్యూల్‌లను ఇన్‌స్టాల్ చేసే ముందు pip మేము మొదట ఆల్పైన్ లైనక్స్‌లో సిస్టమ్ డిపెండెన్సీలను పరిష్కరించాలి:

  • g++ — మాడ్యూల్‌లను కంపైల్ చేయడానికి అవసరం, ఎందుకంటే వాటిలో కొన్ని భాషలో అమలు చేయబడతాయి C ++ మరియు బైనరీ మాడ్యూల్స్‌గా రన్‌టైమ్‌లో పైథాన్‌కి కనెక్ట్ చేయండి
  • freetype-dev - పైథాన్ మాడ్యూల్ కోసం ఆధారపడటం మాట్‌ప్లోట్‌లిబ్

డిపెండెన్సీలను ఇన్‌స్టాల్ చేస్తోంది:

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

ఒక సమస్య ఉంది: Alpine Linux పంపిణీ యొక్క ప్రస్తుత స్థితిలో, NumPy యొక్క కొత్త సంస్కరణను కంపైల్ చేయడం సాధ్యం కాదు; నేను పరిష్కరించలేని సంకలన లోపం కనిపిస్తుంది:

ERROR: PEP 517ని ఉపయోగించే మరియు నేరుగా ఇన్‌స్టాల్ చేయలేని నంపీ కోసం చక్రాలను నిర్మించడం సాధ్యపడలేదు

అందువల్ల, మేము ఈ మాడ్యూల్‌ను ఇప్పటికే కంపైల్ చేసిన సంస్కరణను పంపిణీ చేసే సిస్టమ్ ప్యాకేజీగా ఇన్‌స్టాల్ చేస్తాము, కానీ ప్రస్తుతం సైట్‌లో అందుబాటులో ఉన్న దాని కంటే కొంచెం పాతది:

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లో మాడ్యూళ్లను పరీక్షిస్తోంది ^

మీరు నడుస్తున్నట్లయితే జూపిటర్ ల్యాబ్, దీన్ని పునఃప్రారంభించండి, తద్వారా కొత్తగా ఇన్‌స్టాల్ చేయబడిన మాడ్యూల్స్ సక్రియం చేయబడతాయి. దీన్ని చేయడానికి, కన్సోల్ సెషన్‌లో, క్లిక్ చేయండి 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 మీరు దానిని ట్యుటోరియల్స్‌లో కనుగొనవచ్చు ఇక్కడ

ఇంకేం? ^

మీరు అలాగే ఉండి, వ్యాసం చివరకి చేరుకుంటే చాలా బాగుంది. నేను ఉద్దేశపూర్వకంగా ఇన్‌స్టాల్ చేసే ఒక రెడీమేడ్ స్క్రిప్ట్‌ను వ్యాసం చివర పోస్ట్ చేయలేదు జూపిటర్ ల్యాబ్ కార్మికులను ప్రోత్సహించడానికి "ఒక క్లిక్"లో :) కానీ మీరు దీన్ని మీరే చేయవచ్చు, ఎందుకంటే ఒకే బాష్ స్క్రిప్ట్‌లో ఆదేశాలను ఎలా సేకరించారో మీకు ఇప్పటికే తెలుసు :)

నువ్వు కూడా:

  • కంటైనర్‌కు 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 XNUMX:XNUMX — టెక్స్ట్‌లో సరిదిద్దబడిన లోపాలు మరియు “ప్రాథమిక సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయడం మరియు సిస్టమ్‌ను సెటప్ చేయడం” అనే అధ్యాయం మెరుగైన కోసం కొద్దిగా మార్చబడింది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి