áľá áá°á¨áłá áľáááą áááá¨áá áĽá áááá ááá ááááá¨áľ ᨠ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