αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αžαžΎαž’αŸ’αž“αž€αž’αŸ’αž›αžΆαž”αŸ‹αžŸαžΆαž€αž›αŸ’αž”αž„αž‡αžΆαž˜αž½αž™αž€αžΌαžŠ αž¬αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž… αžŠαŸ„αž™αž˜αž·αž“αžαŸ’αžœαž›αŸ‹αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž”αŸ†αž•αŸ’αž›αžΆαž‰αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαŸ‚αž›αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαž·αž‘αŸ’αž’αž·αž‡αžΆ root αž‘αŸ?

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžαžΆ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž¬αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αžΌαžœαž…αž„αŸ’αž€αŸ„αž˜αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΈαž€αŸ’αžšαžΌαž•αŸ’αžŸαŸαž„αŸ—αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαŸ‚αž˜αž½αž™? αž˜αž½αž™αžšαž™ αž¬αž˜αž½αž™αž–αžΆαž“αŸ‹?

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™ hypervisor αž”αž‰αŸ’αž αžΆαž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αž“αž·αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΎαžαŸ’αžšαžΌαžœαž…αŸ†αžŽαžΆαž™αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“? αž§αž‘αžΆαž αžšαžŽαŸ αž€αž»αž„αžαžΊαž“αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ LXD αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž… Alpine αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ 7.60MB RAM αž“αž·αž„αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž—αžΆαž‚αžαžΆαžŸαž‡αžΆ root αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ 9.5MB! αž™αž›αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αžŽαžΆβ€‹αžŠαŸ‚αžš Elon Musk? αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž› αžŸαž˜αžαŸ’αžαž—αžΆαž–αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ LXD - αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αž»αž„αžαžΊαž“αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž…

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž‡αžΆαž‘αžΌαž‘αŸ…αžαžΆαžαžΎαž’αž»αž„ LXD αž‡αžΆαž’αŸ’αžœαžΈαž αžΎαž™ αžαŸ„αŸ‡αž‘αŸ…αž˜αžΎαž›αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž αžΎαž™αž‚αž·αžαžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžœαŸαž‘αž·αž€αžΆαž”αŸ’αžšαž˜αžΌαž›αž•αž›αž”αŸ‚αž”αž“αŸαŸ‡ αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαžΆαž αŸ’αžœ αž—αŸ’αž‡αžΆαž”αŸ‹ UI-αž’αžΆαžαž»αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αžŠαŸ„αž™αžαžΆαž˜αžœαž“αŸ’αž (αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜) αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαž‡αžΆαž˜αž½αž™αž’αžαŸ’αžαž”αž‘αž‡αžΆαž˜αž½αž™ blackjack... αž€αžΆαžšαž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™? αž”αŸ’αžšαž—αŸαž‘αž”αŸ’αž›αž»αž€αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“? αž’αžΈαž™αŸ‰αžΆ... αž…αž„αŸ‹αž”αžΆαž“! αž…αž„αŸ‹! πŸ™‚

αžšαž€αž˜αžΎαž›αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž†αŸ’αž˜αžΆαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αžΎαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αž˜αž½αž™αŸ” αž‡αžΌαž‘αžΈαžαž‘αžΆαž” - αž‡αŸ†αž“αžΆαž“αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ Jupyter Notebook αž αž½αžŸαžŸαž˜αŸαž™ αž αžΎαž™αž™αžΎαž„αž€αŸαž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› Python αžŠαžΌαž…αž‡αžΆ αžŽαžΆαŸ†αž—αžΈ, αž•αŸαž“αžŠαžΆαžŸ, αž˜αŸ‰αžΆαžαŸ‹αž•αŸ’αž›αžΌαž›αžΈαž”, IPyWidgets αžŠαŸ‚αž›αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αžαžΆαž„αž›αžΎ αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž–αž·αžŸαŸαžŸαž˜αž½αž™ - αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ IPython αŸ”

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž•αŸ‚αž“αž€αžΆαžšαž…αž»αŸ‡αž…αžαž‚αž“αŸ’αž›αž„ ^

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αžŸαžΌαž˜β€‹αžšαŸ€αž”β€‹αžšαžΆαž”αŸ‹β€‹αž•αŸ‚αž“αž€αžΆαžšβ€‹αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–β€‹αžαŸ’αž›αžΈαŸ— αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αžœαžΆβ€‹αž€αžΆαž“αŸ‹αžαŸ‚β€‹αž„αžΆαž™αžŸαŸ’αžšαž½αž›β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž™αžΎαž„β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αž‚αž˜αŸ’αžšαŸ„αž„β€‹αžαžΆαž„αž›αžΎαŸ–

  • αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž§αž”αž€αžšαžŽαŸαž…αŸ‚αž€αž…αžΆαž™ Alpine αž›αžΈαž“αž»αž…αŸ”. αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž“αŸαŸ‡ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž˜αžΆαž“αž”αŸ†αžŽαž„αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αž αž αžΎαž™αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ†αž•αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž“αžΆαŸ†αž’αŸ„αž™αž“αŸ„αŸ‡αž‘αŸαŸ”
  • αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜αžαžΆαžŸαž“αž·αž˜αŸ’αž˜αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš αž αžΎαž™αžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αžœαžΆ - hostfs αž αžΎαž™αž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš root αŸ” αžαžΆαžŸαž“αŸαŸ‡αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαžαžαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž―αž€αžšαžΆαž‡αŸ’αž™αž–αžΈαž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž»αž„αžαžΊαž“αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž” αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΉαž„αž“αŸ…αžαŸ‚αž˜αžΆαž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž’αž»αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž™αž“αŸ’αžαž€αžΆαžšαž”αžŽαŸ’αžαžΆαž‰αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž€αž»αž„αžαžΊαž“αŸαžšαŸ”
  • αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ Bash, sudo, αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’
  • αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ Python, modules αž“αž·αž„ compile binary dependencies αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαŸ”
  • αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‡αžΌαž‘αžΈαžαž‘αžΆαž”αž”αŸ’αžŠαžΌαžšαžšαžΌαž”αžšαžΆαž„αžαžΆαž˜αž”αŸ†αžŽαž„ αžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž–αž·αž…αžΆαžšαžŽαžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ LXD αž‘αŸαž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αžƒαžΎαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž - αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ LXD - αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž»αž„αž›αžΈαž“αž»αž….

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αž·αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ ^

αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž™αžΎαž„αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžšαžΌαž”αž—αžΆαž– - alpine3, αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž»αž„ - jupyterlab αž αžΎαž™αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αž˜αŸ’αžšαž„αŸ‹αŸ–

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

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ hddroot αžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž—αžΆαž‚αžαžΆαžŸαž‡αžΆ root αž“αŸ…αž€αŸ’αž“αž»αž„ αž’αžΆαž„αžŸαŸ’αžαž»αž€αž‘αž»αž€ αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž›αžΎαžαžΆαžŸαžšαžΉαž„ HDDαŸ–

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []
lxc storage show hddpool

config:
  size: 10GB
  source: /dev/loop1
  volatile.initial_source: /dev/loop1
description: ""
name: hddpool
driver: btrfs
used_by:
- /1.0/images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
- /1.0/profiles/hddroot
status: Created
locations:
- none

αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž˜αž½αž™αž’αž»αž„αž“αŸ…αž›αžΎαžαžΆαžŸ HDD αžŠαŸ„αž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž’αž“αž’αžΆαž“αž“αŸƒαžαžΆαžŸ SSD αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž•αž„αžŠαŸ‚αžš πŸ™‚ αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” ssdroot.

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αž»αž„αžαžΊαž“αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžœαžΆαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž– STOPPEDαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’ init αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ–

lxc start jupyterlab

αž…αžΌαžšαž”αž„αŸ’αž αžΆαž‰αž”αž‰αŸ’αž‡αžΈαž’αž»αž„αž“αŸ…αž€αŸ’αž“αž»αž„ LXD αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… -c αžŠαŸ‚αž›αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αžαžΆ columns αž”αž„αŸ’αž αžΆαž‰αŸ–

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

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž»αž„αžαžΊαž“αŸαžš αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™ αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ default αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž–αžΈαž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘ αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ LXD - αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž»αž„αž›αžΈαž“αž»αž….

αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž“αŸαŸ‡αž‘αŸ…αž‡αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ†αž—αŸ’αž›αŸαž…αž”αžΆαž“αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αž»αž„αžαžΊαž“αŸαžš αž“αž·αž„αž˜αž·αž“αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ” αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ αž’αŸ’αž“αž€αž’αžΆαž…αžšαŸ†αž›αž„αžœαžΆαž”αžΆαž“αŸ”

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžŽαŸ’αžαžΆαž‰ eth0 αžŠαŸ‚αž›αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αž»αž„αžαžΆαž€αŸ‹ (αžŸαŸ’αž–αžΆαž“αž”αžŽαŸ’αžαžΆαž‰) lxdbr0 αžŠαŸ‚αž›αž™αžΎαž„αž”αžΎαž€ NAT αž™αŸ„αž„αžαžΆαž˜αž’αžαŸ’αžαž”αž‘αž˜αž»αž“ αž αžΎαž™αž€αž»αž„αžαžΊαž“αŸαžšαž“αžΉαž„αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž”αžΆαž“ αž αžΎαž™αž™αžΎαž„αž€αŸαž€αŸ†αžŽαžαŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž‹αž·αžαž·αžœαž“αŸ’αžαž‘αŸ…αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ - 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž“αŸ’αžαŸ‚αž˜αž§αž”αž€αžšαžŽαŸ αž’αž»αž„αžαŸ’αžšαžΌαžœαžαŸ‚αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αŸ–

lxc restart jupyterlab

αž–αž·αž“αž·αžαŸ’αž™αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž’αž»αž„αŸ–

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

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ ^

αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž»αž„αžαžΊαž“αŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αž€αž‰αŸ’αž…αž”αŸ‹αžŸαž˜αžΆαž‡αž·αž€
αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆ

bash
αžŸαŸ†αž”αž€ GNU Bourne Again

αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹ bash
αž€αžΆαžšβ€‹αž”αž‰αŸ’αž…αž”αŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžŸαŸ‚αž› bash

sudo
αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆ root

αžŸαŸ’αžšαž˜αŸ„αž›
αžˆαž»αžαž§αž”αž€αžšαžŽαŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž‚αžŽαž“αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžšαžŸαŸ’αžšαž˜αŸ„αž› αž“αž·αž„ PAM

tzdata
αž”αŸ’αžšαž—αž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ†αž”αž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αŸαž›αžœαŸαž›αžΆαžŸαž“αŸ’αžŸαŸ†αž–αž“αŸ’αž›αžΊαžαŸ’αž„αŸƒ

nano
αž€αŸ’αž›αžΌαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’ Pico αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„ system man-pages αžŠαŸ„αž™αžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ βˆ’ man man-pages mdocml-apropos less

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

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž“αž·αž„αž€αžΌαž“αžŸαŸ„αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαŸ–

  • lxc - αž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž‘αŸ…αž’αžαž·αžαž·αž‡αž“ LXD
  • exec - αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž’αžαž·αžαž·αž‡αž“ LXD αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš
  • jupyterlab - αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αž»αž„αžαžΊαž“αŸαžš
  • -- - αž€αžΌαž“αžŸαŸ„αž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž˜αž·αž“αž±αŸ’αž™αž”αž€αžŸαŸ’αžšαžΆαž™αžŸαŸ„αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž€αžΌαž“αžŸαŸ„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ lxc αž αžΎαž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžŠαžΌαž…αž‘αŸ…αž“αžΉαž„αž€αž»αž„αžαžΊαž“αŸαžš
  • apk - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž… Alpine
  • 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 αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαŸ”

αž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαžŸαŸ’αž‚αžΈαž‘αŸ…αž’αž»αž„αŸ” αžŸαŸ„ --create-dirs αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžαžαž―αž€αžŸαžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž˜αž·αž“αž˜αžΆαž“αŸ–

lxc file push /etc/skel/.bash_profile jupyterlab/etc/skel/.bash_profile --create-dirs
lxc file push /etc/skel/.bashrc jupyterlab/etc/skel/.bashrc
lxc file push /etc/skel/.dir_colors jupyterlab/etc/skel/.dir_colors

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ root αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αžŸαžΌαž˜αž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžš skel αžŠαŸ‚αž›αž‘αžΎαž”αžαŸ‚αž…αž˜αŸ’αž›αž„αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš αž‘αŸ…αž€αžΆαž“αŸ‹αžαžαž•αŸ’αž‘αŸ‡αŸ–

lxc exec jupyterlab -- cp /etc/skel/.bash_profile /root/.bash_profile
lxc exec jupyterlab -- cp /etc/skel/.bashrc /root/.bashrc
lxc exec jupyterlab -- cp /etc/skel/.dir_colors /root/.dir_colors

Alpine Linux αžŠαŸ†αž‘αžΎαž„αžŸαŸ‚αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ /bin/shαž™αžΎαž„αž“αžΉαž„αž‡αŸ†αž“αž½αžŸαžœαžΆαžŠαŸ„αž™ root αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ BashαŸ–

lxc exec jupyterlab -- usermod --shell=/bin/bash root

ថអ root αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž›αŸαžβ€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹β€‹αž‘αŸ αž‚αžΆαžαŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž–αžΆαž€αŸ’αž™β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž…αŸƒαžŠαž“αŸ’αž™αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžΆαžαŸ‹ αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αž€αž»αž„αžŸαžΌαž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ–

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "root:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: sFiXEvBswuWA

αž•αž„αžŠαŸ‚αžš αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈ - jupyter αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ–

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "jupyter:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: ZIcbzWrF8tki

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžš αžŠαŸ‚αž›αž‘αžΈαž˜αž½αž™αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαž»αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ sudoαž αžΎαž™αž‘αžΈαž–αžΈαžšαž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αžœαžΆαŸ” jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

αžαŸ„αŸ‡αž˜αžΎαž›αž€αŸ’αžšαž»αž˜αžŽαžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž· jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

αž’αŸ’αžœαžΈαŸ—αž˜αž·αž“αž’αžΈαž‘αŸ αžαŸ„αŸ‡αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αžαž‘αŸ€αžαŸ”

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž‡αžΆαžŸαž˜αžΆαž‡αž·αž€αž€αŸ’αžšαž»αž˜ sudo αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ sudo. αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆ sed αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž˜αžαž·αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ JupyterLab ^

αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž€αž”αŸ’αžšαŸ‚αž“αŸαŸ‡αŸ” αž•αž„αžŠαŸ‚αžš αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ Python pipαž˜αž·αž“αž˜αŸ‚αž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž½αž™αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž αž½αžŸαžŸαž˜αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαžŠαŸ„αž™αžŠαŸƒαžŠαŸ„αž™αžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ βˆ’ python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

αžαŸ„αŸ‡αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž˜αŸ‰αžΌαžŒαž»αž› python αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ pip αž‘αŸ…αž€αŸ†αžŽαŸ‚αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ–

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

αžŠαŸ†αž‘αžΎαž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž‚αžΊαž‡αžΆαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸ αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž‰αŸ’αž…αž”αŸ‹ jupyterlab αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžœαžΆαžŠαŸ„αž™αžŠαŸƒαŸ”

αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ NodeJS αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ - NPM αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž”αŸ’αžšαžΎαž–αž½αž€αžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αžšαž”αžŸαŸ‹αžœαžΆαŸ–

lxc exec jupyterlab -- apk add nodejs npm

αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž“αžΉαž„β€‹αžŠαŸ†αž‘αžΎαž„β€‹αž”αžΆαž“β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž–αž½αž€β€‹αž‚αŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αžŠαŸ†αž‘αžΎαž„β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž…αžΆαž”αŸ‹β€‹αžαžΆαŸ†αž„β€‹αž–αžΈβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž“αžΉαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžαžΎβ€‹αž˜β€‹αž–αžΈβ€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹ jupyter. αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαž˜αž·αž“αž˜αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αžαžαž‘αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αž‘αž½αž›αž™αž€αžαŸ‚αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αžœαžΆαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžŸαžšαžŸαŸαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΆαŸ†αž…αŸαž‰αž’αžαŸαžš JUPYTERLAB_DIR αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ jupyter, αž‘αŸ…αž€αžΆαž“αŸ‹β€‹αž―αž€αžŸαžΆαžš .bashrcαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αžΌαž›αŸ–

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

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž–αž·αžŸαŸαžŸ - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”:

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

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αž‡αžΆαžŸαŸ’αžšαŸαž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αž”αžΌαž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αŸ…αžαŸ‚αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  • toc - αžαžΆαžšαžΆαž„αž˜αžΆαžαž·αž€αžΆ αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž‡αžΈαž…αŸ†αžŽαž„αž‡αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘/αžŸαŸ€αžœαž—αŸ…αž€αžαŸ‹αžαŸ’αžšαžΆ
  • jupyterlab-horizon-theme - αžŸαŸ’αž”αŸ‚αž€ UI
  • jupyterlab_neon_theme - αžŸαŸ’αž”αŸ‚αž€ UI
  • jupyterlab-ubu-theme - αž˜αž½αž™β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž–αžΈαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’ αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ :) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„ GitHub αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ–

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyterlab/toc @mohirio/jupyterlab-horizon-theme @yeebc/jupyterlab_neon_theme"
lxc exec jupyterlab -- su -l jupyter -c "wget -c https://github.com/microcoder/jupyterlab-ubu-theme/archive/master.zip"
lxc exec jupyterlab -- su -l jupyter -c "unzip -q master.zip && rm master.zip"
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build jupyterlab-ubu-theme-master"
lxc exec jupyterlab -- su -l jupyter -c "rm -r jupyterlab-ubu-theme-master"

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž…αž„αž€αŸ’αžšαž„αž–αž½αž€αžœαžΆ αž–αŸ’αžšαŸ„αŸ‡αž–αžΈαž˜αž»αž“αž€αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αž‘αžΎαž„ αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡ --no-build αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž“αŸ’αžŸαŸ†αž–αŸαž›αžœαŸαž›αžΆαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαŸ„αž™αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž–αž½αž€αžœαžΆαž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ–

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”. αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ‚αž›αž–αž·αž”αžΆαž€αž…αž„αž…αžΆαŸ†αž€αŸ’αž“αž»αž„αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž…αžΆαŸ†αžŠαŸ„αž™ bash αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžšαž½αž…αž αžΎαž™ αžŠαžΎαž˜αŸ’αž”αžΈαž€αžαŸ‹αžαŸ’αžšαžΆαž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžšαŸ’αž :)

αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ jupyter:

lxc exec jupyterlab -- su -l jupyter

αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžšαžαŸ‹ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ„ αž“αž·αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αŸ–

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

αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž”αžŽαŸ’αžŠαžΆαž‰αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” http://10.0.5.5:8888 αž αžΎαž™αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž”αžΎαž€αž…αžΌαž› αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžŸαžΌαž›αŸ” αž…αž˜αŸ’αž›αž„αž“αž·αž„αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αž»αž… αž…αžΌαž›αž”αŸ’αžšαžΎαž‚αžŽαž“αžΈ. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΌαž› αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΊαž“αž»αž™αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αžαžΆαž„αž†αŸ’αžœαŸαž„ αžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž½αžš αž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž™αž€αž αžΆαž“αž·αž—αŸαž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžŠαŸ„αž™αžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ JupyterLab αž˜αž·αž“αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαŸ–

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸαž‘αžΆαŸ†αž„αž˜αžΌαž› αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαž˜αž½αž™ αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžš αž“αž·αž„αž”αŸ’αžšαžΎ NodeJS αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αž·αž“αž’αžΆαž…αž›αž½αž…αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαžŒαžΈαžŸαž€αŸ’αžšαŸ…αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž”αžΎαž€αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαž“αŸ„αŸ‡αž‘αŸαŸ” αž‘αž‘αž½αž›αž”αžΆαž“αž―αž€αžŸαžΆαžšαž―αž€αž‡αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ /home αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαž€αž»αž„αžαžΊαž“αŸαžšαž‘αŸ†αž“αž„αž‡αžΆαž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž‘αŸ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž’αŸ’αžœαžΎ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž›αžΎαž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ αžšαž”αŸ€αž”αž‚αŸ’αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·. αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”.

αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŸαŸ€αžœαž—αŸ…αž€αžαŸ‹αžαŸ’αžšαžΆ IPython (αž‘αŸ†αž–αŸαžšαž€αŸ’αž“αž»αž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”) αž₯αž‘αžΌαžœαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž•αŸ’αž‘αŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ - /home/jupyterαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ‚αž“αž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αŸ‚αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ (αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€) αžšαžœαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„αž€αž»αž„αžαžΊαž“αŸαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αž€αž»αž„αžŸαžΌαž›αžœαž·αž‰ αž αžΎαž™αžˆαž”αŸ‹ αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αžŠαŸ„αž™αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· hotkey - CTRL+C αž“αž·αž„αž†αŸ’αž›αžΎαž™ y αžαžΆαž˜αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž·αž‘αžœαž‚αŸ’αž‚αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ jupyter αž€αžΆαžšαž”αŸ†αž–αŸαž‰ hotkey CTRL+D.

αž€αžΆαžšαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ ^

αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡ αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαžΌαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαŸ‚αž›αž™αžΎαž„αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • lxc config device add - αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž§αž”αž€αžšαžŽαŸ
  • jupyter - αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜
  • hostfs - αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž§αž”αž€αžšαžŽαŸαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αžŽαžΆαž˜αž½αž™αŸ”
  • disk - αž”αŸ’αžšαž—αŸαž‘αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰
  • path - αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž› LXD αž“αžΉαž„αž—αŸ’αž‡αžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αŸ”
  • source - αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αŸ’αžšαž—αž– αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αžαžαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‡αžΆαž˜αž½αž™αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαž‘αŸ…αžαžΆαž˜αž…αŸ†αžŽαžΌαž›αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžαžΆαž‘αž»αž€ /home/dv/projects/ipython-notebooks αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžαŸ’αžšαžΌαžœαžαŸ‚αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“ UID αžŸαŸ’αž˜αžΎαž“αžΉαž„ SubUID + UIDαžŸαžΌαž˜αž˜αžΎαž›αž‡αŸ†αž–αžΌαž€ αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ” αžŸαž·αž‘αŸ’αž’αž·αž€αž»αž„αžαžΊαž“αŸαžš αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘ αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ LXD - αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž»αž„αž›αžΈαž“αž»αž….

αž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αžŠαŸ‚αž›αž˜αŸ’αž…αžΆαžŸαŸ‹αž“αžΉαž„αž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž»αž„αžαžΊαž“αŸαžš jupyterαž“αž·αž„αž’αžαŸαžš $USER αž“αžΉαž„αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž€αŸ’αžšαž»αž˜αŸ–

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

αžŸαž½αžŸαŸ’αžαžΈβ€‹αž–αž·αž—αž–αž›αŸ„αž€! ^

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαž˜αŸαž™αž€αž»αž„αžŸαžΌαž›αž”αžΎαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαž‡αžΆαž˜αž½αž™ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„αžαŸ’αž˜αžΈαŸ” --notebook-dir αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒ /mnt/hostfs αž‡αžΆαž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹ root αž“αŸƒαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž˜αž»αž“αŸ–

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž‘αŸ†αž–αŸαžš http://10.0.5.5:8888 αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒαžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž…αž»αž…αž”αŸŠαžΌαžαž»αž„αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž›αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžš αžŸαžΌαž˜αž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠ Python αžŠαŸ‚αž›αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž’αž€αŸ’αžŸαžšαž”αž»αžšαžΆαžŽ Hello World!. αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŸαžΌαž˜αž…αž»αž… CTRL+ENTER αž¬αž”αŸŠαžΌαžαž»αž„ "αž›αŸαž„" αž“αŸ…αž›αžΎαžšαž”αžΆαžšαž§αž”αž€αžšαžŽαŸαž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž›αžΎαžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ JupyterLab αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αŸ–

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž’αŸ’αžœαžΈαŸ—αžŸαŸ’αž‘αžΎαžšαžαŸ‚αžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αž·αž“αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› Python αž”αž“αŸ’αžαŸ‚αž˜ (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αŸαž‰αž›αž€αŸ’αžαžŽαŸˆ) αžŠαŸ‚αž›αž’αžΆαž…αž–αž„αŸ’αžšαžΈαž€αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžšαž”αžŸαŸ‹ Python αž™αŸ‰αžΆαž„αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αžαž‘αŸ€αž :)

PS αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸ„αŸ‡αž‚αžΊαžαžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αžΆαžŸαŸ‹ αž‡αž·αž” αž“αŸ…αž€αŸ’αžšαŸ„αž˜αžˆαŸ’αž˜αŸ„αŸ‡αž€αžΌαžŠ αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ Jupyter αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž‘αŸ…β€‹αž†αŸ’αž„αžΆαž™β€‹αž‘αŸβ€‹αž αžΎαž™β€‹αžœαžΆβ€‹αž˜αžΆαž“β€‹αžŸαŸ’αžšαž”β€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”. αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžαžΌαžšαž‘αŸ…αž€αŸ†αžŽαŸ‚αž…αžΆαžŸαŸ‹ αžŸαžΌαž˜αž’αŸ’αžœαžΎαžαžΆαž˜αžαŸ†αžŽαžŠαŸ‚αž›αž”αž“αŸ’αžαŸ‚αž˜αž”αž…αŸ’αž…αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“/treeαž αžΎαž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž˜αž½αž™αž”αž…αŸ’αž…αŸαž™ /labαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αŸαŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹ Python ^

αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž›αž—αžΆαžŸαžΆ Python αžŠαŸ‚αž›αž˜αžΆαž“αž’αž“αž»αž—αžΆαž–αžŠαžΌαž…αž‡αžΆ αžŽαžΆαŸ†αž—αžΈ, αž•αŸαž“αžŠαžΆαžŸ, αž˜αŸ‰αžΆαžαŸ‹αž•αŸ’αž›αžΌαž›αžΈαž”, IPyWidgets αž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”.

αž˜αž»αž“αž–αŸαž›αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› Python αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ pip αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„ Alpine LinuxαŸ–

  • g++ - αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž˜αŸ‰αžΌαžŒαž»αž› αžŠαŸ„αž™αžŸαžΆαžšαž–αž½αž€αžœαžΆαžαŸ’αž›αŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž—αžΆαžŸαžΆ C ++ αž αžΎαž™αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… Python αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž›αž‚αŸ„αž›αž–αžΈαžš
  • freetype-dev - αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΌαžŒαž»αž› Python αž˜αŸ‰αžΆαžαŸ‹αž•αŸ’αž›αžΌαž›αžΈαž”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αŸ–

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

αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™αŸ– αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ Alpine Linux αžœαžΆαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž…αž„αž€αŸ’αžšαž„αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹ NumPy αž”αžΆαž“αž‘αŸ αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž“αžΉαž„αž›αŸαž…αž‘αžΎαž„αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αŸ–

αž€αŸ†αž αž»αžŸαŸ– αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž€αž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ numpy αžŠαŸ‚αž›αž”αŸ’αžšαžΎ PEP 517 αž αžΎαž™αž˜αž·αž“αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž”αžΆαž“αž‘αŸαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αžŠαŸ†αž‘αžΎαž„β€‹αž˜αŸ‰αžΌαžŒαž»αž›β€‹αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž€αž‰αŸ’αž…αž”αŸ‹β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αžŠαŸ‚αž›β€‹αž…αŸ‚αž€αž…αžΆαž™β€‹αž€αŸ†αžŽαŸ‚β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž…αž„αž€αŸ’αžšαž„β€‹αžšαž½αž…β€‹αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž…αžΆαžŸαŸ‹β€‹αž‡αžΆαž„β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž“αŸ…β€‹αž›αžΎβ€‹αž‚αŸαž αž‘αŸ†αž–αŸαžšβ€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“β€‹αž”αž“αŸ’αžαž·αž…αŸ–

lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› Python αžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ pip. αžŸαžΌαž˜αž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹αž–αŸ’αžšαŸ„αŸ‡αž˜αŸ‰αžΌαžŒαž»αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αžΉαž„αž…αž„αž€αŸ’αžšαž„ αž αžΎαž™αž’αžΆαž…αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž–αžΈαžšαž”αžΈαž“αžΆαž‘αžΈαŸ” αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž› ~15 αž“αžΆαž‘αžΈαŸ–

lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib

αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αŸ–

lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*

αžŸαžΆαž€αž›αŸ’αž”αž„αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸ…αž€αŸ’αž“αž»αž„ JupyterLab ^

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžšαžαŸ‹ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αŸαž™αž€αž»αž„αžŸαžΌαž›αžŸαžΌαž˜αž…αž»αž… CTRL+C αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αžΆαž“αžœαžΆαžšαžαŸ‹αž αžΎαž™αž…αžΌαž› y αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ† αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αŸ’αžαž„αž‘αŸ€αž αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αžŠαŸ„αž™αž…αž»αž…αž–αŸ’αžšαž½αž‰αž‘αžΎαž„αž›αžΎαž“αŸ…αž›αžΎαž€αŸ’αžαžΆαžšαž…αž»αž… αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αŸ’αžαž„αž‘αŸ€αž αž“αž·αž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ Enter αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαŸ–

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

αž‘αŸ…αž‘αŸ†αž–αŸαžš http://10.0.5.5:8888/lab αž¬αž’αŸ’αžœαžΎαž±αŸ’αž™αž‘αŸ†αž–αŸαžšαž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž‘αžΆαžŸαŸ€αžœαž—αŸ…αž€αžαŸ‹αžαŸ’αžšαžΆαžαŸ’αž˜αžΈαŸ–

%matplotlib inline

from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0), b=(-3, 3, 0.5))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž‘αž‘αž½αž›αž”αžΆαž“αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆ IPyWidgets αž”αž„αŸ’αž€αžΎαžαž’αžΆαžαž» UI αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαž”αŸ’αžšαž—αž– αž“αž·αž„αž•αž„αžŠαŸ‚αžšαŸ” αž˜αŸ‰αžΆαžαŸ‹αž•αŸ’αž›αžΌαž›αžΈαž” αž”αž„αŸ’αž αžΆαž‰αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΌαžŠαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžšαžΌαž”αž—αžΆαž–αž‡αžΆαž€αŸ’αžšαžΆαž αŸ’αžœαž˜αž»αžαž„αžΆαžšαŸ–

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” IPyWidgets αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αžƒαžΎαž‰αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸαžšαŸ€αž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡

αžαžΎβ€‹αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž? ^

αž’αŸ’αžœαžΎαž”αžΆαž“αž›αŸ’αž’αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαŸ’αž“αžΆαž€αŸ‹αž“αŸ… αž αžΎαž™αžˆαžΆαž“αžŠαž›αŸ‹αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αŸ” αžŠαŸ„αž™αž…αŸαžαž“αžΆ αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αž„αŸ’αž αŸ„αŸ‡αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αž“αŸ„αŸ‡αž‘αŸαŸ” αž‡αžΌαž‘αžΈαžαž‘αžΆαž” αž“αŸ…αž€αŸ’αž“αž»αž„ "αž…αž»αž…αž˜αž½αž™" αžŠαžΎαž˜αŸ’αž”αžΈαž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαž€αž˜αŸ’αž˜αž€αžš :) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž”αžΆαž“ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž’αŸ’αž“αž€αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αžšαž½αž…αž αžΎαž™ αžŠαŸ„αž™αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αŸ…αž‡αžΆαž’αž€αŸ’αžŸαžš Bash αžαŸ‚αž˜αž½αž™ :)

αž’αŸ’αž“αž€β€‹αž€αŸβ€‹αž’αžΆαž…β€‹αžŠαŸ‚αžš:

  • αž€αŸ†αžŽαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž”αžŽαŸ’αžαžΆαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžŠαŸ„αž™αžŸαžšαžŸαŸαžšαžœαžΆαžŠαŸ„αž™αžŸαžΆαž˜αž‰αŸ’αž‰ /etc/hosts αž αžΎαž™αžœαžΆαž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ http://jupyter.local:8888
  • αž›αŸαž„αž‡αž»αŸ†αžœαž·αž‰αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž’αž“αž’αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžš αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αž’αžΆαž“αž‡αŸ†αž–αžΌαž€αž“αŸ…αž€αŸ’αž“αž»αž„ αžŸαž˜αžαŸ’αžαž—αžΆαž– LXD αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž¬αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžšαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ LXD αŸ”
  • αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ’αžšαž’αžΆαž“αž”αž‘αŸ–

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡ Jupyter αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž“αŸ’αž›αž„ LXD

αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“! αž’αžŸαŸ‹αž αžΎαž™αŸ” αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αž‡αžΌαž“αž–αžšαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™!

αž’αžΆαž”αŸ‹αžŠαŸαžαŸ– αžαŸ’αž„αŸƒαž‘αžΈ 15.04.2020/18/30 αž˜αŸ‰αŸ„αž„ XNUMX:XNUMX - αž€αŸ‚αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž‡αŸ†αž–αžΌαž€ β€œαž‡αŸ†αžšαžΆαž”αžŸαž½αžšαž–αž·αž—αž–αž›αŸ„αž€!”
αž’αžΆαž”αŸ‹αžŠαŸαžαŸ– 16.04.2020/10/00 αž˜αŸ‰αŸ„αž„ XNUMX:XNUMX β€” αž€αŸ‚ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž’αžαŸ’αžαž”αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ αž‡αžΌαž‘αžΈαžαž‘αžΆαž”
αž’αžΆαž”αŸ‹αžŠαŸαžαŸ– ០ៀ/៑៦/្០្០ 16.04.2020:10 β€” αž€αŸ‚αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘ αž“αž·αž„αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αŸ†αž–αžΌαž€ β€œαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹