ααΎα’αααααααΆααααΆαααααααΆαα½αααΌα α¬α§αααααααααΎααααΆαααααααααααα αααα»αααΈαα»α ααααα·ααααααααΈααααααααααΌαααααΆα αα·αααααααΆαα’αααΈαααΆααα’αααααα»αααααΈααΆαααα α»ααα αααα»αααΌααααααααααααΆααααΎαααΆαααααα·αααα·ααΆ root αα?
ααα»ααααα α»ααααΆαααΆα ααααααΆααα·αααααα·ααΆαααΆ α’αααααααΌαααΆαααΆααααα α¬ααααΎαααΆαααΌαα αααααααααααΆααααααΈααααΌαααααααα ααΎαααΆαααΈααααα½α? αα½ααα α¬αα½αααΆαα?
ααΆαα½αααΉααααΆαααΈααα·αααα·αααααααααααααααα hypervisor αααα αΆααααααα’αΆα
αα·αααααΌαααΆααααααααΆα ααα»ααααααΎααααΌαα
αααΆαααα»ααααΆα? α§ααΆα ααα αα»αααΊααααα
αααα»α LXD ααα’ααααΎααΆαα
ααα
αΆαααΈαα»α
Alpine ααααΎααααΆααααααα»ααααα 7.60MB
RAM αα·ααααααααααααΆαααΆαααΆ root ααΆααααΆαααααααΆααααΈααΆαα
αΆααααααΎα 9.5MB
! αααβαααΆαβααΆβααα Elon Musk? αααα»αααΌαααααΆαα±αααα·αα·αααααΎα αααααααΆαααΆααΌαααααΆααα LXD - αααααααααα»αααΊααααα
αααα»αααΈαα»α
αααααΆααααΈααΆα αααΆααααΆααΆααΌαα ααΆααΎαα»α LXD ααΆα’αααΈα αΎα ααααα ααΎαααααααααα α αΎααα·αααΆααΎααΆαα’αααΈααΎαα‘αΎαααααα·αααΎααΆααααα·ααΆαααααΌααααααααα αααα’αααα’αΆα ααααΎαααΆαααΌααααααΆαααααΆαααΈαααααα»ααααα·ααΆα αααααΎαααααΆα αα ααααΆαα UI-ααΆαα»ααααΆα ααα·ααααααΆααααα (α’αααααααα) ααΆαα½αααΌαααααα’ααα ααααααααΌαααΆαα½αα’αααααααΆαα½α blackjack... ααΆαααααΎαααααααααΆα? αααααααααα»αα’αααααααααα½αα ααα½α? α’αΈαααΆ... α ααααΆα! α αα! π
ααααΎααα αααααααααΆαααααΎαααΉαααΎααα αααα»ααα»ααα½αα ααΌααΈαα‘αΆα - ααααΆαααααααΆααααα ααα»α αααααΆααα’αααααααΎαααα½αα±αα Jupyter Notebook α α½ααααα α αΎαααΎαααααΉαααα‘αΎααααΌαα»α Python ααΌα ααΆ ααΆαααΈ, αααααΆα, αααΆααααααΌααΈα, IPyWidgets αααααΉαα’αα»ααααΆαα±ααα’αααααααΎα’αααΈααααααααΆααααααΆαααΆαααΆαααΎ α αΎααααααΆαα»αααΆααΆααα’αααα αααα»αα―αααΆααα·ααααα½α - αα»αααααΌααααα½ααα IPython α
ααΆααΆα αααα
- αααααΆαα α»αα αααααα
- ααΆαααα‘αΎααα·αααΆαααααααα ααΆααααααααααααααααααΌαααααΆα
- ααΆαααα‘αΎααααααα·ααΈααΌαααααΆα αα·αααα‘αΎααααααααα
- ααΆαααα‘αΎα αα·αααααααα ααΆαααααααα JupyterLab
- ααΆαα ααααααααα·ααααααααΆαα½ααααΆαααΈα
- αα½ααααΈβαα·ααααα!
- ααΆααααααΈααααααααΆααααα Python
- ααΆααααααααΌαα»ααα αααα»α JupyterLab
- ααΎβααΆαβα’αααΈβαααααβααα?
αααααΆαα α»αα αααααα ^
ααΌαβαααβααΆααβαααααΆαβαααααααΆαβααααΈα ααΎααααΈβααααΎβα±ααβααΆβααΆααααβααΆααααα½αβαααααΆααβααΎαβαααα»αβααΆαβα’αα»ααααβααααααβααΆαααΎα
- αααααα‘αΎα αα·αααΎαααααΎαααΆααα»αααΊααααααααα’ααααΎα§αααααα ααα αΆα Alpine ααΈαα»α α. ααΎαααΉαααααΎααΆαα ααα αΆαααα αααααααΆααΆααααααα·α αα½α αααα»α α αΎαααΉαααα‘αΎααααααααα·ααΈαααα αΆαααΆα ααααα»ααα αααα»αααΆ ααααΆαα’αααΈααΆαα’αααααααα
- αααααααααααΆααα·αααα·ααααααααα
αααα»ααα»αααΊααα α αΎαααΆαααααααααΆ -
hostfs
α αΎαααααΆααααΆαα ααααααααα―αααΆα root α ααΆααααααΉαααααΎα±ααααΆα’αΆα ααααΎα―αααΆααα ααΎαααΆαααΈαααΈαααααααΆααααααα±αααα ααΆααααα»ααα»αααΊαααα ααΌα αααα αα·ααααααααααααΎαααΉαα―αααΆαααααΈαα»αααΊαααα ααααα·αααΎαα»αααΊαααααααΌαααΆααα»α αα·ααααααααΉααα ααααΆααα ααΎαααΆαααΈαα ααΌα ααααΆαααααααα αααααααΆααααααααΆααααααααααααααΆααααΆαα ααααααααα·ααααααααΌα ααααΆαααΆααα»αααΆα αααΎαααααα·αααααΎααααααΆααααααΆααααααααΆαααααΆαα ααα αΆααα»αααΊαααα - αααααα‘αΎα Bash, sudo, αααααΆαααα αΆαααΆα α αααααα αα·αααααααα ααΆααααααααα’αααααααΎααααΆαααααααααα
- αααααα‘αΎα Python, modules αα·α compile binary dependencies αααααΆαααα½αααα
- αααααα‘αΎα αα·αααΎαααααΎαααΆα ααΌααΈαα‘αΆαααααΌαααΌαααΆαααΆααααα ααα‘αΎαααααααααααααααααΆααααΆα
αα αααα»αα’ααααααααααΎαααΉαα αΆααααααΎαααΆαα½αααΉαααΆαααΎαααααΎαααΆααα»αααΊαααααΎαααΉααα·ααα·α αΆαααΆααΆαααα‘αΎααα·αααααααα ααΆαααααααα LXD ααα’αααα’αΆα ααααΎαααΆααα’ααααααα αααα»αα’ααααααα½ααααααααα - αααααααα·αααααΆααΌαααααΆααα LXD - αααααααααα»αααΈαα»α .
ααΆαααα‘αΎααα·αααΆαααααααα ααΆααααααααααααααααααΌαααααΆα ^
ααΎααααααΎααα»αααΊααααααααααΎααΆααααααααΆαααααΎααααααΆααααΌαααΆα - alpine3
, α§ααααααααααα’ααααααααΆααααααΆαααα»α - jupyterlab
α αΎαααΎα
αΆαααΆα
α ααααααα
ααΆααααααααααααααα
lxc init alpine3 jupyterlab --profile=default --profile=hddroot
αα
ααΈααααααα»ααααα»αααααΎααααααααααααα
ααΆαααααααα hddroot
ααααααααΆααααΎααααΈαααααΎααα»αααΊααααααααΆαααΆαααΆαααΆ root αα
αααα»α α’αΆααααα»ααα»α αααααΆαααΈααΆαααα
ααΎααΆαααΉα 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
αααα
ααα’α»ααααα αΆαααΆ columns αααα αΆαα
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+
αα
ααααααααΎααα»αααΊααα α’αΆααααααΆα IP ααααΌαααΆαααααΎαααΎααααα
ααααα αααααΆαααΎαααααΎααααααααααααα
ααΆαααααααα default
αααααααΌαααΆαααααααα
ααΆααααααααααΈαα»ααα
αααα»αα’ααααα αααααααα·αααααΆααΌαααααΆααα LXD - αααααααααα»αααΈαα»α
.
ααΎαααΉαααααΆααααααΌαα’αΆααααααΆα 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 |
+------------+---------+------------------+--------------+
ααΆαααα‘αΎααααααα·ααΈααΌαααααΆα αα·αααα‘αΎααααααααα ^
ααΎααααΈααααααααααα»αααΊαααααααααΎα α’αααααααΌαααα‘αΎααααααα·ααΈααΆααααααα
αααα
αααααΆαα·α
ααΆααα·αααααΆ
bash
αααα GNU Bourne Again
ααΆααααα
αα bash
ααΆαβαααα
ααβαααααα·ααΈβαααααΆααβααα bash
sudo
αααααα±ααα’αααααααΎααααΆααααΆααααΆααααΌααααααααΆααααα»αααΆαααααΎαααΆαααΆααααααααΆαα½αα
ααα½αααΆ root
αααααα
αα»αα§ααααααααααααααααΆααααααααΆαα αα·αααααΈαααααΆαααΆαααΆαααααααααΆααα―αααΆααααααα αα·α PAM
tzdata
ααααααααααΆααααααααααααααΆ αα·ααα·αααααααααααααΆααααααααααΊαααα
nano
ααααΌααααααα·ααΈαα·αααα Pico ααΆαα½αααΆααααααα’
ααΎαααΈααα α’αααα’αΆα
ααα‘αΎαααΆαααΆαααααα
αααα»α system man-pages αααααα‘αΎααααα
ααααΆαααααα β man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano
ααΌααααα‘ααααΎαααΆααααααααΆ αα·αααΌααααααααΎαααΆαααααΎα
lxc
- α α ααΌαααααααα α’αα·αα·αα LXDexec
- αα·ααΈααΆαααααα’αα·αα·αα LXD αααααααΎαααΆαααΆααααααααΆαα αααα»ααα»αααΊαααjupyterlab
- ααααααααΆαααα»αααΊααα--
- ααΌααααα·αααααααααααΆαααα·αα±ααααααααΆαααααααααααΆααΌααααααααΆααlxc
α αΎαααααααΆααααααα’ααααααααα αααααΌα αα ααΉααα»αααΊαααapk
- αααααα·ααΈααααααααααααα ααα ααα αΆαααΈαα»α Alpineadd
- αα·ααΈααΆαααααααααααααααααα αααααααα‘αΎααααα αααααααΆααααααΆαααααααΆααααΈααΆααααααααΆ
αααααΆαααα ααΎαααΉααααααααααααααααααΆαα
αααα»αααααααααα 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
ααΆαααααΆααααα½αααΆααΊαααααααααααΆαα Alpine Linux αα·ααα·ααααααααα αΆααααααααα ααα»ααααα’αααα’αΆα
ααΆαααΆαα
ααα
αΆααα»αααααΆ α αΎαα’αααααααΌααααααααΆααααα―αααΆαααααΆααΎααΆαααα α»ααα
αααααααΎαααΆα 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
Alpine Linux ααα‘αΎαααααααααααααααααΆααα’αααααααΎααααΆαα /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 ααΌα
ααααααααΌαααΎαααααΌαααα‘αΎααααααα·ααΈαααααααααα ααααα ααΌααΈαα‘αΆα ααΎαααΉαααα‘αΎααααααααΎαααααα·ααΈααααααααααααα
αα 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
α αΆααααΆααααΈααααααααααααα αααα»α ααΌααΈαα‘αΆα ααΊααΆααΆααα·ααααα α αΎααα·αααααΌαααΆαααΉααααααΌαααΆααααΌαααΆαααΆαα½ααααα αα 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
- ααααα UIjupyterlab_neon_theme
- ααααα UIjupyterlab-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
- αααααΆααααααΌααα αααα»ααα»αααΊαααααα 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 - αααααααααα»αααΈαα»α
.
αααααααΆαα’αα»ααααΆααα
ααΎαααΆαααΈα αααααα
αΆααααΉαααΆα’αααααααΎααααΆαααα»αααΊααα jupyter
αα·αα’ααα $USER
ααΉααααααΆααα’αααααααΎααααΆαααααΆαααΈαααααα’αααααΆαααα»αα
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks
αα½ααααΈβαα·ααααα! ^
ααααα·αααΎα’ααααα
ααααΆααααααα»αααΌαααΎααα
αααα»ααα»αααΊαααααΆαα½α ααΌααΈαα‘αΆααααααΆααααα
αΆααααααΎαααΆα‘αΎααα·ααααααααΎααααααΈα --notebook-dir
ααααααααααααα /mnt/hostfs
ααΆααααΌααα
ααΆαα root αααα»αααααΌααααα½ααααα
αααα»ααα»αααΊααααααααΆααα§ααααααααααΎαααΆααααααΎααααα»αααα αΆααα»αα
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
αααααΆααααα αΌααα ααΆααααααα http://10.0.5.5:8888 α αΎααααααΎααα»αααααΌααααα½αααααααΌαααααα’ααααααα α»α αααΌαα»ααα ααΎαααααααΌα αααα αΆααααα»αααΌαααΆαααΆααααααα
αααααΆαααα αα
αααα»αααΆααα
ααΎααααα ααΌααααα
αΌαααΌα Python αααααΉααααα αΆαα’αααααα»ααΆα Hello World!
. αα
αααα’αααααΆααααα
ααααΆααααα
αΌαααΌαα
α»α
CTRL+ENTER
α¬αααΌαα»α "ααα" αα
ααΎαααΆαα§ααααααα
αααααααΆαααΎααΎααααΈα±αα JupyterLab ααααΎααΌα
αααα
αα αααααα α’αααΈαααααΎααααα½α ααΆαααααααΆααααΆαααααΎααααΆαα ααα»ααααααΆααΉααα·ααα½αα±ααα αΆααα’αΆαααααααα ααααα·αααΎααΎααα·αααα‘αΎααααΌαα»α Python αααααα (αααααα·ααΈααααααααα) αααα’αΆα αααααΈααααααααΆααααααααΆααααα Python αααΆαααααΆαααα αααα»α ααΌααΈαα‘αΆαααΌα ααααααΌααααααα αα»αααα :)
PS α’αααΈααααα½αα±ααα
αΆααα’αΆαααααααααααΊααΆααΆαα’αα»ααααα
αΆαα αα·α αα
ααααααααααααΌα αα»αααααΌααααα½ααα Jupyter αα·αβααΆαβαα
βααααΆαβααβα αΎαβααΆβααΆαβααααβααΆαα½αβααΉαβ ααΌααΈαα‘αΆα. ααΎααααΈααααΌααα
ααααα
αΆαα ααΌαααααΎααΆααααααααααααααα
αα
αααα
αααα»αα’αΆααααααΆα/tree
α αΎαααΆαααααΆααααααΌααα
ααααααααΈααααΌαααΆαα’αα»ααααααΆαα½ααα
αα
αα /lab
ααα»ααααααΆαα·αα
αΆαααΆα
ααααααΆααααα
- ααααα αααααααΆ Jupyter - http://10.0.5.5:8888/tree
- αααααΈααα·ααααα Jupyter - http://10.0.5.5:8888/lab
ααΆααααααΈααααααααΆααααα Python ^
αα αααα»ααααααααα ααΎαααΉαααα‘αΎααααΌαα»αααΆααΆ Python αααααΆαα’αα»ααΆαααΌα ααΆ ααΆαααΈ, αααααΆα, αααΆααααααΌααΈα, IPyWidgets ααααααααααΌαααΆααααα αΌααα αααα»ααα»αααααΌααααα½ααα ααΌααΈαα‘αΆα.
αα»ααααααα‘αΎααααΌαα»α Python αααααΆαααΆααααααΈααΆαααααααααα·ααΈααααααααααααα
αα pip
ααααΌαααΎαααααΌααααααααΆαααΆαα’αΆααααααααααααααααα
αααα»α Alpine Linuxα
g++
- ααααΌαααΆααααααΆααααΆαα ααααααααΌαα»α αααααΆααα½αααΆααααααααΌαααΆαα’αα»ααααααΆααΆααΆ C ++ α αΎαααααΆαααα Python αα αααααααΎαααΆαααΆαααΌαα»ααααααΈαfreetype-dev
- ααΆαα’αΆααααααααααΆαααααΌαα»α Python αααΆααααααΌααΈα
ααΆαααα‘αΎαααΆαα’αΆαααααα
lxc exec jupyterlab -- apk add g++ freetype-dev
ααΆααααα αΆαα½αα αα αααα»αααααΆαααΆααα αα α»ααααααααααΆαα ααα αΆα Alpine Linux ααΆααΉααα·αα’αΆα α αααααααααααααΈαααα NumPy ααΆααα ααα α»ααααα»αααΆαα αααααααΉαααα α‘αΎαααααααα»ααα·αα’αΆα αααααααΆαααΆαα
ααα α»αα αα·αα’αΆα αααααΎαααααααααΆαα 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/*
ααΆααααααααΌαα»ααα αααα»α 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 αα ααΎααααααααααΆαα’ααααααααα’ααααααααααΆαα½αααΌαααααα αα·ααααααα αααΆααααααΌααΈα αααα αΆαααααααααααΌααααα»αααααααααΌαααΆαααΆααααΆα αααα»αααΆαα
α§ααΆα αααααΆα αααΎαα IPyWidgets α’αααα’αΆα ααααΎαααΆαα αααα»αααααα αα ααΈααα
ααΎβααΆαβα’αααΈβαααααβααα? ^
ααααΎααΆαααα’ααααα·αααΎα’αααααααΆαααα α αΎαααΆααααα α»ααααα ααααα’αααααα αααα ααααΆ αααα»ααα·ααααα ααααααααΈααααααααααα½α ααΆααααα αα α α»ααααα ααααα’ααααααααααΉαααα‘αΎααααααα ααΌααΈαα‘αΆα αα αααα»α "α α»α αα½α" ααΎααααΈααΎαααΉαα α·ααααααααα :) ααα»ααααα’αααα’αΆα ααααΎααΆααααααα½αα―αααΆα α αΆααααΆααααΈα’αααααΉαααΈαααααα½α α αΎα αααααΆααααααΌαααΆααααααααΆαα ααΆα’αααα Bash αααα½α :)
α’αααβααβα’αΆα βααα:
- αααααααααααααααΆααααααΆαααα»αααΊααααααα½αα±ααα’αΆααααααΆα IP ααααααααααΆαααααΆαααα
/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 β ααααα α»ααααααΆαααααΎααα
αααα»αα’ααααα αα·αααΆαααααΆααααααΌαααααα·α
ααααα½α
αααααΆααααααΌα βααΆαααα‘αΎααααααα·ααΈααΌαααααΆα αα·αααΆαααα‘αΎαααααααααβ
ααααα: www.habr.com