Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π»ΠΈ Π²ΠΈ Π΄Π° СкспСримСнтиратС с ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ систСмни ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΈ Π² Linux, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π½Π΅ сС страхуватС Π·Π° основната систСма ΠΈ Π΄Π° Π½Π΅ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅ всичко Π² случай Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° стартира с root-ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ?

А ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π° ситуация, Π² която Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° тСстватС ΠΈΠ»ΠΈ стартиратС цял ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΎΡ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΈ микросСрвизи Π½Π° Π΅Π΄Π½Π° машина? Π‘Ρ‚ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ хиляда?

Π‘ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, управлявани ΠΎΡ‚ Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, Ρ‚Π°ΠΊΠΈΠ²Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚, Π½ΠΎ Π½Π° ΠΊΠ°ΠΊΠ²Π° Ρ†Π΅Π½Π°? НапримСр, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² LXD, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Alpine Linux, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° 7.60MB ОП, Π° корСновият дял слСд стартиранС Π·Π°Π΅ΠΌΠ° 9.5MB! Как Ρ‚ΠΈ сС струва, Илон Мъск? ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° сС запознаСш с основнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° LXD β€” систСма Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² Linux

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ стана ясно ΠΊΠ°ΠΊΠ²ΠΎ прСдставляват ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ LXD, Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π½Π°ΠΏΡ€Π΅Π΄ ΠΈ Π΄Π° помислим, ΠΊΠ°ΠΊΠ²ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ, Π°ΠΊΠΎ имашС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°-ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, Π² която бСзопасно Π΄Π° стартиранС ΠΊΠΎΠ΄ Π·Π° хоста, Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ (ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ) Π΄Π° ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚Π΅ UI-Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΈ с вашия ΠΊΠΎΠ΄, Π΄Π° Π΄ΠΎΠΏΡŠΠ»Π²Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π° с тСкст с Ρ‡Π΅Ρ€Π΅Π½ Π΄ΠΆΠ°ΠΊ... Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅? НСщо ΠΊΠ°Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π±Π»ΠΎΠ³? Π£Π°Ρƒ... Искам! Искам! πŸ™‚

Надникни ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ стартирамС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° JupyterLab β€” слСдващото ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ потрСбитСлски интСрфСйс вмСсто остарялото Jupyter Notebook, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ инсталирамС Ρ‚Π°ΠΊΠΈΠ²Π° Python ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ NumPy, Pandas, Matplotlib, IPyWidgets ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ позволят Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ всичко ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΈ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ всичко Π² спСциалСн Ρ„Π°ΠΉΠ» β€” IPython-Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΊΠ°.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

План Π·Π° изстрСлванС Π² ΠΎΡ€Π±ΠΈΡ‚Π° ^

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

НСка Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΏΠ»Π°Π½ Π·Π° дСйствия, Π·Π° Π΄Π° Π½ΠΈ бъдС ΠΏΠΎ-лСсно Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ схСмата ΠΏΠΎ-Π³ΠΎΡ€Π΅:

  • Π©Π΅ инсталирамС ΠΈ стартирамС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° Π±Π°Π·Π° дистрибуцията Alpine Linux. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ дистрибуция, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ насочСна към минимализъм ΠΈ Ρ‰Π΅ инсталирамС Π² Π½Π΅Π³ΠΎ само Π½Π°ΠΉ-нСобходимия софтуСр, Π½ΠΈΡ‰ΠΎ излишно.
  • Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ диск Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΈΠΌΠ΅ β€” hostfs ΠΈ Ρ‰Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ към ΠΊΠΎΡ€Π΅Π½ΠΎΠ²Π°Ρ‚Π° Π€Π‘. Π’ΠΎΠ·ΠΈ диск Ρ‰Π΅ осигури Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° хоста ΠΎΡ‚ Π·Π°Π΄Π°Π΄Π΅Π½Π° дирСктория Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’Π°ΠΊΠ° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ нСзависими ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ случай Π½Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π΄Π°Π½Π½ΠΈΡ‚Π΅ Ρ‰Π΅ останат Π½Π° хоста. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚Π°Π·ΠΈ схСма Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π·Π° раздСлянС Π½Π° сподСлСни Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСство ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Π±Π΅Π· Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ стандартнитС ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° дистрибутива Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
  • Π©Π΅ инсталирамС Bash, sudo, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ систСмСн ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».
  • Π©Π΅ инсталирамС Python, ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ ΠΈΠΌ зависимости.
  • Π©Π΅ инсталирамС ΠΈ стартирамС. JupyterLab, Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ външния Π²ΠΈΠ΄, Ρ‰Π΅ инсталирамС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° Π½Π΅Π³ΠΎ.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с пусканСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π±Π΅Π· Π΄Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ инсталацията ΠΈ конфигурацията Π½Π° LXD; всичко Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² Π΄Ρ€ΡƒΠ³Π° статия β€” FreeRDP - свободна рСализация Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΎΡ‚Π΄Π°Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠ»ΠΎΡ‚ (RDP), ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° ΠΏΠΎΠ΄ лицСнзия Apache, Π΅ Ρ„ΠΎΡ€ΠΊ Π½Π° rdesktop. Най-Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π° 2.0.0: ..

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ ΠΈ настройка Π½Π° основната систСма ^

БъздавамС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² която ΡƒΠΊΠ°Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Ρ€Π°Π·Π° β€” alpine3, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° β€” jupyterlab ΠΈ ΠΏΡ€ΠΈ нСобходимост ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ‚Π΅ Π·Π° конфигурация:

lxc init alpine3 jupyterlab --profile=default --profile=hddroot

Π’ΡƒΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π·Π° конфигурация hddroot ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° Π΄Π° сС създадС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с root-Ρ€Π°Π·Π΄Π΅Π» Π² Storage Pool Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° физичСския 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 ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° ΠΊΠΎΠΈ сколони Π΄Π° сС ΠΏΠΎΠΊΠ°ΠΆΠ°Ρ‚ Π½Π° Π΅ΠΊΡ€Π°Π½Π°:

lxc list -c ns4b
+------------+---------+-------------------+--------------+
|    NAME    |  STATE  |       IPV4        | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool      |
+------------+---------+-------------------+--------------+

ΠŸΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° IP Π°Π΄Ρ€Π΅ΡΡŠΡ‚ Π΅ ΠΈΠ·Π±Ρ€Π°Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π·Π° конфигурация ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΊΠΎΠΉΡ‚ΠΎ бСшС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π² статията FreeRDP - свободна рСализация Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΎΡ‚Π΄Π°Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠ»ΠΎΡ‚ (RDP), ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° ΠΏΠΎΠ΄ лицСнзия Apache, Π΅ Ρ„ΠΎΡ€ΠΊ Π½Π° rdesktop. Най-Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π° 2.0.0: ..

Π©Π΅ смСним Ρ‚ΠΎΠ·ΠΈ 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      |
+------------+---------+------------------+--------------+

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° основСн софтуСр ΠΈ настройка Π½Π° систСмата ^

Π—Π° администриранС Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° инсталирамС слСдния софтуСр:

Package
ОписаниС

bash
GNU Bourne Again shell

bash-completion
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° bash shell

sudo
Π”Π°ΠΉΡ‚Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ някои ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°Ρ‚ΠΎ root

shadow
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° shadow Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ PAM

tzdata
Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° часови Π·ΠΎΠ½ΠΈ ΠΈ лятно часово Π²Ρ€Π΅ΠΌΠ΅

nano
Клон Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Pico с подобрСния

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° систСмата man-pages, инсталирайки слСднитС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ β€” 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 β€” ΠŸΠ°ΠΊΠ΅Ρ‚Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° дистрибуцията 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 Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

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 Π·Π° ΠΊΠΎΠ³ΠΎΡ‚ΠΎ ΠΏΠΎ-късно Ρ‰Π΅ настроим JupyterLab:

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 ^

JupyterLab β€” Ρ‚ΠΎΠ²Π° Π΅ Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° инсталирамС Ρ‚ΠΎΠ·ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, 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

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΌΠ΅ JupyterLab Ρ‡Ρ€Π΅Π· пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Въй ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π² JupyterLab са СкспСримСнтални ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ Π½Π΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ с ΠΏΠ°ΠΊΠ΅Ρ‚Π° jupyterlab, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ трябва Π΄Π° Π³ΠΈ инсталирамС ΠΈ настроим Ρ€ΡŠΡ‡Π½ΠΎ.

НСка Π΄Π° инсталирамС NodeJS ΠΈ пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π·Π° Π½Π΅Π³ΠΎ – NPM, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ JupyterLab Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° своитС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ:

lxc exec jupyterlab -- apk add nodejs npm

Π—Π° Π΄Π° работят Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π½Π° JupyterLab ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ инсталирамС, трябва Π΄Π° сС инсталират Π² потрСбитСлската дирСктория, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС стартира ΠΎΡ‚ потрСбитСля jupyter. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ няма ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π² стартиращата ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅ дирСктория; ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π²Π° само ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° трябва Π΄Π° я Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅. Π—Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ запишСм ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° СкспортиранС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° JUPYTERLAB_DIR Π² ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда Π½Π° потрСбитСля jupyter, Π² Ρ„Π°ΠΉΠ»Π° .bashrc, ΠΊΠΎΠΉΡ‚ΠΎ сС изпълнява всСки ΠΏΡŠΡ‚ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄ Π½Π° потрСбитСля Π² систСмата:

lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"

Π‘ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‰Π΅ инсталирамС спСциално Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ – ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² JupyterLab:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"

Π‘Π΅Π³Π° всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ Π·Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ стартиранС JupyterLab, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° инсталирамС ΠΈ няколко ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ:

  • 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"

Π‘Π΅Π³Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ слСднитС Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ стартиранС. JupyterLabМоТСшС Π΄Π° Π³ΠΎ ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Ρˆ с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π½ΠΎ Π² Ρ‚ΠΎΠ·ΠΈ случай, ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° стартиранС, която Π΅ Π² ΡƒΠΌΠ° Ρ‚ΠΈ, Ρ‰Π΅ бъдС Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π° ΠΎΡ‚ bash Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° Π½Π΅ Π½Π° хоста, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, записани Π² историята πŸ™‚

Π›ΠΎΠ³Π²Π°ΠΌΠ΅ сС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» jupyter:

lxc exec jupyterlab -- su -l jupyter

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° стартирайтС JupyterLab с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ:

[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser

ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π½Π° адрСса http://10.0.5.5:8888 ΠΈ Π½Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠ»Π°Ρ‚Π° сС страница Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ token Π΄ΠΎΡΡ‚ΡŠΠΏΠ°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°. ΠšΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ Π³ΠΎ ΠΈ Π³ΠΎ поставСтС Π½Π° страницата, слСд Ρ‚ΠΎΠ²Π° натиснСтС Π’Ρ…ΠΎΠ΄. Π‘Π»Π΅Π΄ Π²Ρ…ΠΎΠ΄Π°, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΌΠ΅Π½ΡŽΡ‚ΠΎ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ отляво, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ°Ρ‚ ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅Ρ‚Π΅ рисковСтС ΠΏΠΎ сигурността ΠΏΡ€ΠΈ инсталиранСто Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈ Π»ΠΈΡ†Π°, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ΠΊΠΈΠΏΡŠΡ‚ JupyterLab development Π½Π΅ носи отговорност:

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ цяло ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ JupyterLab ΠΈ Π³ΠΎ поставямС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠΌ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, изискващи ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ NodeJS, освСн Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π”ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ Π²Π°ΡˆΠΈΡ‚Π΅ Π»ΠΈΡ‡Π½ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° хоста /home ΠΎΡ‚ процСситС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ вСроятСн, Π° Π°ΠΊΠΎ станС, Ρ‚ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ са Π½ΡƒΠΆΠ½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π² хостовата систСма, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ стартирамС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ. На Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ информация ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ риска ΠΎΡ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² JupyterLab.

Π‘ΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ IPython Π½ΠΎΡƒΡ‚Π±ΡƒΡ†ΠΈ (страници Π² JupyterLab) сСга Ρ‰Π΅ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π² Π΄ΠΎΠΌΠ°ΡˆΠ½Π°Ρ‚Π° дирСктория Π½Π° потрСбитСля β€” /home/jupyter, Π½ΠΎ Π² Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π΅ Π΄Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π΄Π°Π½Π½ΠΈΡ‚Π΅ (сподСлим) ΠΌΠ΅ΠΆΠ΄Ρƒ хоста ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π·Π°Ρ‚ΠΎΠ²Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° ΠΈ спрСтС JupyterLab Ρ‡Ρ€Π΅Π· изпълнСниС Π½Π° Π³ΠΎΡ€Π΅Ρ‰Π° клавиша β€” CTRL+C ΠΈ отговаряйки y Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π΅Ρ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° сСсия Π½Π° потрСбитСля jupyter Ρ‡Ρ€Π΅Π· изпълнСниС Π½Π° Π³ΠΎΡ€Π΅Ρ‰Π° клавиша CTRL+D.

БподСлямС Π΄Π°Π½Π½ΠΈ с хоста ^

Π—Π° Π΄Π° сподСлитС Π΄Π°Π½Π½ΠΈΡ‚Π΅ с хоста, трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‚Π°ΠΊΠΎΠ²Π° устройство, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° позволява Ρ‚ΠΎΠ²Π° ΠΈ Π·Π° Ρ†Π΅Π»Ρ‚Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² която посочвамС слСднитС ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅:

  • lxc config device add β€” ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° добавя конфигурация Π½Π° устройството
  • jupyter β€” Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС добавя конфигурацията
  • hostfs β€” Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° устройството. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ всякакво ΠΈΠΌΠ΅.
  • disk β€” ΠŸΠΎΡΠΎΡ‡Π²Π° сС Ρ‚ΠΈΠΏΡŠΡ‚ Π½Π° устройството
  • ΠΏΡŠΡ‚ β€” ΠŸΠΎΡΠΎΡ‡Π²Π° сС ΠΏΡŠΡ‚Ρ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ 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, Π²ΠΈΠΆΡ‚Π΅ Π³Π»Π°Π²Π°Ρ‚Π° Бигурност. ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π² статията FreeRDP - свободна рСализация Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΎΡ‚Π΄Π°Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠ»ΠΎΡ‚ (RDP), ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° ΠΏΠΎΠ΄ лицСнзия Apache, Π΅ Ρ„ΠΎΡ€ΠΊ Π½Π° rdesktop. Най-Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π° 2.0.0: ..

НастройвамС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° хоста, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ бъдС контСйнСрният ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» jupyter, Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° $USER Ρ‰Π΅ посочи вашия хостов ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΊΠ°Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠ°:

sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks

Hello, World! ^

Ако всС ΠΎΡ‰Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π° сСсия Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с JupyterLab, рСстартирайтС я с новия ΠΊΠ»ΡŽΡ‡ --notebook-dir Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ стойността /mnt/hostfs ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ‚ Π΄ΠΎ ΠΊΠΎΡ€Π΅Π½Π° Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΡ†ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π° устройството, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°:

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° страницата http://10.0.5.5:8888 ΠΈ ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡŠΡ€Π²ΠΈΡ си Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ, натискайки Π±ΡƒΡ‚ΠΎΠ½Π° Π½Π° страницата, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ посочСно Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π½Π° страницата Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° Python, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ класичСския Π—Π΄Ρ€Π°Π²Π΅ΠΉ, свят!. Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ натиснСтС CTRL+ENTER ΠΈΠ»ΠΈ Π±ΡƒΡ‚ΠΎΠ½Π° Β«playΒ» Π½Π° инструмСнталната Π»Π΅Π½Ρ‚Π° ΠΎΡ‚Π³ΠΎΡ€Π΅, Π·Π° Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°Ρ‚Π΅ JupyterLab Π΄Π° изпълни Ρ‚ΠΎΠ²Π°:

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

На Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ ΠΏΠΎΡ‡Ρ‚ΠΈ всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, Π½ΠΎ няма Π΄Π° Π΅ интСрСсно, Π°ΠΊΠΎ Π½Π΅ инсталирамС Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Python ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΈ прилоТСния), ΠΊΠΎΠΈΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Ρ‚ стандартнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Python Π² JupyterLab, Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π½Π°ΠΏΡ€Π΅Π΄ πŸ™‚

P.S. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π΅, Ρ‡Π΅ старата рСализация Jupyter с ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ Jupyter Notebook Π½Π΅ Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π°Π»Π° ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ с JupyterLab. Π—Π° Π΄Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ към старата вСрсия, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° Π»ΠΈΠ½ΠΊΠ°, добавяйки суфикс/tree, Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ към Π½ΠΎΠ²Π°Ρ‚Π° вСрсия става с суфикс /lab, Π½ΠΎ Ρ‚ΠΎΠΉ Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½:

Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Python ^

Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ‰Π΅ инсталирамС ΠΌΠΎΡ‰Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Ρ‡ΠΈΠΉΡ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ΠΈ Π² Π½ΠΎΡƒΡ‚Π±ΡƒΡ†ΠΈΡ‚Π΅ NumPy, Pandas, Matplotlib, IPyWidgets ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° инсталирамС посочСнитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Python Ρ‡Ρ€Π΅Π· пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ JupyterLab.

ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ систСмнитС зависимости Π² Alpine Linux: pip β€” НуТСн Π΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ някои ΠΎΡ‚ тях са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ°

  • g++ ΠΈ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ с Python ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΊΠ°Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ C++ freetype-dev
  • β€” зависимост Π·Π° Python ΠΌΠΎΠ΄ΡƒΠ»Π° lxc exec jupyterlab -- apk add g++ freetype-dev Matplotlib

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΌΠ΅ зависимоститС:

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 ^

Ако ΠΈΠΌΠ°Ρ‚Π΅ стартиран JupyterLab, рСстартирайтС Π³ΠΎ, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ новоинсталиранитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π—Π° Ρ†Π΅Π»Ρ‚Π° Π² сСсията Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° натиснСтС CTRL+C Ρ‚Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ стартиран ΠΈ Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ y Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π·Π° спиранС, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ стартирайтС ΠΎΡ‚Π½ΠΎΠ²ΠΎ JupyterLab ΠΊΠ°Ρ‚ΠΎ натиснСтС стрСлката Π½Π°Π³ΠΎΡ€Π΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°Ρ‚Π°, Π·Π° Π΄Π° Π½Π΅ Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ слСд Ρ‚ΠΎΠ²Π° 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 ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° функция:

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

Много ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ IPyWidgets ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² ΡƒΡ€ΠΎΡ†ΠΈΡ‚Π΅ Ρ‚ΡƒΠΊ.

Какво ΠΎΡ‰Π΅? ^

Π”ΠΎΠ±Ρ€Π΅ ΡΠ²ΡŠΡ€ΡˆΠΈΡ…Ρ‚Π΅, Π°ΠΊΠΎ стС останали ΠΈ стигнали Π΄ΠΎ края Π½Π° статията. УмишлСно Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ… Π³ΠΎΡ‚ΠΎΠ² скрипт Π² края Π½Π° статията, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° инсталира JupyterLab с "Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ", Π·Π° Π΄Π° поощря Ρ€Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΈΡ‚Π΅ πŸ™‚ Но ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сами, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ, ΡΡŠΠ±ΠΈΡ€Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π² Π΅Π΄ΠΈΠ½ Bash скрипт πŸ™‚

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  • Π”Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΈΠΌΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° вмСсто IP адрСс, ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ Π²ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² прост /etc/hosts ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ адрСса http://jupyter.local:8888
  • Π”Π° СкспСримСнтиратС с ограничСнията Π½Π° рСсурситС Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π·Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π³Π»Π°Π²Π° Π² основнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° LXD ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация Π½Π° сайта Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° LXD.
  • Π‘ΠΌΠ΅Π½Π΅Ρ‚Π΅ Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π½Π° оформлСния:

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Jupyter Π½Π° ΠΎΡ€Π±ΠΈΡ‚Π° LXD

И ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅! Π’ΠΎΠ²Π° Π΅ всичко. ПоТСлавам Π²ΠΈ успСх!

UPDATE: 15.04.2020 18:30 β€” ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ… Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π² Π³Π»Π°Π²Π° β€žΠ—Π΄Ρ€Π°Π²Π΅ΠΉ, свСта!β€œ
UPDATE: 16.04.2020 10:00 β€” ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ… ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ… тСкст Π² описаниСто Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ. JupyterLab
UPDATE: 16.04.2020 10:40 β€” ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ… Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² тСкста ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ… Π³Π»Π°Π²Π°Ρ‚Π° β€žΠ˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° основСн софтуСр ΠΈ настройка Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚Π°β€œ

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster