Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

Π”Π° Π»ΠΈ стС ΠΈΠΊΠ°Π΄Π° ΠΌΠΎΡ€Π°Π»ΠΈ Π΄Π° Π΅ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡˆΠ΅Ρ‚Π΅ са ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ систСмским услуТним ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΠΌΠ° Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ ΠΊΠ°ΠΊΠΎ Π½Π΅ бистС Π±Ρ€ΠΈΠ½ΡƒΠ»ΠΈ ΠΎ основном систСму ΠΈ Π΄Π° Π½Π΅ бистС свС ΡΡ€ΡƒΡˆΠΈΠ»ΠΈ Ρƒ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ ΠΊΠΎΠ΄Ρƒ који Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° сС ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ са Ρ€ΠΎΠΎΡ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ˜Π°ΠΌΠ°?

Али ΡˆΡ‚Π° јС са Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΎΠΌ Π΄Π° Ρ€Π΅Ρ†ΠΈΠΌΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° тСстиратС ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Π² Π½ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… микросСрвиса Π½Π° јСдној машини? Π‘Ρ‚ΠΎΡ‚ΠΈΠ½Ρƒ ΠΈΠ»ΠΈ Ρ‡Π°ΠΊ Ρ…ΠΈΡ™Π°Π΄Ρƒ?

Π‘Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΠΌ машинама којима ΡƒΠΏΡ€Π°Π²Ρ™Π° Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, Ρ‚Π°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠ³Ρƒ ΠΈ Π±ΠΈΡ›Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈ, Π°Π»ΠΈ ΠΏΠΎ ΠΊΠΎΡ˜Ρƒ Ρ†Π΅Π½Ρƒ? На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Ρƒ Π›ΠšΠ‘Π” Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° АлпинС Π›ΠΈΠ½ΡƒΠΊ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜ΠΈ Ρ‚Ρ€ΠΎΡˆΠΈ само 7.60MB РАМ-Π° ΠΈ Π³Π΄Π΅ корСнска ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ˜Π° Π·Π°ΡƒΠ·ΠΈΠΌΠ° Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ° 9.5MB! Како Ρ‚ΠΈ сС Ρ‚ΠΎ свиђа, Π•Π»ΠΎΠ½Π΅ ΠœΡƒΡΠΊ? ΠŸΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Π΅ΠΌ Π΄Π° сС ΠΎΠ΄Ρ˜Π°Π²ΠΈΡ‚Π΅ основнС могућности Π›ΠšΠ‘Π” - ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΎΠ³ систСма Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ

Након ΡˆΡ‚ΠΎ јС ΡƒΠΎΠΏΡˆΡ‚Π΅ постало јасно ΡˆΡ‚Π° су Π›ΠšΠ‘Π” ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ, ΠΈΠ΄Π΅ΠΌΠΎ Π΄Π°Ρ™Π΅ ΠΈ размислимо, ΡˆΡ‚Π° Π°ΠΊΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Ρ‚Π°ΠΊΠ²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° харвСстСр Π½Π° којој ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π·Π° хост, Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½Π΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ (ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ) ΠΏΠΎΠ²Π΅ΠΆΠ΅Ρ‚Π΅ УИ-Π²ΠΈΡŸΠ΅Ρ‚Π΅ са својим ΠΊΠΎΠ΄ΠΎΠΌ, Π΄ΠΎΠΏΡƒΠ½ΠΈΡ‚ΠΈ ΠΊΠΎΠ΄ тСкстом са Π±Π»Π°Ρ†ΠΊΡ˜Π°Ρ†ΠΊ-ΠΎΠΌ... Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΡšΠ΅ΠΌ? НСка врста ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ Π±Π»ΠΎΠ³Π°? Π’Π°Ρƒ... Ρ…ΠΎΡ›Ρƒ! Π–Π΅Π»ΠΈΠΌ! πŸ™‚

ПоглСдај испод ΠΌΠ°Ρ‡ΠΊΠ΅ Π³Π΄Π΅ Ρ›Π΅ΠΌΠΎ лансирати Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± - слСдСћа Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ˜Π° корисничког ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ° умСсто застарСлог ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€ Π½ΠΎΡ‚Π΅Π±ΠΎΠΎΠΊ Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ€Π°, Π° инсталираћСмо ΠΈ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΊΠ°ΠΎ Π½ΠΏΡ€. ΠΡƒΠΌΠŸΠΈ, ΠΏΠ°Π½Π΄Π΅, ΠœΠ°Ρ‚ΠΏΠ»ΠΎΡ‚Π»ΠΈΠ±, Π˜ΠŸΠΈΠ’ΠΈΠ΄Π³Π΅Ρ‚Ρ који Ρ›Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ Π΄Π° ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ свС Π³ΠΎΡ€Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ ΠΈ свС Ρ‚ΠΎ сачуватС Ρƒ посСбној Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ – Π˜ΠŸΠΈΡ‚Ρ…ΠΎΠ½ Π»Π°ΠΏΡ‚ΠΎΠΏΡƒ.

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

План ΠΎΡ€Π±ΠΈΡ‚Π°Π»Π½ΠΎΠ³ ΠΏΠΎΠ»Π΅Ρ‚Π°ΡšΠ° ^

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

Π₯ајдС Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΠΌΠΎ ΠΊΡ€Π°Ρ‚Π°ΠΊ Π°ΠΊΡ†ΠΈΠΎΠ½ΠΈ ΠΏΠ»Π°Π½ ΠΊΠ°ΠΊΠΎ Π±ΠΈ Π½Π°ΠΌ олакшали ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ Π³ΠΎΡ€ΡšΠ΅ шСмС:

  • Π₯ајдС Π΄Π° инсталирамо ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Π½Π° основу ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π° Π·Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Ρƒ АлпинС Π›ΠΈΠ½ΡƒΠΊ. ΠšΠΎΡ€ΠΈΡΡ‚ΠΈΡ›Π΅ΠΌΠΎ ΠΎΠ²Ρƒ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Ρƒ Ρ˜Π΅Ρ€ јС усмСрСна Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·Π°ΠΌ ΠΈ Ρƒ ΡšΡƒ Ρ›Π΅ инсталирати само Π½Π°Ρ˜ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ˜ΠΈ софтвСр, Π½ΠΈΡˆΡ‚Π° ΡΡƒΠ²ΠΈΡˆΠ½ΠΎ.
  • Π₯ајдС Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ диск Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΈ Π΄Π°ΠΌΠΎ ΠΌΡƒ ΠΈΠΌΠ΅ - hostfs ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³Π° Π½Π° основни систСм Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. Овај диск Ρ›Π΅ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π° хосту ΠΈΠ· Π΄Π°Ρ‚ΠΎΠ³ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ° ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°. Π’Π°ΠΊΠΎ Ρ›Π΅ наши ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π±ΠΈΡ‚ΠΈ нСзависни ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°. Ако сС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΈΠ·Π±Ρ€ΠΈΡˆΠ΅, ΠΏΠΎΠ΄Π°Ρ†ΠΈ Ρ›Π΅ остати Π½Π° хосту. Π’Π°ΠΊΠΎΡ’Π΅, ΠΎΠ²Π° шСма јС корисна Π·Π° Π΄Π΅Ρ™Π΅ΡšΠ΅ истих ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° стандардних ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌΠ° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°.
  • Π₯ајдС Π΄Π° инсталирамо Басх, судо, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π΄ΠΎΠ΄Π°ΠΌΠΎ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅ΠΌΠΎ корисника систСма
  • Π₯ајдС Π΄Π° инсталирамо ΠŸΠΈΡ‚Ρ…ΠΎΠ½, ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΠΌΠΎ Π±ΠΈΠ½Π°Ρ€Π½Π΅ зависности Π·Π° ΡšΠΈΡ…
  • Π₯ајдС Π΄Π° инсталирамо ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±, ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ·Π³Π»Π΅Π΄, ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π΅ Π·Π° њСга.

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Π΅ΠΌΠΎ ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ са ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°, Π½Π΅Ρ›Π΅ΠΌΠΎ Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ€Π°Ρ‚ΠΈ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡΠ°ΡšΠ΅ Π›ΠšΠ‘Π”-Π°, свС ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ - ОсновнС карактСристикС Π›ΠšΠ‘Π” - Π›ΠΈΠ½ΡƒΠΊ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΈΡ… систСма.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° основног систСма ^

Направимо ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ са ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ Ρƒ којој Π½Π°Π²ΠΎΠ΄ΠΈΠΌΠΎ слику - 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

Ово ΠΌΠΈ дајС ΠΏΡ€ΠΈΠ»ΠΈΠΊΡƒ Π΄Π° Π΅ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡˆΠ΅ΠΌ са ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠΌΠ° Π½Π° Π₯Π”Π” диску, Ρ‡ΡƒΠ²Π°Ρ˜ΡƒΡ›ΠΈ рСсурсС Π‘Π‘Π” диска, који јС Ρ‚Π°ΠΊΠΎΡ’Π΅ доступан Ρƒ ΠΌΠΎΠΌ систСму πŸ™‚ Π·Π° који сам Π½Π°ΠΏΡ€Π°Π²ΠΈΠΎ посСбан ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ» ssdroot.

Након ΡˆΡ‚ΠΎ јС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΊΡ€Π΅ΠΈΡ€Π°Π½, ΠΎΠ½ јС Ρƒ ΡΡ‚Π°ΡšΡƒ STOPPED, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° Π³Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ΠΌ ΠΈΠ½ΠΈΡ‚ систСма Ρƒ ΡšΠ΅ΠΌΡƒ:

lxc start jupyterlab

Π₯ајдС Π΄Π° ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅ΠΌΠΎ листу ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΏΠΎΠΌΠΎΡ›Ρƒ тастСра -c ΡˆΡ‚ΠΎ ΡƒΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π° којС cΠΏΡ€ΠΈΠΊΠ°Π· стубова:

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

ΠŸΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°, ИП адрСса јС ΠΈΠ·Π°Π±Ρ€Π°Π½Π° насумично, ΠΏΠΎΡˆΡ‚ΠΎ смо користили ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ» default који јС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ конфигурисан Ρƒ Ρ‡Π»Π°Π½ΠΊΡƒ ОсновнС карактСристикС Π›ΠšΠ‘Π” - Π›ΠΈΠ½ΡƒΠΊ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΈΡ… систСма.

ΠžΠ²Ρƒ ИП адрСсу Ρ›Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ Ρƒ ΠΏΠ°ΠΌΡ‚Ρ™ΠΈΠ²ΠΈΡ˜Ρƒ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ΠΌ ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ° Π½Π° Π½ΠΈΠ²ΠΎΡƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°, Π° Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΎΠ³ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС сада Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΡ˜ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜ΠΈ. НС ΠΌΠΎΡ€Π°Ρ‚Π΅ ΠΎΠ²ΠΎ Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎ прСскочити.

ΠšΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ° eth0 који ΠΏΠΎΠ²Π΅Π·ΡƒΡ˜Π΅ΠΌΠΎ са ΠΏΡ€Π΅ΠΊΠΈΠ΄Π°Ρ‡Π΅ΠΌ (ΠΌΡ€Π΅ΠΆΠ½ΠΈ мост) lxdbr0 Ρƒ којСм смо ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΠ»ΠΈ НАВ ΠΏΡ€Π΅ΠΌΠ° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Ρ›Π΅ сада ΠΈΠΌΠ°Ρ‚ΠΈ приступ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ, Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ Π΄ΠΎΠ΄Π΅Ρ™ΡƒΡ˜Π΅ΠΌΠΎ ΠΈ статичку ИП адрСсу - 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      |
+------------+---------+------------------+--------------+

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ основног софтвСра ΠΈ подСшавањС систСма ^

Π”Π° бистС администрирали наш ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° инсталиратС слСдСћи софтвСр:

ΠΏΠ°ΠΊΠ΅Ρ‚
Opis

трСснути
ГНУ Π‘ΠΎΡƒΡ€Π½Π΅ Агаин љуска

басх-Π·Π°Π²Ρ€ΡˆΠ΅Ρ‚Π°ΠΊ
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Π±ΠΈΠ»Π½ΠΈ Π·Π°Π²Ρ€ΡˆΠ΅Ρ‚Π°ΠΊ Π·Π° басх схСлл

судо
Π”Π°Ρ˜Ρ‚Π΅ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈΠΌ корисницима могућност Π΄Π° ΠΏΠΎΠΊΡ€Π΅Ρ›Ρƒ Π½Π΅ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠ°ΠΎ Ρ€ΠΎΠΎΡ‚

сСнка
ΠŸΠ°ΠΊΠ΅Ρ‚ Π°Π»Π°Ρ‚Π° Π·Π° ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΎΠΌ ΠΈ Π½Π°Π»ΠΎΠ³ΠΎΠΌ са ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠΎΠΌ Π·Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ сСнци ΠΈ ПАМ

Ρ‚Π·Π΄Π°Ρ‚Π°
Π˜Π·Π²ΠΎΡ€ΠΈ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΡΠΊΠΎΡ˜ Π·ΠΎΠ½ΠΈ ΠΈ Π»Π΅Ρ‚ΡšΠ΅ΠΌ Ρ€Π°Ρ‡ΡƒΠ½Π°ΡšΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½Π°

Нано
ΠŸΠΈΡ†ΠΎ Π΅Π΄ΠΈΡ‚ΠΎΡ€ ΠΊΠ»ΠΎΠ½ са ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠΈΠΌΠ°

ΠŸΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС ΠΏΠΎΠ΄Ρ€ΡˆΠΊΡƒ Π½Π° систСмским ΠΌΠ°Π½-страницама Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅Ρ‚Π΅ инсталирати слСдСћС ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ βˆ’ man man-pages mdocml-apropos less

lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano

Π₯ајдС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ тастСрС којС смо користили:

  • lxc β€” ΠŸΠΎΠ·ΠΎΠ²ΠΈΡ‚Π΅ Π›ΠšΠ‘Π” ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°
  • exec - Π›ΠšΠ‘Π” ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ који ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ
  • 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

Π”Π° Π½Π΅ бисмо Ρ‚Ρ€ΠΎΡˆΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½Π° подСшавањС Басх-Π° Π·Π° Π½ΠΎΠ²Π΅ корисникС Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ, Ρƒ слСдСћим ΠΊΠΎΡ€Π°Ρ†ΠΈΠΌΠ° Ρ›Π΅ΠΌΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π΅ скСл Ρ„Π°Ρ˜Π»ΠΎΠ²Π΅ са хост систСма Ρƒ њСга. Ово Ρ›Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΠ»Π΅ΠΏΡˆΠ°Ρ‚Π΅ Басх Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ. Мој систСм Π΄ΠΎΠΌΠ°Ρ›ΠΈΠ½Π° јС ΠœΠ°ΡšΠ°Ρ€ΠΎ Π›ΠΈΠ½ΡƒΠΊ ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ којС сС ΠΊΠΎΠΏΠΈΡ€Π°Ρ˜Ρƒ /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors Ρƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ су ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° АлпинС Π›ΠΈΠ½ΡƒΠΊ ΠΈ Π½Π΅ ΠΈΠ·Π°Π·ΠΈΠ²Π°Ρ˜Ρƒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, Π°Π»ΠΈ ΠΌΠΎΠΆΠ΄Π° ΠΈΠΌΠ°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³Π°Ρ‡ΠΈΡ˜Ρƒ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Ρƒ ΠΈ ΠΌΠΎΡ€Π°Ρ‚Π΅ самостално Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π΅Ρ‚Π΅ Π΄Π° Π»ΠΈ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΊΠ°Π΄Π° сС Басх ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ.

ΠšΠΎΠΏΠΈΡ€Π°Ρ˜Ρ‚Π΅ скСл Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€. ΠšΡ™ΡƒΡ‡ --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"

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡΠ°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±-Π° ^

ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± јС ΠŸΠΈΡ‚Ρ…ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° инсталирамо овај Ρ‚ΡƒΠΌΠ°Ρ‡. Ρ‚Π°ΠΊΠΎΡ’Π΅, ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± инсталираћСмо ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° 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

ΠŸΠΎΡˆΡ‚ΠΎ су ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅ΡšΠ° Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± су СкспСримСнтални ΠΈ Π·Π²Π°Π½ΠΈΡ‡Π½ΠΎ сС Π½Π΅ ΠΈΡΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Ρƒ са Ρ˜ΡƒΠΏΠΈΡ‚Π΅Ρ€Π»Π°Π± ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° Π³Π° инсталирамо ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅ΠΌΠΎ Ρ€ΡƒΡ‡Π½ΠΎ.

Π₯ајдС Π΄Π° инсталирамо НодСЈБ ΠΈ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° њСга - НПМ, ΠΏΠΎΡˆΡ‚ΠΎ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± користи ΠΈΡ… Π·Π° својС Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π΅:

lxc exec jupyterlab -- apk add nodejs npm

Π—Π° Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π΅ Π·Π° ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± којС Ρ›Π΅ΠΌΠΎ инсталирати су Ρ€Π°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ ΠΈΡ… јС инсталирати Ρƒ кориснички ΠΈΠΌΠ΅Π½ΠΈΠΊ ΠΏΠΎΡˆΡ‚ΠΎ Ρ›Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π±ΠΈΡ‚ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚Π° ΠΎΠ΄ корисника jupyter. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ јС Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ° Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ који сС ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ; Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‚Π° само ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° ΠΈ Π·Π°Ρ‚ΠΎ јС ΠΌΠΎΡ€Π°ΠΌΠΎ дСфинисати. Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, написаћСмо ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π° ΠΈΠ·Π²ΠΎΠ· ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ JUPYTERLAB_DIR Ρƒ корисничком ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ jupyter, Π΄Π° поднСсС .bashrcкоји сС ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° сваки ΠΏΡƒΡ‚ ΠΊΠ°Π΄Π° сС корисник ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈ:

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

Π‘Π»Π΅Π΄Π΅Ρ›Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ›Π΅ инсталирати ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅ΡšΠ΅ - ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±:

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

Π‘Π°Π΄Π° јС свС спрСмно Π·Π° ΠΏΡ€Π²ΠΎ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±, Π°Π»ΠΈ још ΡƒΠ²Π΅ΠΊ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° инсталирамо Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ корисних Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π°:

  • toc β€” Π‘Π°Π΄Ρ€ΠΆΠ°Ρ˜, Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ листу наслова Ρƒ Ρ‡Π»Π°Π½ΠΊΡƒ/Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡ†ΠΈ
  • jupyterlab-horizon-theme β€” УИ Ρ‚Π΅ΠΌΠ°
  • jupyterlab_neon_theme β€” УИ Ρ‚Π΅ΠΌΠ°
  • jupyterlab-ubu-theme - Још јСдан Ρ‚Π΅ΠΌΠ° ΠΎΠ΄ Π°ΡƒΡ‚ΠΎΡ€Π° овај Ρ‡Π»Π°Π½Π°ΠΊ :) Али Ρƒ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° ΠΈΠ· Π“ΠΈΡ‚Π₯ΡƒΠ± ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π°

Π”Π°ΠΊΠ»Π΅, ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ слСдСћС ΠΊΠΎΠΌΠ°Π½Π΄Π΅ узастопно Π΄Π° бистС инсталирали ΠΎΠ²Π° ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅ΡšΠ°:

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 Π° Π½Π° страници која сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ унСситС ΠΆΠ΅Ρ‚ΠΎΠ½ приступ који Ρ›Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Ρƒ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ. ΠšΠΎΠΏΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³Π° ΠΈ Π½Π°Π»Π΅ΠΏΠΈΡ‚Π΅ Π½Π° страницу, Π° Π·Π°Ρ‚ΠΈΠΌ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠŸΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚Π΅ сС. Након ΡˆΡ‚ΠΎ сС ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚Π΅, ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΌΠ΅Π½ΠΈ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° са Π»Π΅Π²Π΅ странС, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° слици испод, Π³Π΄Π΅ Ρ›Π΅ ΠΎΠ΄ вас Π±ΠΈΡ‚ΠΈ Π·Π°Ρ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ, ΠΊΠ°Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π°, Π΄Π° ΠΏΡ€Π΅ΡƒΠ·ΠΌΠ΅Ρ‚Π΅ бСзбСдноснС Ρ€ΠΈΠ·ΠΈΠΊΠ΅ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ΠΌ Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° ΠΎΠ΄ Ρ‚Ρ€Π΅Ρ›ΠΈΡ… Π»ΠΈΡ†Π° Π·Π° којС јС ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± Ρ€Π°Π·Π²ΠΎΡ˜ нијС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½:

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, ΠΈΠ·ΠΎΠ»ΡƒΡ˜Π΅ΠΌΠΎ Ρ†Π΅Π»ΠΈΠ½Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± ΠΈ ставитС Π³Π° Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Ρ‚Π°ΠΊΠΎ Π΄Π° Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π΅ Ρ‚Ρ€Π΅Ρ›Π΅ странС којС Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ˜Ρƒ ΠΈ користС НодСЈБ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π±Π°Ρ€Π΅ΠΌ Π΄Π° ΡƒΠΊΡ€Π°Π΄Ρƒ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° диску осим ΠΎΠ½ΠΈΡ… којС ΠΎΡ‚Π²Π°Ρ€Π°ΠΌΠΎ ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°. Π”ΠΎΡ’ΠΈΡ‚Π΅ Π΄ΠΎ ΡΠ²ΠΎΡ˜ΠΈΡ… ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° хосту /home ΠΌΠ°Π»ΠΎ јС Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ Π΄Π° Ρ›Π΅ процСси ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° успСти, Π° Π°ΠΊΠΎ ΡƒΡΠΏΠ΅Ρ˜Ρƒ, ΠΎΠ½Π΄Π° ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ˜Π΅ Π½Π°Π΄ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° Π½Π° систСму хоста, ΠΏΠΎΡˆΡ‚ΠΎ ΠΌΠΈ ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ΠΌΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Ρƒ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΎΠ²Π°Π½ΠΈ Ρ€Π΅ΠΆΠΈΠΌ. На основу ΠΎΠ²ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π½ΠΈΡ‚ΠΈ Ρ€ΠΈΠ·ΠΈΠΊ ΠΎΠ΄ ΡƒΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ° Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±.

НаправљСнС Π˜ΠŸΠΈΡ‚Ρ…ΠΎΠ½ свСскС (страницС Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±) Ρ›Π΅ сада Π±ΠΈΡ‚ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ Ρƒ ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΡƒ корисника - /home/jupyter, Π°Π»ΠΈ наши ΠΏΠ»Π°Π½ΠΎΠ²ΠΈ су Π΄Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ (Π΄Π΅Ρ™Π΅ΡšΠ΅) ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ хоста ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°, ΠΏΠ° сС Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Ρƒ ΠΈ зауставитС ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ΅ΠΌ ΠΏΡ€Π΅Ρ‡ΠΈΡ†Π΅ - CTRL+C ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°ΡšΠ΅ y Π½Π° Π·Π°Ρ…Ρ‚Π΅Π². Π—Π°Ρ‚ΠΈΠΌ ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΡ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρƒ ΡΠ΅ΡΠΈΡ˜Ρƒ корисника jupyter Π΄ΠΎΠ²Ρ€ΡˆΠ°Π²Π°ΡšΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π΅Π½Ρ‚Π½ΠΎΠ³ тастСра CTRL+D.

Π”Π΅Ρ™Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° са Π΄ΠΎΠΌΠ°Ρ›ΠΈΠ½ΠΎΠΌ ^

Π”Π° бистС ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ са хостом, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΡƒΡ€Π΅Ρ’Π°Ρ˜ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ који Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ ΠΈ Π΄Π° Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅, ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ слСдСћу ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π³Π΄Π΅ Π½Π°Π²ΠΎΠ΄ΠΈΠΌΠΎ слСдСћС ΠΊΡ™ΡƒΡ‡Π΅Π²Π΅:

  • lxc config device add β€” Команда додајС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Ρƒ ΡƒΡ€Π΅Ρ’Π°Ρ˜Π°
  • jupyter β€” Π˜Π” ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° ΠΊΠΎΠΌΠ΅ јС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π΄ΠΎΠ΄Π°Ρ‚Π°
  • hostfs β€” Π˜Π” ΡƒΡ€Π΅Ρ’Π°Ρ˜Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ поставити Π±ΠΈΠ»ΠΎ којС ΠΈΠΌΠ΅.
  • disk β€” Π’ΠΈΠΏ ΡƒΡ€Π΅Ρ’Π°Ρ˜Π° јС Π½Π°Π·Π½Π°Ρ‡Π΅Π½
  • path β€” ΠžΠ΄Ρ€Π΅Ρ’ΡƒΡ˜Π΅ ΠΏΡƒΡ‚Π°ΡšΡƒ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ Π½Π° који Ρ›Π΅ Π›ΠšΠ‘Π” ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ овај ΡƒΡ€Π΅Ρ’Π°Ρ˜
  • source β€” ΠžΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ·Π²ΠΎΡ€, ΠΏΡƒΡ‚Π°ΡšΡƒ Π΄ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ° Π½Π° хосту који ΠΆΠ΅Π»ΠΈΡ‚Π΅ Π΄Π° Π΄Π΅Π»ΠΈΡ‚Π΅ са ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΠΌ. ΠžΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°ΡšΡƒ ΠΏΡ€Π΅ΠΌΠ° вашим ΠΆΠ΅Ρ™Π°ΠΌΠ°
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

Π—Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /home/dv/projects/ipython-notebooks Π΄ΠΎΠ·Π²ΠΎΠ»Π° ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ подСшСна Π½Π° корисника ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° који Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ ΠΈΠΌΠ° Π£Π˜Π” јСднак SubUID + UID, Π²ΠΈΠ΄ΠΈ ΠΏΠΎΠ³Π»Π°Π²Ρ™Π΅ Бигурност. ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ˜Π΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° Ρƒ Ρ‡Π»Π°Π½ΠΊΡƒ ОсновнС карактСристикС Π›ΠšΠ‘Π” - Π›ΠΈΠ½ΡƒΠΊ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΈΡ… систСма.

ΠŸΠΎΠ΄Π΅ΡΠΈΡ‚Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Ρƒ Π·Π° хост, Π³Π΄Π΅ Ρ›Π΅ власник Π±ΠΈΡ‚ΠΈ корисник ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° 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 ΠΈΠ»ΠΈ Π΄ΡƒΠ³ΠΌΠ΅ "ΠΏΠ»Π°ΠΈ" Π½Π° Ρ‚Ρ€Π°Ρ†ΠΈ са Π°Π»Π°Ρ‚ΠΊΠ°ΠΌΠ° Π½Π° Π²Ρ€Ρ…Ρƒ Π΄Π° Π±ΠΈ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± ΡƒΡ€Π°Π΄ΠΈΠΎ ΠΎΠ²ΠΎ:

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

Π£ ΠΎΠ²ΠΎΠΌ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ, скоро свС јС спрСмно Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρƒ, Π°Π»ΠΈ Π±ΠΈΡ›Π΅ Π½Π΅Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΎ Π°ΠΊΠΎ Π½Π΅ инсталирамо Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ (ΠΏΡƒΠ½ΠΎΠΏΡ€Π°Π²Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅) који ΠΌΠΎΠ³Ρƒ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΎ Π΄Π° ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅ стандарднС могућности ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±, Π΄Π°ΠΊΠ»Π΅, ΠΈΠ΄Π΅ΠΌΠΎ Π΄Π°Ρ™Π΅ :)

ПБ Π—Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΎ јС Π΄Π° јС стара ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€ ΠΏΠΎΠ΄ ΠΊΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€ НотСбоок нијС нСстала ΠΈ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ са ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±. Π”Π° бистС ΠΏΡ€Π΅ΡˆΠ»ΠΈ Π½Π° стару Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ, слСдитС Π²Π΅Π·Ρƒ Π΄ΠΎΠ΄Π°Ρ˜ΡƒΡ›ΠΈ суфикс Ρƒ адрСсу/tree, Π° ΠΏΡ€Π΅Π»Π°Π·Π°ΠΊ Π½Π° Π½ΠΎΠ²Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ Π²Ρ€ΡˆΠΈ сС суфиксом /lab, Π°Π»ΠΈ Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° Π±ΡƒΠ΄Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ:

ΠŸΡ€ΠΎΡˆΠΈΡ€ΠΈΠ²Π°ΡšΠ΅ могућности ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° ^

Π£ ΠΎΠ²ΠΎΠΌ ΠΎΠ΄Π΅Ρ™ΠΊΡƒ Ρ›Π΅ΠΌΠΎ инсталирати Ρ‚Π°ΠΊΠΎ ΠΌΠΎΡ›Π½Π΅ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ Ρ˜Π΅Π·ΠΈΡ‡ΠΊΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су ΠΡƒΠΌΠŸΠΈ, ΠΏΠ°Π½Π΄Π΅, ΠœΠ°Ρ‚ΠΏΠ»ΠΎΡ‚Π»ΠΈΠ±, Π˜ΠŸΠΈΠ’ΠΈΠ΄Π³Π΅Ρ‚Ρ Ρ‡ΠΈΡ˜ΠΈ су Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ интСгрисани Ρƒ Π»Π°ΠΏΡ‚ΠΎΠΏ Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ€Π΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±.

ΠŸΡ€Π΅ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ° Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ… ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΏΡ€Π΅ΠΊΠΎ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° pip ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌΠΎ систСмскС зависности Ρƒ АлпинС Π›ΠΈΠ½ΡƒΠΊ-Ρƒ:

  • g++ β€” ΠŸΠΎΡ‚Ρ€Π΅Π±Π°Π½ Π·Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π°, ΠΏΠΎΡˆΡ‚ΠΎ су Π½Π΅ΠΊΠΈ ΠΎΠ΄ ΡšΠΈΡ… ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Ρƒ Ρ˜Π΅Π·ΠΈΠΊΡƒ Π¦ + + ΠΈ ΠΏΠΎΠ²Π΅ΠΆΠΈΡ‚Π΅ сС са ΠŸΠΈΡ‚Ρ…ΠΎΠ½-ΠΎΠΌ Ρ‚ΠΎΠΊΠΎΠΌ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° ΠΊΠ°ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
  • freetype-dev - зависност ΠΎΠ΄ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΌΠΎΠ΄ΡƒΠ»Π° ΠœΠ°Ρ‚ΠΏΠ»ΠΎΡ‚Π»ΠΈΠ±

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ зависности:

lxc exec jupyterlab -- apk add g++ freetype-dev

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ јСдан ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠΌ ΡΡ‚Π°ΡšΡƒ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅ АлпинС Π›ΠΈΠ½ΡƒΠΊ-Π°, Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ›Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Ρ‚ΠΈ Π½ΠΎΠ²Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ ΠΡƒΠΌΠŸΠΈ-Π°; ΠΏΠΎΡ˜Π°Π²ΠΈΡ›Π΅ сС Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜ΠΈ ΠΊΠΎΡ˜Ρƒ нисам ΠΌΠΎΠ³Π°ΠΎ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ:

Π“Π Π•Π¨ΠšΠ: НијС ΠΌΠΎΠ³ΡƒΡ›Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΎΠ²Π΅ Π·Π° Π½ΡƒΠΌΠΏΠΈ који користС ΠŸΠ•ΠŸ 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/*

Π’Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π° Ρƒ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±-Ρƒ ^

Ако Ρ‚Ρ€Ρ‡ΠΈΡ‚Π΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±, ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π³Π° ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎ Π΄Π° сС новоинсталирани ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ˜Ρƒ. Π”Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, Ρƒ сСсији ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ 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

Π’Ρ€Π΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΡ˜Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΊΠ°ΠΎ Π½Π° слици испод, Π³Π΄Π΅ Π˜ΠŸΠΈΠ’ΠΈΠ΄Π³Π΅Ρ‚Ρ Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ УИ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π° страници који ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅Π°Π³ΡƒΡ˜Π΅ са ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠœΠ°Ρ‚ΠΏΠ»ΠΎΡ‚Π»ΠΈΠ± ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΊΠΎΠ΄Π° Ρƒ ΠΎΠ±Π»ΠΈΠΊΡƒ сликС ΠΊΠ°ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅:

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

Много ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π˜ΠŸΠΈΠ’ΠΈΠ΄Π³Π΅Ρ‚Ρ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Π° ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Ρƒ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΡ˜Π°Π»ΠΈΠΌΠ° ΠΎΠ²Π΄Π΅

Π¨Ρ‚Π° још? ^

Π‘Ρ€Π°Π²ΠΎ Π°ΠΊΠΎ стС остали ΠΈ дошли Π΄ΠΎ самог ΠΊΡ€Π°Ρ˜Π° Ρ‡Π»Π°Π½ΠΊΠ°. НамСрно нисам поставио Π³ΠΎΡ‚ΠΎΠ²Ρƒ скрипту Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ Ρ‡Π»Π°Π½ΠΊΠ° која Π±ΠΈ сС инсталирала ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π± јСдним ΠΊΠ»ΠΈΠΊΠΎΠΌ Π΄Π° ΠΎΡ…Ρ€Π°Π±Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π΄Π½ΠΈΠΊΠ΅ :) Али Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ сами, ΠΏΠΎΡˆΡ‚ΠΎ Π²Π΅Ρ› Π·Π½Π°Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ стС сакупили ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρƒ Ρ˜Π΅Π΄Π½Ρƒ Басх скрипту :)

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅:

  • ΠŸΠΎΠ΄Π΅ΡΠΈΡ‚Π΅ Π½Π°Π·ΠΈΠ² ΠΌΡ€Π΅ΠΆΠ΅ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ умСсто ИП адрСсС Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅Ρ‚Π΅ Π³Π° написати Π½Π° Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΠΌ /etc/hosts ΠΈ ΡƒΠΊΡƒΡ†Π°Ρ˜Ρ‚Π΅ адрСсу Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡ http://jupyter.local:8888
  • ΠŸΠΎΠΈΠ³Ρ€Π°Ρ˜Ρ‚Π΅ сС са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ΅ΠΌ рСсурса Π·Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€, Π·Π° ΠΎΠ²ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ ΠΏΠΎΠ³Π»Π°Π²Ρ™Π΅ Ρƒ основнС Π›ΠšΠ‘Π” могућности ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π°ΠΆΠΈΡ‚Π΅ вишС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° Π½Π° ΡΠ°Ρ˜Ρ‚Ρƒ Π·Π° Π›ΠšΠ‘Π” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π΅.
  • ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚Π΅ΠΌΡƒ:

Π›Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π° Ρƒ Π›ΠšΠ‘Π” ΠΎΡ€Π±ΠΈΡ‚Ρƒ

И још ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ! Π’ΠΎ јС свС. Π–Π΅Π»ΠΈΠΌ Π²Π°ΠΌ успСх!

ΠΠ–Π£Π Π˜Π ΠΠŠΠ•: 15.04.2020 18:30 - Π˜ΡΠΏΡ€Π°Π²Ρ™Π΅Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ ΠΏΠΎΠ³Π»Π°Π²Ρ™Ρƒ β€žΠ—Π΄Ρ€Π°Π²ΠΎ, свСт!β€œ
ΠΠ–Π£Π Π˜Π ΠΠŠΠ•: 16.04.2020 10:00 β€” Π˜ΡΠΏΡ€Π°Π²Ρ™Π΅Π½ ΠΈ Π΄ΠΎΠ΄Π°Ρ‚ тСкст Ρƒ опису Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ˜Π΅ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€Π° Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° ΠˆΡƒΠΏΠΈΡ‚Π΅Ρ€Π›Π°Π±
ΠΠ–Π£Π Π˜Π ΠΠŠΠ•: 16.04.2020 10:40 β€” Π˜ΡΠΏΡ€Π°Π²Ρ™Π΅Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ΅ ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Π½Π΅ Ρƒ тСксту ΠΈ ΠΌΠ°Π»ΠΎ измСњСно Π½Π° Π±ΠΎΡ™Π΅ ΠΏΠΎΠ³Π»Π°Π²Ρ™Π΅ β€žΠ˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ основног софтвСра ΠΈ подСшавањС ΡΠΈΡΡ‚Π΅ΠΌΠ°β€œ

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€