áĄáááşá¸ááśá áá áşáĄáá˝ááş á áááşááá°áᲠLinux áá˝ááş ááŻááş áááŻáˇáááŻááş á áá áş utilities ááťáŹá¸ááᯠá ááşá¸áááşááźáŽá¸ root áĄáá˝ááˇáşáá°á¸ááťáŹá¸ááźááˇáş ááŻááşááąáŹááşááááˇáş ááŻááşáá˝ááş áĄáážáŹá¸áĄáá˝ááşá¸ááźá áşáá˝áŹá¸ááŤá áĄááŹáĄáŹá¸ááŻáśá¸ááᯠááźááŻáá˝á˛áá áşáá°á¸ááŤáááŹá¸á
ááŤááąáááˇáş á ááşáá áşááŻáááşá¸áážáŹ áĄááťááŻá¸ááťááŻá¸ááąáŹ microservices áĄá áŻáĄááąá¸áá áşááŻááŻáśá¸ááᯠá ááşá¸áááşáááş áááŻáˇáááŻááş ááŻááşááąáŹááşáááş áááŻáĄááşáááşááŻáááŻááŤá ááŻáˇá áá áşáᏠááŤáážáááŻááş áá áşááąáŹááşááŹá¸?
hypervisor ááž á
áŽááśáááˇáşáá˝á˛ááąáŹ virtual machines ááťáŹá¸ááźááˇáşá áááŻáá˛áˇáááŻáˇááąáŹ ááźáżááŹááťáŹá¸ááᯠááźáąáážááşá¸áááŻááşááąáŹáşáááşá¸ áááşáááˇáşááŻááşááťá
ááááşááźááˇáş ááźáąáážááşá¸áááŻááşáááşáááşá¸á áĽáááŹáĄáŹá¸ááźááˇáşá Alpine Linux ááźááˇáşááźá°á¸áážáŻáĄááąáŤáş áĄááźáąááśáááˇáş LXD áážá áá˝ááşááááşááŹáá
áşááŻáááş á
áŹá¸ááŻáśá¸áážáŻááŹááźá
áşáááşá 7.60MB
RAM áážááˇáş root partition áááş startup ááźáŽá¸ááąáŹááşááąááŹáá°ááŹá¸áááşá 9.5MB
! ááŤááᯠElon Musk áááşáááŻááźááŻááşáá˛á áá˝ááşááźááˇáşáááŻáˇ áĄááźáśááźáŻááŤáááşá LXD á áĄááźáąááśá
á˝ááşá¸áááşááťáŹá¸ - Linux áážá áá˝ááşááááşááŹá
áá
áş
ááąáá°ááťáĄáŹá¸ááźááˇáş LXD áá˝ááşááááşááŹááťáŹá¸ áááş ááŹáᲠáážááşá¸áážááşá¸áááşá¸áááşá¸ áááá˝áŹá¸ááźáŽá¸ááąáŹááşá áááş host áĄáá˝ááş ááŻááşááᯠááąá¸áááşá¸á á˝áŹ run áááŻááşááąáŹá ááááşááťáŹá¸ááᯠáááşááŽá¸ááŤá UI-áá áşááťááşááťáŹá¸ááᯠáááˇáşááŻááşááźááˇáş ááťáááşáááşáááŻááşáááˇáş ááąáŹááşááááşáááááᏠááááşááąáŹááşá¸áá áşáᯠáážáááťážááş ááŹááźá áşáááşáááşá¸á blackjack... formatting ááźááˇáş ááŻááşááᯠá áŹááŹá¸ááźááˇáş ááźááˇáşá á˝ááşáááŹá¸á áĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşááąáŹáááąáŹáˇááşáĄááťááŻá¸áĄá áŹá¸áĄááťááŻáˇá áĄááŻá¸... áááŻááťááşáááş! áááŻááťááşáááş! đ
áá˝ááşááááşááŹáá˛áážáŹ áá áşáá˝ážááşáááˇáş ááźáąáŹááşááᯠááźááˇáşáááŻááşááŤá Jupyter ááŹááşáá˝á˛áááşá¸ - ááąááşáááŽááąáŹáˇááąáŹ Jupyter Notebook áĄá áŹá¸ ááąáŹááşááťááŻá¸áááş user interface áážááˇáş Python áá˛áˇáááŻáˇááąáŹ module ááťáŹá¸áááŻáááşá¸ áááˇáşáá˝ááşá¸ááŤáááşá numpy, áááşááŤ, matplotlib, IPyWidgets áĄáááşááąáŹáşááźááŤáĄááŹáĄáŹá¸ááŻáśá¸ááᯠááŻááşááąáŹááşáááŻááşááźáŽá¸ IPython áááşááşááąáŹáˇáá áşááŻáśá¸áá˝ááş áĄáá°á¸áááŻááşáá áşááŻáĄááźá áş ááááşá¸áááşá¸áááŻááşáááşááźá áşáááşá
áĄáá˝ážááşá¸
- áááşáááşá¸ááž áá˝ááşáá˝áŹáááˇáş áĄá áŽáĄá ááş
- áááşáááşááźááşá¸áážááˇáş áá˝á˛áˇá ááşá¸áááşááąáŹááşááŻáś áĄááźáąááśá áá áş
- áĄááźáąááśááąáŹáˇááşáá˛ááᯠáááşáááşááźááşá¸áážááˇáş á áá áşáááˇáşáá˝ááşá¸ááźááşá¸á
- JupyterLab ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ ááźááşáááşáááşáážááşááźááşá¸á
- áĄáááşáážááşáážááˇáş ááąááŹááťážááąááźááşá¸á
- áááşášáááŹááŤááášááŹááąáŹá!
- Python áá á˝ááşá¸áááşááťáŹá¸áááŻááťá˛áˇáá˝ááşááźááşá¸á
- JupyterLab áážá ááąáŹáşááťá°á¸ááťáŹá¸ááᯠá ááşá¸áááşááźááşá¸á
- áá áşááźáŹá¸ááŹááťáŹá¸?
áááşáááşá¸ááž áá˝ááşáá˝áŹáááˇáş áĄá áŽáĄá ááş ^
áĄáááşááąáŹáşááźá፠áĄá áŽáĄá ááşááᯠáĄááąáŹááşáĄáááşááąáŹáşáááş ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááş áááŻáááŻáá˝ááşáá°á áąáááş áĄáááŻááťáŻáśá¸ááŹá¸ááąáŹ ááŻááşááąáŹááşááťááşáĄá áŽáĄá áĽáşááᯠááąáŹáşááźááźááŤá ááŻáˇá
- ááźááˇáşááźá°á¸áážáŻáĄá áŻáśáĄáááşááᯠáĄááźáąááśá áá˝ááşááááşááŹáá áşááŻáśá¸ááᯠáááşáááşááźáŽá¸ á áááşááźááŤá ááŻáˇ Alpine Linux. ááťá˝ááşáŻááşáááŻáˇáááş á¤ááźááˇáşááźá°á¸áážáŻááᯠáĄáááşá¸áááşááťážááŹááźá áşá áąáááşáĄáá˝ááş áááşáá˝ááşááźáŽá¸ áááşá¸áá˝ááş áĄáááŻáĄááşááŻáśá¸ááąáŹáˇááşáá˛ááşáááŻáᏠáááˇáşáá˝ááşá¸áááşááźá áşááąáŹááźáąáŹááˇáş áĄáá°á¸áĄáá˝áąááááŻáĄááşááŤá
- áá˝ááşááááşááŹáá˛áážáŹ ááąáŹááşáááş virtual disk áá
áşááŻáááˇáşááźáŽá¸ ááŹáááşáá
áşááŻááąá¸ááźááĄáąáŹááş -
hostfs
áááşá¸ááᯠroot áááŻááşá áá áşáá˝ááşáááşáááşááŤá á¤áá áşááşáááş áá˝ááşááááşááŹáĄáá˝ááşá¸áážá ááąá¸ááŹá¸áááˇáş áááşá¸áá˝ážááşáá áşááŻááž áááşááśááąáŹááşáá˝ááşááąá¸áá°áážá áááŻááşááťáŹá¸ááᯠááŻáśá¸áááŻááşá áąáááşááźá áşáááşá áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááąááŹáááş áá˝ááşááááşááŹáážááˇáş ááŽá¸ááźáŹá¸ááźá áşááąááŤáááşá áá˝ááşááááşááŹááᯠááťááşáááŻááşááťážááş ááąááŹáááş áááşááśáá°áá˝ááş áážáááąáááşááźá áşáááşá áááŻáˇáĄááźááşá á¤áĄá áŽáĄá áĽáşáááş áá˝ááşááááşááŹááźááˇáşááąáážáŻá á áśáá˝ááşáááşááášáááŹá¸ááťáŹá¸ááᯠáĄááŻáśá¸áááźáŻáᲠáá˝ááşááááşááŹááťáŹá¸á á˝áŹááźáŹá¸áá˝ááş áá°ááŽááąáŹááąááŹááᯠááťážááąáááşáĄáá˝ááş áĄááŻáśá¸áááşááŤáááşá - Bashá sudoá áááŻáĄááşááąáŹ áá áşááťá áşáááŻááşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ á áá áşáĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááˇáşáá˝ááşá¸ááźááŤá ááŻáˇ
- Pythoná ááąáŹáşááťá°á¸ááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ áááşá¸áááŻáˇáĄáá˝ááş binary áážáŽáááŻáážáŻááᯠá áŻá ááşá¸áááŻááşááźááŤá ááŻáˇ
- áááˇáşáá˝ááşá¸ááźáŽá¸ á áááşáááŻááşááĄáąáŹááş Jupyter ááŹááşáá˝á˛áááşá¸áĄáá˝ááşáĄááźááşááᯠá áááşááźááŻááşááźááşáááşááŤá áááşá¸áĄáá˝ááş áááŻá¸ááťá˛áˇáážáŻááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááŤá
á¤ááąáŹááşá¸ááŤá¸áá˝ááşá áá˝ááşááááşááŹáááŻá áááşááźááşá¸ááźááˇáşááťá˝ááşáŻááşáááŻáˇáááş LXD áááŻáááˇáşáá˝ááşá¸ááźááşá¸áážááˇáşáá˝á˛áˇá ááşá¸ááźááşá¸áááŻáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸áááşáááŻááşááŤá á¤áĄááŹáĄáŹá¸ááŻáśá¸áááŻáĄááźáŹá¸ááąáŹááşá¸ááŤá¸áá˝ááşáááşáá˝áąáˇáááŻááşáááş - LXD - Linux áá˝ááşááááşááŹá áá áşááťáŹá¸á áĄááźáąááśáĄááşášááŤáááşááťáŹá¸.
áááşáááşááźááşá¸áážááˇáş áá˝á˛áˇá ááşá¸áááşááąáŹááşááŻáś áĄááźáąááśá áá áş ^
ááŻáśáĄáŹá¸ áááşáážááşáááˇáş command ááźááˇáş áá˝ááşááááşááŹáá
áşáᯠáááşááŽá¸áááş- alpine3
áá˝ááşááááşááŹáĄáá˝ááş identifier - jupyterlab
áááŻáĄááşááŤáá áá˝á˛áˇá
ááşá¸áážáŻááááŻáááŻááşááťáŹá¸-
lxc init alpine3 jupyterlab --profile=default --profile=hddroot
á¤áá˝ááş ááťá˝ááşáŻááşáááş áá˝á˛áˇá
ááşá¸áážáŻ ááááŻáááŻááşááᯠáĄááŻáśá¸ááźáŻááąááŤáááşá hddroot
root partition ááźááˇáş container áá
áşááŻááᯠáááşááŽá¸áááş áááşáážááşáááşá áááŻáážáąáŹááşááąáááş ááŻááşáááŻááşá¸áááŻááşáᏠ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
áááşá¸áááş ááťá˝ááşáŻááşáĄáŹá¸ ááŽá¸ááźáŹá¸áá˝á˛áˇá
ááşá¸ááŻáśááááŻáááŻááşááᯠáááşááŽá¸ááŹá¸áááˇáş SSD disk á áĄáááşá¸áĄááźá
áşááťáŹá¸ááᯠááťá˝áąááŹááźáŽá¸ áááşá¸áááş ááťá˝ááşáŻááşáĄáŹá¸ HDD áá
áşááąáŤáşáá˝ááş áá˝ááşááááşááŹááťáŹá¸ááźááˇáş á
ááşá¸áááşáááş áĄáá˝ááˇáşáĄááąá¸ááąá¸ááŤáááşá ssdroot
.
áá˝ááşááááşááŹááᯠáááşááŽá¸ááźáŽá¸ááąáŹááşá áááşá¸áááş áĄááźáąáĄááąáá˝ááş áážáááąáááşá STOPPED
áááŻáˇááźáąáŹááˇáş áááşá¸áá˝ááş init system ááᯠrun ááźááşá¸ááźááˇáş á
áááşáááş áááŻáĄááşááŤáááşá
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
ááąáŹááşá¸ááŤá¸áá˝ááş ááááşá configure ááŻááşááŹá¸áááşá LXD - Linux áá˝ááşááááşááŹá
áá
áşááťáŹá¸á áĄááźáąááśáĄááşášááŤáááşááťáŹá¸.
ááťá˝ááşáŻááşáááŻáˇáááş áá˝ááşááááşááŹáĄáááˇáşáá˝ááş áá˝ááşááááşááŹáĄáááˇáşáá˝ááş áá˝ááşáááşáĄááşááŹááąáˇá áşááᯠáááşááŽá¸ááźááşá¸ááźááˇáşá áááşá¸áááş áááşáážááá˝á˛áˇá ááşá¸ááŻáśáá˝ááş ááŤáážááááˇáşáĄáááŻááşá¸ áá˝á˛áˇá ááşá¸áážáŻááááŻáááŻááşáĄáááˇáşáá˝ááş áááŻááşáᲠᤠIP ááááşá áŹááᯠáááŻáááŻáážááşáááááŻááşááąáŹ áĄáážááşáá ááŹáá áşááŻáĄááźá áşáááŻáˇ ááźáąáŹááşá¸áá˛ááŤáááşá ááŤáááŻááŻááşá ááŹááááŻááŤáá°á¸á ááťáąáŹáşáá˝áŹá¸áááŻááşááŤáááşá
áá˝ááşáááşáĄááşááŹááąáˇá
áşáááşááŽá¸ááźááşá¸á eth0
ááťá˝ááşáŻááşáááŻáˇáááş switch (áá˝ááşáááşááśááŹá¸) áážááˇáşááťáááşáááşááŹá¸áááşá lxdbr0
ááááşááąáŹááşá¸ááŤá¸áĄá NAT áááŻááťá˝ááşáŻááşáááŻáˇáá˝ááˇáşááŹá¸ááąáŹááźáąáŹááˇáşáá˝ááşááááşááŹáááşáááŻáĄááşááŹáááşáááŻáˇáááşááąáŹááşáá˝ááˇáşááážááááşááźá
áşááźáŽá¸áĄááşááŹááąáˇá
áşáĄáá˝ááş static 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 shell áĄáá˝ááş programmable ááźáŽá¸á
áŽá¸áážáŻ
sudo
áĄááťááŻáˇááąáŹ command ááťáŹá¸ááᯠroot áĄááźá
áşáĄááŻáśá¸ááźáŻáááş áĄááťááŻáˇááąáŹáĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááᯠááąá¸á
á˝ááşá¸áááŻááşáááşá
áĄááááş
áĄááááşáááŻááşááťáŹá¸áážááˇáş PAM áĄáá˝ááş ááśáˇáááŻá¸áážáŻááźááˇáş á
ááŹá¸áážááşáážááˇáş áĄááąáŹááˇáşá
áŽááśáááˇáşáá˝á˛áážáŻ ááááááŹáĄá
áŻáś
ááťáąáŹááşááśááŹá¸
áĄááťáááşááŻááşáážááˇáş ááąáˇáĄáááşá¸ááąáŹááş ááťá˝áąááŹááťáááşááąááŹáĄáá˝ááş áĄáááşá¸áĄááźá
áşááťáŹá¸
nano
ááźážááˇáşáááşáážáŻááťáŹá¸áážááˇáşáĄáá° Pico áááşá¸ááźááşáá°áááŻááşáá˝áŹá¸
áááŻáˇáĄááźááşá áĄáąáŹááşááŤáááşááąáˇááťáşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáş â system man-pages áá˝ááş ááśáˇáááŻá¸áážáŻáááˇáşáá˝ááşá¸áááŻááşáááşá man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano
ááťá˝ááşáŻááşáááŻáˇáĄááŻáśá¸ááźáŻáá˛áˇáááˇáş command ááťáŹá¸áážááˇáş ááąáŹáˇááťáŹá¸ááᯠááźááˇáşááźááŤá ááŻáˇá
lxc
- LXD client áááŻááąáŤáşááŤáexec
- áá˝ááşááááşááŹáá˝ááş command áá áşááŻááŻááşááąáŹááşááąáŹ LXD client áááşá¸áááşá¸jupyterlab
- áá˝ááşááááşáᏠID--
â ááąáŹááşáááşááąáŹáˇááťáŹá¸ááᯠááąáŹáˇááťáŹá¸áĄááźá áş áĄáááášááŤááşááá˝ááˇáşáááŻáááş áĄáá°á¸ááąáŹáˇáá áşááŻlxc
ááźáŽá¸ááťážááş ááťááşááąáŹ string ááᯠáá˝ááşááááşááŹáááŻáˇ ááźááşááŤá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
áĄááŻáśá¸ááźáŻáá°áĄáá
áşááťáŹá¸áĄáá˝ááş Bash ááᯠáá˝ááşááááşááŹáá˝ááş á
áááşáááşáážááşááťáááşáĄááťáŹá¸ááźáŽá¸áááźáŻááşá¸á
áąáááşá áĄáąáŹááşááŤáĄáááˇáşááťáŹá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áĄáááşáááˇáşááŻááşááŹá¸ááąáŹ skel áááŻááşááťáŹá¸ááᯠáááşááśááąáŹááşáá˝ááşááąá¸áááˇáşá
áá
áşááž áááşá¸ááśáááŻáˇ áá°á¸áá°ááŤáááşá áááşá¸áááş áááˇáşáĄáŹá¸ Bash ááᯠáá˝ááşááááşááŹáá
áşááŻáĄáá˝ááşá¸ áĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşá
á˝áŹ áĄáážáááşáááŻááşá
áąáááşááźá
áşáááşá ááťá˝ááşáŻááşááĄáááşáážááşá
áá
áşáážáŹ Manjaro Linux ááźá
áşááźáŽá¸ áááŻááşááťáŹá¸ááᯠáá°á¸áá°ááŹá¸ááŤáááşá /etc/skel/.bash_profile
, /etc/skel/.bashrc
, /etc/skel/.dir_colors
áá°áĄá áááşá¸áááŻáˇáááş Alpine Linux áĄáá˝ááş áááˇáşááťáąáŹáşááźáŽá¸ áĄááąá¸ááźáŽá¸ááąáŹ ááźáżááŹááťáŹá¸ááᯠáááźá
áşááąáŤáşá
áąááąáŹáşáááşá¸ áááˇáşáá˝ááş áá˝á˛ááźáŹá¸ááąáŹ ááźááˇáşááźá°á¸áážáŻáá
áşáᯠáážááááŻááşááźáŽá¸ Bash ááᯠáá˝ááşááááşááŹáá˝ááş áĄááŻáśá¸ááźáŻáááˇáşáĄá፠áĄáážáŹá¸áĄáá˝ááşá¸áážáááážá áá˝ááşáááşá
á˝áŹ áĄááźáąáážáŹáááş áááŻáĄááşááŤáááşá
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
áážáááźáŽá¸ááŹá¸ root áĄááŻáśá¸ááźáŻáá°áĄáá˝ááşá áá˝ááşááááşááŹáá˛áááŻáˇ áá°á¸áá°ááŹá¸ááąáŹ skel áááŻááşááťáŹá¸ááᯠhome directory áááŻáˇ áá°á¸áá°ááŤ-
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
áĄááŻáśá¸ááźáŻáá°áááş á
ááŹá¸áážááşááážáááŤá á
ááŹá¸áážááşáá
áşáᯠáááşáážááşáááş áááŻáĄááşáááşá áĄáąáŹááşá፠command áááş áá°áˇáĄáá˝ááş ááťáááşá¸á
ááŹá¸áážááşáĄáá
áşááᯠááŻááşááąá¸ááźáŽá¸ áááşáážááşááąá¸áááşááźá
áşááźáŽá¸ áááşá¸ááᯠááŻááşááąáŹááşááźáŽá¸ááąáŹááş console ááťááşáážáŹááźááşááąáŤáşáá˝ááş áááşáá˝áąáˇááźááşáááááˇáşáááş-
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
ááąáŹááşááž configure ááŻááşááŤáááşá 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
áááŻáˇááąáŹááşá ááťá˝ááşáŻááşáááŻáˇáááş command áážá
áşááŻáááŻááŻááşááąáŹááşáááşááźá
áşááźáŽá¸á ááááá
áşááŻáááş system group áá
áşááŻáááŻáááşááŽá¸áááşááźá
áşáááşá 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
command áááŻááŻáśá¸ááŤá sudo
. ááŽáááŻááŻááşáááŻáˇá áááşáážáŹáĄáąáŹááşá፠script ááᯠrun sed
á
áŽá
ááşáá˝á˛áˇá
ááşá¸áážáŻáááŻááşáážá ááŤááŹááŽááŹáááŻááşá¸ááᯠáážááşááťááşáááąá¸ááŤá /etc/sudoers
:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"
JupyterLab ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ ááźááşáááşáááşáážááşááźááşá¸á ^
Jupyter ááŹááşáá˝á˛áááşá¸ Python áĄáááŽááąá¸áážááşá¸áá
áşááŻááźá
áşááąáŹááźáąáŹááˇáş á¤ááŹááŹááźááşááᯠáŚá¸á
á˝áŹáááˇáşáá˝ááşá¸áááŤáááşá áááŻáˇáĄáá°á Jupyter ááŹááşáá˝á˛áááşá¸ Python package manager ááᯠáĄááŻáśá¸ááźáŻá install ááŻááşááŤáááşá pip
á
áá
áşáá
áşááŻáááŻááşááŤá áááşá¸áááş system repository áá˝ááşááąááşááąáŹááşááťááąáááŻááşááąáŹááźáąáŹááˇáşá áĄáąáŹááşááŤáááşááąáˇááťáşááťáŹá¸áááŻáááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáşáááşá¸áĄáá˝ááşáážáŽáááŻáážáŻááťáŹá¸áááŻááťá˝ááşáŻááşáááŻáˇáááŻááşáááŻááşááźáąáážááşá¸ááááşááźá
áşááŤáááşá python3 python3-dev gcc libc-dev zeromq-dev
:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev
python modules áážááˇáş package manager ááᯠupdate ááŻááşááźááŤá
ááŻáˇ pip
áááşáážáááŹá¸áážááşá¸áááŻáˇ
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel
áááˇáşáá˝ááşá¸á፠Jupyter ááŹááşáá˝á˛áááşá¸ package manager áážááááˇáş pip
:
lxc exec jupyterlab -- python3 -m pip install jupyterlab
Extensions áá˝áą áá áááŻáˇ Jupyter ááŹááşáá˝á˛áááşá¸ á ááşá¸áááşáá˛ááźá áşááźáŽá¸ jupyterlab áááşááąáˇááťáşááźááˇáş áááŹá¸áááş áááşáááŻáˇááąáŹááşá¸ááťááźááşá¸ ááážáááąá¸ááąáŹááźáąáŹááˇáş áááşá¸ááᯠáááŻááşáááŻááşáááˇáşáá˝ááşá¸ááźáŽá¸ ááźááşáááşáááşáážááşáááŤáááşá
NodeJS áážááˇáş áááşá¸áĄáá˝ááş áááşááąáˇááťáşáááşááąááťáŹááᯠáááˇáşáá˝ááşá¸ááźááŤá ááŻáˇ - NPMá Jupyter ááŹááşáá˝á˛áááşá¸ áááşá¸á extensions ááťáŹá¸áĄáá˝ááş áááşá¸áááŻáˇááᯠáĄááŻáśá¸ááźáŻáááş-
lxc exec jupyterlab -- apk add nodejs npm
áááŻá¸ááťá˛áˇáážáŻááťáŹá¸ ááźáŻááŻááşáááş Jupyter ááŹááşáá˝á˛áááşá¸ ááťá˝ááşáŻááşáááŻáˇáááˇáşáá˝ááşá¸áááˇáşáĄááŹáááş áĄááŻááşááŻááşáááşá áĄááşááşááᯠáĄááŻáśá¸ááźáŻáá°ááž á
áááşáááŻááşááąáŹááźáąáŹááˇáş áááşá¸áááŻáˇááᯠáĄááŻáśá¸ááźáŻáá°áááşá¸áá˝ážááşáá˝ááş áááˇáşáá˝ááşá¸áááş áááŻáĄááşááŤáááşá jupyter
. ááźáżááŹáážáŹ áááşá¸ááźáąáŹááşá¸áá
áşááŻáááŻáˇ áá°á¸ááźáąáŹááşá¸áááŻááşááąáŹ launch command áá˝ááş parameter ááážáááŤá application áááş environment variable áá
áşááŻáááŻáᏠáááşááśááąáŹááźáąáŹááˇáş áááşá¸ááᯠáááşáážááşáááŤáááşá ááŤáááŻááŻááşáááŻáˇá ááźáąáŹááşá¸áááŻááşáá˛áˇ export command áááŻááąá¸ááŤáááşá JUPYTERLAB_DIR
áĄááŻáśá¸ááźáŻáá°ááááşáááşá¸ááťááşá jupyter
ááᯠ.bashrc
áĄááŻáśá¸ááźáŻáá° áĄááąáŹááˇáşáááşáááŻááşá¸ ááŻááşááąáŹááşáááş-
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"
ááąáŹááş command áááş áĄáá°á¸ extension - extension manager in ááᯠáááˇáşáá˝ááşá¸ááŤáááşá Jupyter ááŹááşáá˝á˛áááşá¸:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"
áĄáᯠáááááŻáśá¸ ááááşáááşáá˝á˛áĄáá˝ááş áĄááŹáĄáŹá¸ááŻáśá¸ áĄáááşáááˇáşááźá áşááąááŤááźáŽá Jupyter ááŹááşáá˝á˛áááşá¸áááŻáˇááąáŹáş ááťá˝ááşáŻááşáááŻáˇáááş áĄááŻáśá¸áááşááąáŹ áááŻá¸ááťá˛áˇáážáŻáĄááťááŻáˇááᯠáááˇáşáá˝ááşá¸áááŻááşááąá¸áááşá
toc
â ááŹááááŹá ááąáŹááşá¸ááŤá¸/áážááşá áŻá áŹáĄáŻááşáá˝ááş ááąáŤááşá¸á ááşááťáŹá¸á áŹáááşá¸ááᯠááŻááşááąá¸áááşájupyterlab-horizon-theme
- UI áĄááźááşáĄáááşjupyterlab_neon_theme
- UI áĄááźááşáĄáááşjupyterlab-ubu-theme
- ááąáŹááşáá áşáᯠá áŹááąá¸áá°ááśááž ááąáŹááşááŻááş á¤ááąáŹááşá¸ááŤá¸ :) áááŻáˇááąáŹáş á¤ááá ášá áá˝ááşá GitHub repository ááž áááşáááşáážáŻááᯠááźáááŤáááşá
áááŻáˇááźáąáŹááˇáşá ᤠextension ááťáŹá¸áááŻáááˇáşáá˝ááşá¸áááş áĄáąáŹááşá፠command ááťáŹá¸ááᯠáááşáááŻááşááŻááşááąáŹááşááŤá
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"
Extensions ááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ááąáŹááşá ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áááŻáˇááᯠá
áŻá
ááşá¸ááááşááźá
áşááźáŽá¸ ááááşá áááˇáşáá˝ááşá¸á
ááşáĄáá˝ááşá¸ ááąáŹáˇááᯠááťá˝ááşáŻááşáááŻáˇ áááşáážááşáá˛áˇáááşá --no-build
áĄááťáááşááŻááşáááşááŹá
áąáááşá ááᯠááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áááŻáˇááᯠáá
áşááźáááşáááşá¸ á
áŻá
ááşá¸ááźááşá¸ááźááˇáş ááááááŹáᏠáĄáážáááşááźážááˇáşááŤáááşá
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"
ááᯠáááşá¸ááᯠááááĄááźáááşááŻááşááąáŹááşáááş áĄáąáŹááşá፠command áážá áşááŻááᯠrun ááŤá Jupyter ááŹááşáá˝á˛áááşá¸. áááşá¸ááᯠcommand áá áşááŻáááşá¸ááźááˇáş á áááşáááŻááşááąáŹáşáááşá¸ á¤ááá ášá áá˝ááşá áááˇáşá áááşáá˛áá˝ááş áážááşáááááşáááşáá˛ááąáŹ launch command ááᯠcontainer áĄáá˝ááşá¸áážá bash ááźááˇáş áážááşááŹá¸áááşááźá áşááźáŽá¸ host áá˝ááşáááŻááşáá˛á ááŻáśááąáŹááşááąáŹ command ááťáŹá¸áážáááąááąáŹá ááááŻááşá¸áážáŹ áážááşáááşá¸áááşáááŻáˇá :)
áĄááŻáśá¸ááźáŻáá°áĄááźá
áş áá˝ááşááááşááŹáááŻáˇ áĄááąáŹááˇáşáááşááŤá jupyter
:
lxc exec jupyterlab -- su -l jupyter
ááźáŽá¸áááşááąáŹáˇ run áááŻááşááŤá Jupyter ááŹááşáá˝á˛áááşá¸ áá˝ážááşááźááŹá¸áááˇáşáĄáááŻááşá¸ ááąáŹáˇááťáŹá¸áážááˇáş ááąáŹááşááťáŹá¸ááźááˇáş
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser
áááˇáşáááşáááąáŹááşááŹáážá ááááşá áŹáááŻáˇáá˝áŹá¸ááŤá http://10.0.5.5:8888 áážááˇáşáá˝ááˇáşááąáŹá áŹááťááşáážáŹááąáŤáşáá˝ááşáááşááąáŹááşááŤá áááŻáááşááśááŤááş console áá˝ááşáááşáá˝áąáˇááźááşáááąáŹáááşááąáŹááşáá˝ááˇáşá á áŹááťááşáážáŹááąáŤáşáá˝ááş ááąáŹáşááŽáá°á¸ááźáŽá¸ áá°á¸áááˇáşááźáŽá¸ááąáŹááş ááá áşáážáááşááŤá Login. áĄááąáŹááˇáşáááşááźáŽá¸ááąáŹááşá áĄáąáŹááşááąáŹáşááźááŤááŻáśáá˝ááşááźááŹá¸áááˇáşáĄáááŻááşá¸ áááşáááşáážá extensions ááŽáá°á¸áááŻáˇáá˝áŹá¸ááŤá áááŻá¸ááťá˛áˇáááşááąááťáŹááᯠáĄáááşáá˝ááşá¸áááˇáşáĄááŤá áĄááááˇáşááąá¸ááąáŹ ááźááşááĄáá˝á˛áˇáĄá ááşá¸ááťáŹá¸ááž áááŻá¸ááťá˛áˇáážáŻááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáş ááŻáśááźáŻáśááąá¸áĄáášáááŹááşááťáŹá¸ááᯠááá°áááş áááˇáşáĄáŹá¸ áĄááťááşááźáááşááźá áşáááşá JupyterLab áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻ ááŹáááşááážáááŤ
áááŻáˇááąáŹáş ááťá˝ááşáŻááşáááŻáˇáááş áá
áşááŻááŻáśá¸ááᯠááŽá¸ááźáŹá¸áá˝á˛ááŹá¸áááşá Jupyter ááŹááşáá˝á˛áááşá¸ NodeJS áááŻáĄááşááźáŽá¸ áĄááŻáśá¸ááźáŻáááˇáş ááźááşáááŻáášááᎠextension ááťáŹá¸áááş áá˝ááşááááşááŹáĄáá˝ááşá¸ ááťá˝ááşáŻááşáááŻáˇáá˝ááˇáşááŹá¸áááˇáşáĄááŹááťáŹá¸áážáá˝á˛á áĄááźáŹá¸ disk ááąáŤáşáážá ááąááŹááťáŹá¸ááᯠáĄáááşá¸ááŻáśá¸ áááŻá¸áá°áááŻááşá
áąáááş áááşá¸ááᯠáá˝ááşááááşááŹáá
áşááŻáá˛áá˝ááş ááŹá¸áááŻááşááŤá áááˇáşáááŻááşááąá¸áááŻááşááŹá
áŹáá˝ááşá
áŹáááşá¸ááťáŹá¸ááᯠáááşááśááá°áááŻááşááŤá /home
áá˝ááşááááşááŹááž ááŻááşáááşá¸á
ááşááťáŹá¸áááş áĄáąáŹááşááźááşáááŻááşáá˝ááşááážáááźáąáŹááşá¸á áááşá¸áááŻáˇááŻááşááąáŹááşááŤáá ááťá˝ááşáŻááşáááŻáˇáááş áá˝ááşááááşááŹááᯠrun ááąáŹááźáąáŹááˇáş host system áážá áááŻááşááťáŹá¸áá˝ááş áĄáá˝ááˇáşáá°á¸ááťáŹá¸ááážááááş áááŻáĄááşááŤáááşá áĄáá˝ááˇáşáá°á¸ááśááŻááş. á¤áĄááťááşáĄáááşááᯠáĄááźáąááśá áááŻá¸ááťá˛áˇáážáŻááťáŹá¸ áĄááŤáĄáááş áĄáášáááŹááşááᯠáĄáá˛ááźááşáááŻááşááŤáááşá Jupyter ááŹááşáá˝á˛áááşá¸.
IPython áážááşá
áŻá
áŹáĄáŻááşááťáŹá¸ áááşááŽá¸áá˛áˇáááş (á
áŹááťááşáážáŹááťáŹá¸ Jupyter ááŹááşáá˝á˛áááşá¸) ááᯠáĄááŻáśá¸ááźáŻáá°á áááşááááşá¸áá˝ážááşáá˝ááş áááşááŽá¸ááááˇáşáááş - /home/jupyter
áááŻáˇááąáŹáş ááťá˝ááşáŻááşáááŻáˇááĄá
áŽáĄá
ááşááťáŹá¸áááş host áážááˇáş container áĄááźáŹá¸ááąáᏠ(ááťážááąááźááşá¸) áááŻáá˝á˛ááźááşá¸áááşááźá
áşáááşá áááŻáˇááźáąáŹááˇáş console áááŻáˇááźááşáá˝áŹá¸ááźáŽá¸áááşááŤá Jupyter ááŹááşáá˝á˛áááşá¸ hotkey áááŻááŻááşááąáŹááşááźááşá¸ááźááˇáş - CTRL+C
ááźáąáááŻááźááşá¸á y
ááąáŹááşá¸áááŻáážáŻáĄá áááŻáˇááąáŹááş áĄááŻáśá¸ááźáŻáá°á áĄááźááşáĄáážááşáĄááťááŻá¸ááźáŻáááˇáş áááşáážááşááᯠáááşáááŻááşá¸ááŤá jupyter
hotkey áá
áşááŻááźáŽá¸áĄáąáŹááş CTRL+D
.
áĄáááşáážááşáážááˇáş ááąááŹááťážááąááźááşá¸á ^
áááşááśáá°áážááˇáş ááąááŹááťážááąáááşá áááşáááş áááşá¸ááᯠááŻááşááąáŹááşáááş áá˝ááˇáşááźáŻáááˇáş áá˝ááşááááşááŹáá˝ááş á ááşáá ášá ááşá¸áá áşááŻááᯠáááşááŽá¸áááş áááŻáĄááşááźáŽá¸ áááşá¸ááᯠááŻááşááąáŹááşáááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄáąáŹááşááŤááąáŹáˇááťáŹá¸ááᯠáááşáážááşááąá¸áááˇáş áĄáąáŹááşá፠command ááᯠááŻááşááąáŹááşááŤ-
lxc config device add
â áĄááááˇáşáááş á ááşáá ášá ááşá¸áá˝á˛áˇá ááşá¸ááŻáśááᯠááąáŤááşá¸áááˇáşáááşájupyter
- áá˝á˛áˇá ááşá¸áážáŻáááˇáşáá˝ááşá¸áááˇáş áá˝ááşááááşáᏠIDhostfs
â á ááşáá ášá ááşá¸ IDá áááşáááˇáşáĄáááşáááŻáááᯠáááşáážááşáááŻááşáááşádisk
- á ááşáá ášá ááşá¸áĄááťááŻá¸áĄá áŹá¸ááᯠááąáŹáşááźááŹá¸ááŤáááşápath
â á¤á ááşáá ášá ááşá¸ááᯠLXD áááşáááşáááˇáş áá˝ááşááááşááŹáĄáá˝ááşá¸áážá áááşá¸ááźáąáŹááşá¸ááᯠáááşáážááşááŤásource
â áĄáááşá¸áĄááźá áşá áááşáá˝ááşááááşááŹáážááˇáşááťážááąáááŻááąáŹ host áážá directory áááŻáˇáááşá¸ááźáąáŹááşá¸áááŻáááşáážááşááŤá áááˇáşá áááşááźááŻááşáááşá¸ááźáąáŹááşá¸ááᯠáááşáážááşááŤá
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
áážááˇáş variable $USER
áááˇáşáĄáááşáážááşáĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áĄáŻááşá
áŻáá
áşááŻáĄááźá
áş áááşáážááşááŤáááş-
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks
áááşášáááŹááŤááášááŹááąáŹá! ^
áĄáááşá áááˇáşáá˝ááş áá˝ááşááááşááŹááźááˇáş áááşáážááşáá˝ááˇáşááŹá¸áá˛ááźá
áşááŤá Jupyter ááŹááşáá˝á˛áááşá¸áááŻáˇááąáŹááş ááąáŹáˇáĄáá
áşááźááˇáş áááşá¸ááᯠááźááşáááşá
áááşááŤá --notebook-dir
áááşáááŻá¸áááşáážááşááźááşá¸ááźááˇáş /mnt/hostfs
ááááşáĄáááˇáşáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááşááŽá¸ááŹá¸ááąáŹ á
ááşáá
ášá
ááşá¸áĄáá˝ááş áá˝ááşááááşááŹáĄáá˝ááşá¸áážá áááşááşááąáŹáˇááťáŹá¸á root áááşá¸ááźáąáŹááşá¸áĄááźá
áş-
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
ááźáŽá¸áááş page áááŻáá˝áŹá¸ááŤá http://10.0.5.5:8888 áĄáąáŹááşááŤááŻáśáá˝ááşááźááŹá¸áááˇáşáĄáááŻááşá¸ á áŹááťááşáážáŹááąáŤáşáážá áááŻááşáááŻáážáááşááźááşá¸ááźááˇáş áááşááááááŻáśá¸ laptop áááŻáááşááŽá¸ááŤá
áááŻáˇááąáŹááş á
áŹááťááşáážáŹááąáŤáşáážá áĄáá˝ááşáá˝ááş ááášááááşáááŻááźááááˇáş Python ááŻááşááᯠáááŻááşáááˇáşááŤá Hello World!
. áááşááąáŹááşááźáŽá¸ááŤá áážáááşááŤá CTRL+ENTER
áááŻáˇáááŻááş JupyterLab áááŻááźáŻááŻááşáááş ááááşáážá toolbar áážá "play" áááŻááş
á¤áĄááťáááşáá˝ááşá áĄáŹá¸ááŻáśá¸ááŽá¸ááŤá¸áááş áĄááŻáśá¸ááźáŻáááşáĄáááşáááˇáşááźá áşááąááźáŽááźá áşááąáŹáşáááşá¸á ááťá˝ááşáŻááşáááŻáˇáááş Python á á áśá á˝ááşá¸áááşááťáŹá¸ááᯠááááááŹááŹááťá˛áˇáá˝ááşáááŻááşáááˇáş ááąáŹááşáááş Python modules (full-fledged applications) ááᯠááááşáááşááŤá á áááşáááşá áŹá¸á ááŹááźá áşááááˇáşáááşá Jupyter ááŹááşáá˝á˛áááşá¸ááŤááźáąáŹááˇáş áááşááťážáąáŹááşááźááĄáąáŹááş :)
PS á
áááşáááşá
áŹá¸á
ááŹááąáŹááşá¸ááŹá áĄááąáŹááşá¸ááᯠáĄááąáŹááşáĄáááşááąáŹáşááźááşá¸ááŤáá˛á ááťá°ááŽáᏠááŻááşáĄáááşáĄáąáŹááşáá˝ááş ááťá°ááŽááŹáážááşá
áŻá
áŹáĄáŻááş ááťáąáŹááşááá˝áŹá¸ááąá¸áá˛áá˛áˇ áĄááźááŻááşáááşáážáááąáááşá Jupyter ááŹááşáá˝á˛áááşá¸. ááŹá¸áážááşá¸ááąáŹááşá¸áááŻáˇ ááźáąáŹááşá¸áááş ááááşá
áŹáá˝ááş ááąáŹááşáááşáááˇáşáááˇáş áááˇáşááşááᯠáááŻááşááŹááŤá/tree
áážááˇáş ááŹá¸áážááşá¸áĄáá
áşáááŻáˇ áá°á¸ááźáąáŹááşá¸ááźááşá¸ááᯠááąáŹááşáááşáá˝á˛ááźááˇáş ááąáŹááşáá˝ááşááŤáááşá /lab
ááŤááąáááˇáş áááşáážááşááŹá¸áááŻáˇ ááááŻááŤáá°á¸
- Jupyter Notebook - http://10.0.5.5:8888/tree
- Jupyter Lab - http://10.0.5.5:8888/lab
Python áá á˝ááşá¸áááşááťáŹá¸áááŻááťá˛áˇáá˝ááşááźááşá¸á ^
á¤ááášááá˝ááşá ááťá˝ááşáŻááşáááŻáˇáá˛áˇáááŻáˇ áĄá á˝ááşá¸áááşááąáŹ Python ááŹááŹá ááŹá¸ modules ááťáŹá¸ááᯠáááˇáşáá˝ááşá¸ááŤáááşá numpy, áááşááŤ, matplotlib, IPyWidgets áááşááşááąáŹáˇááťáŹá¸áá˝ááş ááąáŤááşá¸á ááşááŹá¸ááąáŹ ááááşááťáŹá¸ Jupyter ááŹááşáá˝á˛áááşá¸.
áááşááąáˇááťáşáááşááąááťáŹáážááááˇáş á
áŹáááşá¸áá˝ááşá¸ááŹá¸ááąáŹ Python module ááťáŹá¸ááᯠááááşáááşáᎠpip
Alpine Linux áážá á
áá
áşáážáŽáááŻáážáŻááᯠáŚá¸á
á˝áŹááźáąáážááşá¸áááŤáááş-
g++
â áĄááťááŻáˇááᯠááŹááŹá ááŹá¸ááźááˇáş áĄááąáŹááşáĄáááşááąáŹáşááŹá¸ááąáŹááźáąáŹááˇáş ááąáŹáşááťá°á¸ááťáŹá¸ááᯠááźáŻá áŻáááş áááŻáĄááşááŤáááşá C ++ áážááˇáş binary modules áĄááźá áş runtime áá˝ááş Python áááŻáˇ ááťáááşáááşááŤáfreetype-dev
- Python module áĄáá˝ááş áážáŽáááŻáážáŻ matplotlib
áážáŽáááŻáážáŻááᯠáááˇáşáá˝ááşá¸ááźááşá¸-
lxc exec jupyterlab -- apk add g++ freetype-dev
ááźáżááŹáá áşááŻáážááááş- Alpine Linux ááźááˇáşááźá°á¸áážáŻá áááşáážááĄááźáąáĄááąáá˝ááşá áááşá¸áááş NumPy ááŹá¸áážááşá¸áĄáá áşááᯠá áŻá ááşá¸áááş áááźá áşáááŻááşááŤá ááťá˝ááşáŻááşááźáąáážááşá¸áááááąáŹ á áŻá ááşá¸áážáŻáĄáážáŹá¸áá áşáᯠááąáŤáşááŹááŤáááş-
áĄáážáŹá¸: PEP 517 áááŻáĄááŻáśá¸ááźáŻá áááŻááşáááŻááşáááşáááşáááááąáŹ numpy áĄáá˝ááş ááŽá¸ááťáŹá¸áááşááąáŹááşáááááŤá
áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş á áŻá ááşá¸ááźáŽá¸ááąáŹ ááŹá¸áážááşá¸ááᯠááźááˇáşááąááąá¸áááˇáş á áá áşáááşááąáˇááťáşáĄááźá Ạᤠmodule ááᯠáááşáááşááŤáááşá áááŻáˇááąáŹáş áááşáážááááŻááşáá˝ááş ááážááááŻááşáááˇáşáĄááŹáááş áĄáááşá¸áááşáááŻááźáŽá¸áááş-
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev
áááŻáˇááąáŹááş package manager áážááááˇáş Python modules ááᯠinstall ááŻááşááŤá pip
. áĄááťááŻáˇááąáŹ module ááťáŹá¸áááş compile ááŻááşááźáŽá¸ áááá
áşáĄáááşá¸áááşááźáŹáááŻááşááąáŹááźáąáŹááˇáş á
áááşáážááşááŤá ááťá˝ááşáŻááşáá
ááşáá˝ááşá á
áŻá
ááşá¸áážáŻáááş ~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 áážá ááąáŹáşááťá°á¸ááťáŹá¸ááᯠá ááşá¸áááşááźááşá¸á ^
ááźáąá¸ááąáááşá Jupyter ááŹááşáá˝á˛áááşá¸áĄáá
áşáááˇáşáá˝ááşá¸ááŹá¸ááąáŹ module ááťáŹá¸ááᯠáĄáááşáááşá
áąáááş áááşá¸ááᯠááźááşáááşá
áááşááŤá ááŤáááŻááŻááşáááŻáˇá áá˝ááşáááŻá¸ááşá
ááşáážááşáážáŹ ááá
áşáážáááşááŤá CTRL+C
ááźáąá¸ááźáŽá¸áááşááŤá y
ááąáŹááşá¸áááŻáážáŻááᯠáááşáááŻááşááźáŽá¸ ááźááşá
ááŤá Jupyter ááŹááşáá˝á˛áááşá¸ áĄááááˇáşááᯠáááşááźáŽá¸ááááˇáşááá
áąáááş ááŽá¸ááŻááşááąáŤáşáážá ááźážáŹá¸ááᯠáážáááşááźááşá¸ááźááˇáşá 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 áĄá áááşáĄáááŻááşá¸ááᯠááŻááşááąá¸áááşá matplotlib ááŻááşááąáŹááşááťááşááááşáĄááźá áş ááŻáśáááŻáśá áśááźááˇáş ááŻááşáááááşááᯠááźááááş-
áĽáááŹááťáŹá¸á á˝áŹ IPyWidgets Tutorials áá˝áąáážáŹ áá˝áąáˇáááŻááşááŤáááşá ááŽáážáŹ
áá áşááźáŹá¸ááŹááťáŹá¸? ^
ááąáŹááşá¸ááŤá¸áá˛áˇ áĄááŻáśá¸ááᯠááąáŹááşááąáááşáááŻáááş ááąáŹááşá¸ááŤáááşá áááˇáşáá˝ááşá¸áááˇáş ááąáŹááşá¸ááŤá¸ááĄááŻáśá¸áá˝ááş áĄáááşáááˇáşááŻááşááŹá¸ááąáŹ ááŹááşáá˝ážááşá¸ááᯠááťá˝ááşáŻááş ááááşááᏠááááşáá˛áˇááŤá Jupyter ááŹááşáá˝á˛áááşá¸ áĄááŻááşáááŹá¸ááťáŹá¸áááŻáĄáŹá¸ááąá¸áááşáĄáá˝ááş "ááá áşáá áşááťááşáážáááş" áá˝ááş :) áááŻáˇááąáŹáş Bash script áá áşááŻáááşá¸áááŻáˇ commands ááťáŹá¸áááŻá áŻááąáŹááşá¸ááźáŽá¸áááşáááŻáˇááááźáŽá¸ááźá áşááąáŹááźáąáŹááˇáşáááşáááŻááşáááŻááşááŻááşááąáŹááşáááŻááşáááş :)
áááşáááşá¸ááŻááşáááŻááşáááş-
- áááŻá¸áááŻá¸áážááşá¸áážááşá¸ááźááˇáş ááąá¸ááźááşá¸ááźááˇáş IP ááááşá
áŹáĄá
áŹá¸ áá˝ááşááááşááŹáĄáá˝ááş áá˝ááşáááşáĄáááşááᯠáááşáážááşááŤá
/etc/hosts
browser áá˝ááş ááááşá áŹááᯠáááŻááşáááˇáşááŤá http://jupyter.local:8888 - áá˝ááşááááşááŹáĄáá˝ááş áĄáááşá¸áĄááźá áşáááˇáşáááşááťááşááźááˇáş áá áŹá¸ááŤá á¤áĄáááşá¸áá˝ááş áááşáážáŻááŤá áĄááźáąááś LXD á á˝ááşá¸áááşááťáŹá¸ áááŻáˇáááŻááş LXD developer site áá˝ááş ááąáŹááşáááşáĄááťááşáĄáááşááťáŹá¸ááᯠááá°ááŤá
- áĄááźááşáĄáááşááᯠááźáąáŹááşá¸ááŤ
ááźáŽá¸ááąáŹáˇ áááşááŻááşáááŻááşááŹáá˝áą áĄááťáŹá¸ááźáŽá¸ááŤá ááŤááŤáá˛á áĄáąáŹááşááźááşááŤá áąáááŻáˇ ááŻááąáŹááşá¸ááŤáááşá
áĄááşááááş- 15.04.2020/18/30 XNUMX:XNUMX - âáááşášáááŹá፠ááášááŹ!â áĄáááşá¸áá˝ááş ááźáŻááźááşááŹá¸ááąáŹ áĄáážáŹá¸ááťáŹá¸
áĄááşááááş- 16.04.2020/10/00 XNUMX:XNUMX â áááŻá¸ááťá˛áˇáááşááąááťáŹ áĄáááşáá˝ááşá¸ááźááşá¸á ááąáŹáşááźááťááşáá˝ááş á
áŹááŹá¸ááᯠááźáŻááźááşááźáŽá¸ áááşáááˇáşááŹá¸áááş Jupyter ááŹááşáá˝á˛áááşá¸
áĄááşááááş- 16.04.2020/10/40 XNUMX:XNUMX â á
áŹááŹá¸áá˝ááşáá˝áąáˇáážááááąáŹáĄáážáŹá¸ááťáŹá¸áááŻááźááşááźáŽá¸áĄáááşá¸ "áĄááźáąááśááąáŹáˇááşáá˛áááŻáááˇáşáá˝ááşá¸ááźááşá¸áážááˇáşá
áá
áşáááˇáşáá˝ááşá¸ááźááşá¸" áĄáááşá¸áááŻáááŻáááŻááąáŹááşá¸áá˝ááşá
áąáááşáĄáááşá¸áááşááźáąáŹááşá¸áá˛ááŹá¸áááşá
source: www.habr.com