ืืึธืื ืืืจ ืืืฅ ืืขืืื ืฆื ืขืงืกืคึผืขืจืืืขื ื ืืื ืงืึธื ืึธืืขืจ ืกืืกืืขื ืืืืืืึทืืื ืืื ืืื ืืงืก, ืึทืืื ื ืืฉื ืฆื ืืึธืจื ืืืขืื ืื ืืึทืืข ืกืืกืืขื ืืื ื ืืฉื ืฆืขืืึธืื ืึทืืฅ ืืื ืคืึทื ืคืื ืึท ืืขืืช ืืื ืื ืงืึธื ืืืึธืก ืืึธื ืืืืคื ืืื ืืืึธืจืฆื ืคึผืจืืืืืืึทืืืฉืึทื?
ืึธืืขืจ ืืืึธืก ืืืขืื ืืขื ืคืึทืงื ืึทื ืืึธืื ืก ืืึธืื ืืืจ ืืึทืจืคึฟื ืฆื ืคึผืจืืืืจื ืึธืืขืจ ืืืืคื ืึท ืืึทื ืฅ ืงื ืืื ืคืื ืคืึทืจืฉืืื ืืืงืจืึธ ืืึทืืื ืื ืืก ืืืืฃ ืืืื ืืึทืฉืื? ืืื ืืขืจื ืืืขืจ ืืคืืื ืืืืื ื?
ืืื ืืืืจืืืึทื ืืืฉืื ืขื ืืขืจืืื ืืืจื ืึท ืืืืคึผืขืจืืืืืืขืจ, ืึทืืึท ืคึผืจืึธืืืขืืก ืงืขื ืขื ืืื ืืืขื ืืืื ืกืึทืืืื, ืึธืืขืจ ืืื ืืืึธืก ืคึผืจืืึทื? ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืึท ืงืึทื ืืืื ืขืจ ืืื LXD ืืืืืจื ืืืืฃ ืื ืึทืืคึผืืื ืืื ืืงืก ืคืึทืจืฉืคึผืจืืืืื ื ืงืึทื ืกืืื ืืืืื 7.60MB
ืืึทืจืึทื, ืืื ืืื ืืขืจ ืืืึธืจืฆื ืฆืขืืืืืื ื ืึทืงืืึทืคึผืืื ื ืึธื ืกืืึทืจืืึทืคึผ 9.5MB
! ืืื ืืึธื ืืืจ ืืื ืึทื, ืขืืึธื ืืืกืง? ืืื ืจืขืงืึธืืขื ืืืจื ืืฉืขืง ืืืืก ืืงืขืจืืืง ืงืืืคึผืึทืืืืึทืืื ืคืื LXD - ืึท ืงืึทื ืืืื ืขืจ ืกืืกืืขื ืืื ืืื ืืงืก
ื ืึธื ืขืก ืืื ืืขืืืืจื ืงืืึธืจ ืืื ืึทืืืขืืืื ืืืึธืก LXD ืงืึทื ืืืื ืขืจื ืืขื ืขื, ืืึธืืืจ ืืืื ืืืืึทืืขืจ ืืื ืืจืึทืืื, ืืืึธืก ืืืื ืขืก ืืื ืืขืืืขื ืึทืืึท ืึท ืืึทืจืืืึทืกืืขืจ ืคึผืืึทืืคืึธืจืืข ืืื ืืืจ ืงืขื ืขื ืืขืฉืึธืืขื ืืืืคื ืงืึธื ืคึฟืึทืจ ืื ืืึทืืขืืึธืก, ืืืฉืขื ืขืจืืื ืืจืึทืคืก, ืืื ืึทืืืงืึทืืื (ืื ืืขืจืึทืงืืืืืื) ืคึฟืึทืจืืื ืืื ื UI ืืืืืืฉืืฅ ืืื ืืืื ืงืึธื, ืืขืกืึธืคืข ืื ืงืึธื ืืื ืืขืงืกื ืืื ืืืึทืงืืืฉืึทืง ... ืคืึธืจืืึทืืืื ื? ืขืืืขืืข ืกืึธืจื ืคืื ืื ืืขืจืึทืงืืืื ืืืึธื? ืืืึทื... ืืื ืืืื ืขืก! ืืืืื! ๐
ืงืืง ืืื ืืขืจ ืื ืงืึทืฅ ืืื ืืืจ ืืืขืื ืงืึทืืขืจ ืืื ืึท ืงืึทื ืืืื ืขืจ ืืืฉืืคึผืืืขืจ ืืึทื - ืืขืจ ืืืืึทืืขืจ ืืืจ ืคืื ืืึทื ืืฆืขืจ ืฆืืืื ื ืึทื ืฉืืึธื ืคืื ืื ืึทืืืืืืืื ืืืฉืืคึผืืืขืจ ื ืึธืืืืืง, ืืื ืืืจ ืืืขืื ืืืื ืื ืกืืึทืืืจื ืคึผืืืืึธื ืืึทืืืฉืืื ืึทืืึท ืืื ื ืืืคึผื, ืคึผืึทื ืืึทืก, matplotlib, IPyWidgets ืืืึธืก ืืืขื ืืึธืื ืืืจ ืฆื ืืึธื ืึทืืฅ ืืืกืืขื ืืืืื ืืื ืจืึทืืขืืืขื ืขืก ืึทืืข ืืื ืึท ืกืคึผืขืฆืืขื ืืขืงืข - ืึทื IPython ืืึทืคึผืืึทืคึผ.
ื ืึทืืืืืึทืฆืืข
- ืึธืจืืึทืืึทื ื ืขืืขื-ืึทืืืขืง ืคึผืืึทื
- ืืึทื ืืึธื ืืืจืื ื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืื ืืงืขืจืืืง ืกืืกืืขื
- ืื ืกืืึธืืื ื ืืงืขืจืืืง ืืืืืืืืืจื ืืื ืืึทืฉืืขืืืงื ืื ืกืืกืืขื
- ืื ืกืืึธืืื ื ืืื ืงืึทื ืคืืืืขืจ JupyterLab
- ืืึทื ืืืืืื ื ืืึทืื ืืื ืืขืจ ืืึทืืขืืึธืก
- ืืขืื ืืืขืื!
- ืืงืกืคึผืึทื ืืื ื ืื ืงืืืคึผืึทืืืืึทืืื ืคืื Python
- ืืขืกืืื ื ืืึทืืืฉืืื ืืื JupyterLab
- ืืืืก ื ืื?
ืึธืจืืึทืืึทื ื ืขืืขื-ืึทืืืขืง ืคึผืืึทื ^
ืืื ืก ืึทืืืืืื ืึท ืงืืจืฅ ืงืึทืืฃ ืคึผืืึทื ืฆื ืืึทืื ืขืก ืืจืื ืืขืจ ืคึฟืึทืจ ืืื ืื ืฆื ืื ืกืืจืืืขื ื ืื ืกืืขืืข ืืืืื:
- ืืึธืืืจ ืื ืกืืึทืืืจื ืืื ืงืึทืืขืจ ืึท ืงืึทื ืืืื ืขืจ ืืืืืจื ืืืืฃ ืื ืคืึทืจืฉืคึผืจืืืืื ื ืื ืืืขื ืืึทืจ ืึทืืคึผืืื ืืื ืืงืก. ืืืจ ืืืขืื ื ืืฆื ืืขื ืคืึทืจืฉืคึผืจืืืืื ื ืืืืึทื ืขืก ืืื ืึทืืืขื ืฆื ืืื ืึทืืึทืืืืึทื ืืื ืืืขื ืื ืกืืึทืืืจื ืืืืื ืื ืืขืจืกื ื ืืืืืง ืืืืืืืืืจื ืืื ืขืก, ืืึธืจื ืืฉื ืืืขืจืืง.
- ืืึธืืืจ ืืืืื ืึทื ื ืึธื ืืืืจืืืึทื ืืืกืง ืืื ืืขื ืงืึทื ืืืื ืขืจ ืืื ืืขืื ืขืก ืึท ื ืึธืืขื -
hostfs
ืืื ืึธื ืงืืึทืคึผื ืขืก ืฆื ืื ืืืึธืจืฆื ืืขืงืข ืกืืกืืขื. ืืขืจ ืืืกืง ืืืขื ืืึทืื ืขืก ืืขืืืขื ืฆื ื ืืฆื ืืขืงืขืก ืืืืฃ ืืขืจ ืืึทืืขืืึธืก ืคึฟืื ืึท ืืขืืขืื ืืืขืืืืืึทืืขืจ ืืื ืืขื ืงืึทื ืืืื ืขืจ. ืืืื, ืืื ืืืขืจ ืืึทืื ืืืขื ืืืื ืคืจืืึท ืคืื ืืขื ืงืึทื ืืืื ืขืจ. ืืืื ืืขืจ ืงืึทื ืืืื ืขืจ ืืื ืืืืกืืขืืขืงื, ืื ืืึทืื ืืืขื ืืืืึทืื ืืืืฃ ืืขืจ ืืึทืืขืืึธืก. ืืขืจ ืกืืขืืข ืืื ืืืื ื ืืฆืืง ืคึฟืึทืจ ืืึทื ืืืืืื ื ืื ืืขืืืข ืืึทืื ืฆืืืืฉื ืคืืืข ืงืึทื ืืืื ืขืจื ืึธื ื ืืฆื ืื ื ืึธืจืืึทื ื ืขืฅ ืืขืงืึทื ืืืึทืื ืคืื ืื ืงืึทื ืืืื ืขืจ ืคืึทืจืฉืคึผืจืืืืื ื. - ืืึธืืืจ ืื ืกืืึทืืืจื Bash, sudo, ืื ื ืืืืืง ืืืืืจืขืจืื, ืืืืื ืืื ืงืึทื ืคืืืืขืจ ืึท ืกืืกืืขื ืืึทื ืืฆืขืจ
- ืืึธืืืจ ืื ืกืืึทืืืจื ืคึผืืืืึธื, ืืึทืืืฉืืื ืืื ืฆืื ืืืคื ืขืืขื ืืืื ืขืจื ืืืคึผืขื ืืึทื ืกืื ืคึฟืึทืจ ืืื
- ืืื ืก ืื ืกืืึทืืืจื ืืื ืงืึทืืขืจ ืืืฉืืคึผืืืขืจ ืืึทื, ืงืึทืกืืึทืืืื ืื ืืืืกืืขื, ืื ืกืืึทืืืจื ืืงืกืืขื ืฉืึทื ื ืคึฟืึทืจ ืขืก.
ืืื ืืขื ืึทืจืืืงื ืืืจ ืืืขืื ืึธื ืืืืื ืืื ืงืึทืืขืจ ืืขื ืงืึทื ืืืื ืขืจ, ืืืจ ืืืขืื ื ืืฉื ืืึทืืจืึทืืื ืื ืกืืึธืืื ื ืืื ืงืึทื ืคืืืืขืจ 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
, ืึทืืื ืืืจ ืืึทืจืคึฟื ืฆื ืึธื ืืืืื ืขืก ืืืจื ืืืืคื ืื ืื ืื ืกืืกืืขื ืืื ืขืก:
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 - ืืื ืืงืก ืงืึทื ืืืื ืขืจ ืกืืกืืขืืขื.
ืืืจ ืืืขืื ืืืืฉื ืืขื 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 |
+------------+---------+------------------+--------------+
ืื ืกืืึธืืื ื ืืงืขืจืืืง ืืืืืืืืืจื ืืื ืืึทืฉืืขืืืงื ืื ืกืืกืืขื ^
ืฆื ืคืืจื ืืื ืืืขืจ ืงืึทื ืืืื ืขืจ, ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื ืื ืคืืืืขื ืืข ืืืืืืืืืจื:
ืคึผืขืงื
ืืึทืฉืจืืึทืืื ื
ืืึทืฉ
ืื GNU Bourne Again ืฉืึธื
ืืึทืฉ-ืงืึธืืคึผืืขืฉืึทื
ืคึผืจืึธืืจืึทืืืึทืืืข ืงืึทืืคึผืืืฉืึทื ืคึฟืึทืจ ืื ืืึทืฉ ืฉืึธื
ืกืืืึธ
ืืขืื ืืืืขืจ ื ืืฆืขืจืก ืื ืคืืืืงืืื ืฆื ืืืืคื ืขืืืขืืข ืงืึทืืึทื ืื ืืื ืืืึธืจืฆื
ืฉืึธืื
ืฉืคึผืจืืืืืึธืจื ืืื ืืฉืืื ืคืึทืจืืืึทืืืื ื ืืขืฆืืึทื ืกืืืื ืืื ืฉืืืฆื ืคึฟืึทืจ ืฉืึธืื ืืขืงืขืก ืืื 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
- ืงืึทื ืืืื ืขืจ ืฉืืึทื--
- ื ืกืคึผืขืฆืืขืืข ืฉืืืกื ืืืึธืก ืกืคึผืขืฆืืคืืฆืืจื ื ืืฉื ืฆื ืืืึทืืฉื ืืืืึทืืขืจ ืฉืืืกืืขื ืืื ืฉืืืกืืขื ืคึฟืึทืจ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 ืคึฟืึทืจ ื ืืึทืข ื ืืฆืขืจืก ืืื ืืขื ืงืึทื ืืืื ืขืจ, ืืื ืื ืคืืืืขื ืืข ืกืืขืคึผืก, ืืืจ ื ืึธืืืึทืื ืืจืืื-ืืขืืืื ืกืงืขืขื ืืขืงืขืก ืคึฟืื ืืขืจ ืืึทืืขืืึธืก ืกืืกืืขื ืฆื ืขืก. ืืึธืก ืืืขื ืืึธืื ืืืจ ืฆื ืืึทืคืจืืืืงื ืืึทืฉ ืืื ืึท ืงืึทื ืืืื ืขืจ ืื ืืขืจืึทืงืืืืืขืื. ืืืึทื ืืึทืืขืืึธืก ืกืืกืืขื ืืื ืืึทื ืืืฉืึทืจืึธ ืืื ืืงืก ืืื ืื ืืขืงืขืก ืืขื ืขื ืงืึทืคึผืื /etc/skel/.bash_profile
, /etc/skel/.bashrc
, /etc/skel/.dir_colors
ืืื ืคึผืจืื ืฆืืคึผ, ืืื ืืขื ืขื ืคึผืึทืกืืง ืคึฟืึทืจ ืึทืืคึผืืื ืืื ืืงืก ืืื ืืึธื ื ืื ืคืึทืจืฉืึทืคื ืงืจืืืืฉ ืคึผืจืึธืืืขืืก, ืึธืืขืจ ืืืจ ืงืขื ืืึธืื ืึท ืึทื ืืขืจืฉ ืคืึทืจืฉืคึผืจืืืืื ื ืืื ืืืจ ืืึทืจืคึฟื ืฆื ืื ืืืคึผืขื ืืึทื ืืื ืจืขืืขื ืขื ืืืื ืขืก ืืื ืึท ืืขืืช ืืืขื ืืืจ ืืืืคื 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
ืคึฟืึทืจ ืึท ืืืืืกืืื ื ืืืึธืจืฆื ืืึทื ืืฆืขืจ, ื ืึธืืืึทืื ืื ืกืงืขืืข ืืขืงืขืก ืคึผืื ืงื ืงืึทืคึผืื ืืื ืืขื ืงืึทื ืืืื ืขืจ ืฆื ืื ืืืื ืืืขืืืืืึทืืขืจ:
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 ^
ืืืฉืืคึผืืืขืจ ืืึทื ืืื ืึท ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื, ืึทืืื ืืืจ ืืืื ืขืจืฉืืขืจ ืื ืกืืึทืืืจื ืืขื ืืืขืจืืขืฆืขืจ. ืืืื, ืืืฉืืคึผืืืขืจ ืืึทื ืืืจ ืืืขืื ืื ืกืืึทืืืจื ื ืืฆื ืื Python ืคึผืขืงื ืคืึทืจืืืึทืืืขืจ 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 ืึทื ืืืืืงืืื ื ืืื ื ืืฉื ืคืึทืจืึทื ืืืืึธืจืืืขื:
ืึธืืขืจ, ืืืจ ืืืึธืืืจื ืื ืืื ืฆืข ืืืฉืืคึผืืืขืจ ืืึทื ืืื ืฉืืขืื ืขืก ืืื ืึท ืงืึทื ืืืื ืขืจ ืึทืืื ืึทื ืืจืื-ืคึผืึทืจืืื ืืงืกืืขื ืฉืึทื ื ืืืึธืก ืืึทืจืคื ืืื ื ืืฆื 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 - ืืื ืืงืก ืงืึทื ืืืื ืขืจ ืกืืกืืขืืขื.
ืฉืืขืื ืื ืืขืจืืืืืขื ืืฉ ืืืืฃ ืืขืจ ืืึทืืขืืึธืก, ืืื ืื ืืึทืืืฆืขืจ ืืืขื ืืืื ืืขืจ ืืึทื ืืฆืขืจ ืืึทื ืืฆืขืจ 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 ืืื ืฉืึทืคึฟื ืืืื ืขืจืฉืืขืจ ืืึทืคึผืืึทืคึผ ืืืจื ืืขืื ืึท ืงืืืง ืืขื ืงื ืขืคึผื ืืืืฃ ืื ืืืึทื ืืื ืืขืืืืื ืืื ืื ืืืื ืืื ืื:
ืืขืจื ืึธื, ืืื ืื ืคืขืื ืืืืฃ ืืขื ืืืึทื, ืึทืจืืึทื ืื ืคึผืืืืึธื ืงืึธื ืืืึธืก ืืืขื ืึทืจืืืกืืืืึทืื ืื ืงืืึทืกืืฉ Hello World!
. ืืืขื ืืืจ ืืึธื ืคืึทืจืืืง ืึทืจืืึทื, ืืจืืงื CTRL+ENTER
ืึธืืขืจ ืื "ืฉืคึผืื" ืงื ืขืคึผื ืืืืฃ ืื ืืืฉืืจ ืืื ืื ืฉืคึผืืฅ ืฆื JupyterLab ืืึธื ืืึธืก:
ืืื ืืขื ืคืื ื, ืึผืืขื ืึทืืฅ ืืื ืืจืืื ืคึฟืึทืจ ื ืืฆื, ืึธืืขืจ ืขืก ืืืขื ืืืื ืึทื ืื ืืจืึทืกืืื ื ืืืื ืืืจ ืืึธื ื ืื ืื ืกืืึทืืืจื ื ืึธื ืคึผืืืืึธื ืืึทืืืฉืืื (ืคืื-ืคืืขืืืฉื ืึทืคึผืืึทืงืืืฉืึทื ื) ืืืึธืก ืงืขื ืขื ืืืืืืืืง ืืงืกืคึผืึทื ื ืื ื ืึธืจืืึทื ืงืืืคึผืึทืืืืึทืืื ืคืื ืคึผืืืืึธื ืืื. ืืืฉืืคึผืืืขืจ ืืึทืืืขืจืืืขืจ, ืืึธืืืจ ืคืึธืจืืขืฆื :)
ืคึผืก ืื ืืฉืืงืึทืืืข ืืึทื ืืื ืึทื ืื ืึทืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืืืฉืืคึผืืืขืจ ืืื ืืขืจ ืงืึธื ื ืึธืืขื ืืืฉืืคึผืืืขืจ ื ืึธืืืืืง ืืื ื ืื ืึทืืืขืง ืืื ืขืก ืืืืืกืฅ ืืื ืคึผืึทืจืึทืืขื ืืื ืืืฉืืคึผืืืขืจ ืืึทื. ืฆื ืืึทืฉืืืืขื ืฆื ืื ืึทืื ืืืขืจืกืืข, ื ืึธืืืืื ืื ืืื ืง ืฆื ืืืืื ืื ืกืึทืคืืงืก ืืื ืื ืึทืืจืขืก/tree
, ืืื ืื ืืืขืจืืึทื ื ืฆื ืื ื ืืึทืข ืืืขืจืกืืข ืืื ืืืจืืืขืงืึธืื ืืื ืื ืกืึทืคืืงืก /lab
, ืึธืืขืจ ืขืก ืืึทืจืฃ ื ืื ืืืื ืกืคึผืขืฆืืคืืฆืืจื:
- ืืืฉืืคึผืืืขืจ ื ืึธืืืืืง - http://10.0.5.5:8888/tree
- ืืืฉืืคึผืืืขืจ ืืึทื - http://10.0.5.5:8888/lab
ืืงืกืคึผืึทื ืืื ื ืื ืงืืืคึผืึทืืืืึทืืื ืคืื Python ^
ืืื ืืขื ืึธืคึผืืืืืื ื, ืืืจ ืืืขืื ืื ืกืืึทืืืจื ืึทืืึท ืฉืืึทืจืง ืคึผืืืืึธื ืฉืคึผืจืึทื ืืึทืืืฉืืื ืืื ื ืืืคึผื, ืคึผืึทื ืืึทืก, matplotlib, IPyWidgets ืื ืจืขืืืืืึทืื ืคืื ืืืึธืก ืืขื ืขื ืื ืึทืืจืืืืื ืืื ืืึทืคึผืืึธืคึผืก ืืืฉืืคึผืืืขืจ ืืึทื.
ืืืืืขืจ ืืืจ ืื ืกืืึทืืืจื ืื ืืืกืืขื ืคึผืืืืึธื ืืึทืืืฉืืื ืืืจื ืื ืคึผืขืงื ืคืึทืจืืืึทืืืขืจ pip
ืืืจ ืืืื ืขืจืฉืืขืจ ืืึทืืื ืกืืกืืขื ืืืคึผืขื ืืึทื ืกืื ืืื ืึทืืคึผืืื ืืื ืืงืก:
g++
- ื ืืืืืง ืคึฟืึทืจ ืงืึทืืคึผืืืืื ื ืืึทืืืฉืืื, ืืืืึทื ืขืืืขืืข ืคืื โโืืื ืืขื ืขื ืืืคึผืืึทืืขื ืึทื ืืื ืืขืจ ืฉืคึผืจืึทื C ++ ืืื ืคืึทืจืืื ืื ืฆื ืคึผืืืืึธื ืืื ืจืื ืืืืข ืืื ืืืื ืขืจื ืืึทืืืฉืืืfreetype-dev
- ืืขืคึผืขื ืืขื ืกื ืคึฟืึทืจ ืคึผืืืืึธื ืืึธืืืืข matplotlib
ืื ืกืืึธืืื ื ืืืคึผืขื ืืึทื ืกืื:
lxc exec jupyterlab -- apk add g++ freetype-dev
ืขืก ืืื ืืืื ืคึผืจืึธืืืขื: ืืื ืืขื ืงืจืึทื ื ืฉืืึทื ืคืื ืื ืึทืืคึผืืื ืืื ืืงืก ืคืึทืจืฉืคึผืจืืืืื ื, ืขืก ืืืขื ื ืื ืืืื ืืขืืืขื ืฆื ืืึทืืืขื ืื ื ืืึทืข ืืืขืจืกืืข ืคืื โโNumPy; ืึท ืืึทืืืื ื ืืขืืช ืืืขื ืืขืจืฉืืึทื ืขื ืึทื ืืื ืงืขื ื ืืฉื ืืึทืืื:
ืืจืืึทื: ืงืขื ื ืืฉื ืืืืขื ืืืืื ืคึฟืึทืจ ื ืึทืืคึผื ืืืึธืก ื ืืฆื 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 ืืืฉืขื ืขืจืืืฅ ืึท ืื ืขืืขืืขื ื ืืืืฃ ืืขื ืืืึทื ืืืึธืก ืื ืืขืจืึทืงืฅ ืื ืืขืจืึทืงืืืืืื ืืื ืื ืืงืืจ ืงืึธื, ืืื ืืืื matplotlib ืืืกืคึผืืืื ืื ืจืขืืืืืึทื ืคืื ืื ืงืึธื ืืื ืื ืคืึธืจืขื ืคืื ืึท ืืืื ืืื ืึท ืคืื ืงืฆืืข ืืจืึทืคืืง:
ืคืืืข ืืืืฉืคืืื IPyWidgets ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืขืก ืืื ืืืืึธืจืืึทืื ืืึธ
ืืืืก ื ืื? ^
ืืื ืืขืืื ืืืื ืืืจ ืกืืืื ืืื ืจืืืฉื ืื ืกืืฃ ืคืื ืืขื ืึทืจืืืงื. ืืื ืืืืืืจืึทื ื ืืฉื ืคึผืึธืกืื ืึท ืคืึทืจืืืง ืฉืจืืคื ืืื ืื ืกืืฃ ืคืื ืืขื ืึทืจืืืงื ืืืึธืก ืืืึธืื ืื ืกืืึทืืืจื ืืืฉืืคึผืืืขืจ ืืึทื ืืื "ืืืื ืงืืืง" ืฆื ืืืืืงื ืืืึธืจืงืขืจืก :) ืึธืืขืจ ืืืจ ืงืขื ืขื ืืึธื ืขืก ืืื, ืืืืึทื ืืืจ ืฉืืื ืืืืกื ืืื, ืืืืื ืืขืืืืื ืื ืงืึทืืึทื ืื ืืื ืึท ืืืื ืืึทืฉ ืฉืจืืคื :)
ืืืจ ืงืขื ื ืืืื:
- ืฉืืขืื ืึท ื ืขืฅ ื ืึธืืขื ืคึฟืึทืจ ืืขื ืงืึทื ืืืื ืขืจ ืึทื ืฉืืึธื ืคืื ืึทื 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/40 XNUMX:XNUMX - ืงืขืจืขืงืืึทื ืขืจืจืึธืจืก ืืขืคึฟืื ืขื ืืื ืืขื ืืขืงืกื ืืื ืึท ืืืกื ืืฉืืื ืืืฉื ืคึฟืึทืจ ืื ืืขืกืขืจ ืื ืงืึทืคึผืืื "ืื ืกืืึทืืืจื ืืงืขืจืืืง ืืืืืืืืืจื ืืื ืืึทืฉืืขืืืงื ืื ืกืืกืืขื"
ืืงืืจ: www.habr.com