āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋ āĻ•āĻ–āύ⧋ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āϕ⧋āĻĄ āĻŦāĻž āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āύāĻŋāϝāĻŧ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž-āύāĻŋāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āϛ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āύāĻŋāϝāĻŧ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āύāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϰ⧁āϟ āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϏāĻžāĻĨ⧇ āϚāĻžāϞāĻžāύ⧋āϰ āĻ•āĻĨāĻž āϕ⧋āĻĄā§‡ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āϭ⧇āϙ⧇ āĻĢ⧇āϞāĻž?

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāχ āϏāĻ¤ā§āϝāϟāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϕ⧀ āĻŦāϞāĻž āϝāĻžāĻ• āϝ⧇ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻļāĻŋāύ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻĒ⧁āϰ⧋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻŦāĻž āϚāĻžāϞāĻžāύ⧋ āĻĻāϰāĻ•āĻžāϰ? āĻāĻ•āĻļ āĻŦāĻž āĻāĻ• āĻšāĻžāϜāĻžāϰ?

āĻāĻ•āϟāĻŋ āĻšāĻžāχāĻĒāĻžāϰāĻ­āĻžāχāϜāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇, āĻāχ āϜāĻžāϤ⧀āϝāĻŧ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻšāĻŦ⧇, āϤāĻŦ⧇ āϕ⧀ āĻŽā§‚āĻ˛ā§āϝ⧇? āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāϞāĻĒāĻžāχāύ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻļāύ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāϞāĻāĻ•ā§āϏāĻĄāĻŋ-āϤ⧇ āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ 7.60MB RAM, āĻāĻŦāĻ‚ āϝ⧇āĻ–āĻžāύ⧇ āϰ⧁āϟ āĻĒāĻžāĻ°ā§āϟāĻŋāĻļāύ āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ⧇āϰ āĻĒāϰ⧇ āĻĻāĻ–āϞ āĻ•āϰ⧇ 9.5MB! āφāĻĒāύāĻŋ āĻāϟāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇āύ, āĻāϞāύ āĻŽāĻžāĻ¸ā§āĻ•? āφāĻŽāĻŋ āĻšā§‡āĻ• āφāωāϟ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ LXD āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āĻ•ā§āώāĻŽāϤāĻž - āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ

āĻāϞāĻāĻ•ā§āϏāĻĄāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋ āϕ⧀ āϤāĻž āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻšāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇, āφāϏ⧁āύ āφāϰāĻ“ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāχ āĻāĻŦāĻ‚ āĻ­āĻžāĻŦāĻŋ, āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻšāĻžāĻ°ā§āϭ⧇āĻ¸ā§āϟāĻžāϰ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻĨāĻžāĻ•āϞ⧇ āϕ⧀ āĻšāϤ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻšā§‹āĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āϕ⧋āĻĄ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻ—ā§āϰāĻžāĻĢ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ (āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­āĻ­āĻžāĻŦ⧇) āφāĻĒāύāĻžāϰ āϕ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ UI- āωāχāĻœā§‡āϟāϗ⧁āϞāĻŋ āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻŦā§āĻ˛ā§āϝāĻžāĻ•āĻœā§āϝāĻžāĻ•... āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϏāĻš āĻĒāĻžāĻ ā§āϝ āϏāĻš āϕ⧋āĻĄā§‡āϰ āĻĒāϰāĻŋāĻĒā§‚āϰāĻ•? āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻŦā§āϞāĻ— āĻ•āĻŋāϛ⧁ āϧāϰāύ⧇āϰ? āĻŦāĻžāĻš... āφāĻŽāĻŋ āĻāϟāĻž āϚāĻžāχ! āϚāĻžāχ! 🙂

āĻŦāĻŋāĻĄāĻŧāĻžāϞ⧇āϰ āύ⧀āĻšā§‡ āĻĻ⧇āϖ⧁āύ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ¤ā§āϰ⧇ āϞāĻžā§āϚ āĻ•āϰāĻŦ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ - āĻĒ⧁āϰāĻžāύ⧋ āϜ⧁āĻĒāĻŋāϟāĻžāϰ āύ⧋āϟāĻŦ⧁āϕ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒā§āϰāϜāĻ¨ā§āĻŽā§‡āϰ āχāωāϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞāĻ“ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ āϝ⧇āĻŽāύ āύāĻŽā§āϰ, āĻĒāĻžāĻ¨ā§āĻĄāĻžāϏ, āĻŽā§āϝāĻžāϟāĻĒā§āĻ˛ā§āϞ⧋āĻŦ, IPyWidgets āϝāĻž āφāĻĒāύāĻžāϕ⧇ āωāĻĒāϰ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώ āĻĢāĻžāχāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇ - āĻāĻ•āϟāĻŋ āφāχāĻĒāĻŋāĻĨāύ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒāĨ¤

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻ…āϰāĻŦāĻŋāϟāĻžāϞ āĻŸā§‡āĻ• āĻ…āĻĢ āĻĒā§āĻ˛ā§āϝāĻžāύ ^

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āωāĻĒāϰ⧇āϰ āĻ¸ā§āĻ•āĻŋāĻŽāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻšāϜ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻ•āĻ°ā§āĻŽ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻžāϰ āϰ⧂āĻĒāϰ⧇āĻ–āĻž āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•:

  • āĻāϰ āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻļāύ āĻ•āĻŋāĻŸā§‡āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āϚāĻžāϞ⧁ āĻ•āϰāĻž āϝāĻžāĻ• āφāϞāĻĒāĻžāχāύ āϞāĻŋāύāĻžāĻ•ā§āϏ. āφāĻŽāϰāĻž āĻāχ āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻļāύāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻ¨ā§āϝ⧂āύāϤāĻŽāϤāĻžāϰ āϞāĻ•ā§āĻˇā§āϝ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋāϤ⧇ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ, āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ•āĻŋāϛ⧁āχ āύāϝāĻŧāĨ¤
  • āφāϏ⧁āύ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻĄāĻŋāĻ¸ā§āĻ• āϝ⧋āĻ— āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋāϰ āĻāĻ•āϟāĻŋ āύāĻžāĻŽ āĻĻāĻŋāύ - hostfs āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āϰ⧁āϟ āĻĢāĻžāχāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰ⧁āύāĨ¤ āĻāχ āĻĄāĻŋāĻ¸ā§āĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻĻāĻ¤ā§āϤ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻĨ⧇āϕ⧇ āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻ•āϰāĻŦ⧇āĨ¤ āĻāχāĻ­āĻžāĻŦ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻĄā§‡āϟāĻž āϧāĻžāϰāĻ• āĻĨ⧇āϕ⧇ āĻ¸ā§āĻŦāĻžāϧ⧀āύ āĻšāĻŦ⧇āĨ¤ āϧāĻžāϰāĻ•āϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻšāϞ⧇, āĻĄā§‡āϟāĻž āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāχ āĻ¸ā§āĻ•āĻŋāĻŽāϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻŦāĻŋāϤāϰāϪ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŽā§‡āĻ•āĻžāύāĻŋāϜāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ āĻ…āύ⧇āĻ• āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āχ āĻĄā§‡āϟāĻž āĻ­āĻžāĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĻāϰāĻ•āĻžāϰ⧀āĨ¤
  • āφāϏ⧁āύ Bash, sudo, āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŋ, āĻāĻ•āϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϝ⧋āĻ— āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŋ
  • āφāϏ⧁āύ āĻĒāĻžāχāĻĨāύ, āĻŽāĻĄāĻŋāωāϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻžāχāύāĻžāϰāĻŋ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻŋ
  • āĻāϰ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āϚāĻžāϞ⧁ āĻ•āϰāĻž āϝāĻžāĻ• āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ, āĻšā§‡āĻšāĻžāϰāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰ⧁āύ, āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύāĨ¤

āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāϰāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āϏāĻžāĻĨ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ, āφāĻŽāϰāĻž LXD āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āĻŦāĻŋāώāϝāĻŧ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻŦ āύāĻž, āφāĻĒāύāĻŋ āĻ…āĻ¨ā§āϝ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻāχ āϏāĻŽāĻ¸ā§āϤ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ - LXD-āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ - āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ.

āĻŽā§ŒāϞāĻŋāĻ• āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ ^

āφāĻŽāϰāĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϏāĻš āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āϝāĻžāϤ⧇ āφāĻŽāϰāĻž āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻŋ - alpine3, āϧāĻžāϰāĻ•āϟāĻŋāϰ āĻļāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ - jupyterlab āĻāĻŦāĻ‚, āϝāĻĻāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ:

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

āĻāĻ–āĻžāύ⧇ āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻ›āĻŋ hddroot āϝāĻž āĻāĻ•āϟāĻŋ āϰ⧁āϟ āĻĒāĻžāĻ°ā§āϟāĻŋāĻļāύ āϏāĻš āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻ• āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĒ⧁āϞ āĻāĻ•āϟāĻŋ āĻļāĻžāϰ⧀āϰāĻŋāĻ• 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

āĻāϟāĻŋ āφāĻŽāĻžāϕ⧇ āĻāχāϚāĻĄāĻŋāĻĄāĻŋ āĻĄāĻŋāĻ¸ā§āϕ⧇āϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āĻĻ⧇āϝāĻŧ, āĻāϏāĻāϏāĻĄāĻŋ āĻĄāĻŋāĻ¸ā§āϕ⧇āϰ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇, āϝāĻž āφāĻŽāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āωāĻĒāϞāĻŦā§āϧ āϰāϝāĻŧ⧇āϛ⧇ 🙂 āϝāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĻ›āĻŋ ssdroot.

āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ āϤāĻž āϰāĻžāĻœā§āϝ⧇ STOPPED, āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋāϤ⧇ init āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻāϟāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

lxc start jupyterlab

āφāϏ⧁āύ āϕ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ LXD-āĻ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻŋ -c āϝāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϕ⧋āύāϟāĻŋ cāĻ“āϞāĻžāĻŽ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ:

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

āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻžāϟāĻŋ āĻāϞ⧋āĻŽā§‡āϞ⧋āĻ­āĻžāĻŦ⧇ āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ default āϝāĻž āĻĒā§‚āĻ°ā§āĻŦ⧇ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ LXD-āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ - āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ.

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻŽāϤ⧋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϞ⧇āϭ⧇āϞ⧇ āύāϝāĻŧ, āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϞ⧇āϭ⧇āϞ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āφāĻŽāϰāĻž āĻāχ āφāχāĻĒāĻŋ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏāϟāĻŋāϕ⧇ āφāϰāĻ“ āĻ¸ā§āĻŽāϰāĻŖā§€āϝāĻŧ āĻ•āϰ⧇ āϤ⧁āϞāĻŦāĨ¤ āφāĻĒāύāĻžāϕ⧇ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āύāĻž, āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāĻ•āϟāĻŋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ eth0 āϝāĻž āφāĻŽāϰāĻž āϏ⧁āχāĻšā§‡āϰ āϏāĻžāĻĨ⧇ āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāĻŋ (āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦā§āϰāĻŋāϜ) lxdbr0 āϝ⧇āϟāĻŋāϤ⧇ āφāĻŽāϰāĻž āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύāĻŋāĻŦāĻ¨ā§āϧ āĻ…āύ⧁āϏāĻžāϰ⧇ NAT āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āĻāĻ–āύ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒāĻžāĻŦ⧇, āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻžāĻ“ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻŋ - 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-āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž
āĻŦā§āϝāĻžāĻļ āĻļ⧇āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡āĻŦāϞ āϏāĻŽāĻžāĻĒā§āϤāĻŋ

āωāĻŦ⧁āĻ¨ā§āϟ⧁
āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϰ⧁āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ•āĻŋāϛ⧁ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋āϰ āĻ•ā§āώāĻŽāϤāĻž āĻĻāĻŋāύ

āĻ›āĻžāϝāĻŧāĻž
āĻļā§āϝāĻžāĻĄā§‹ āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻĒāĻŋāĻāĻāĻŽ-āĻāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϏāĻš āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āϟ⧁āϞ āĻ¸ā§āϝ⧁āϟ

tzdata
āϟāĻžāχāĻŽ āĻœā§‹āύ āĻāĻŦāĻ‚ āĻĄā§‡āϞāĻžāχāϟ āϏ⧇āĻ­āĻŋāĻ‚ āϟāĻžāχāĻŽ āĻĄā§‡āϟāĻžāϰ āĻ‰ā§ŽāϏ

āĻ¨ā§āϝāĻžāύ⧋
āĻŦāĻ°ā§āϧāĻŋāϤāĻ•āϰāĻŖ āϏāĻš āĻĒāĻŋāϕ⧋ āϏāĻŽā§āĻĒāĻžāĻĻāĻ• āĻ•ā§āϞ⧋āύ

āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤāĻ­āĻžāĻŦ⧇, āφāĻĒāύāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŽā§āϝāĻžāύ-āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋāϤ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ - man man-pages mdocml-apropos less

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

āφāϏ⧁āύ āφāĻŽāϰāĻž āϝ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ āϕ⧀āϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ āϤāĻž āĻĻ⧇āĻ–āĻŋ:

  • lxc - āĻāϞāĻāĻ•ā§āϏāĻĄāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāϕ⧇ āĻ•āϞ āĻ•āϰ⧁āύ
  • exec - LXD āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāϝāĻŧ
  • jupyterlab - āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āφāχāĻĄāĻŋ
  • -- - āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώ āϕ⧀ āϝāĻž āφāϰāĻ“ āϕ⧀āϗ⧁āϞāĻŋāϕ⧇ āϕ⧀ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇⧎ lxc āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŽāϤ⧋ āĻŦāĻžāĻ•āĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϟāĻŋ āĻĒāĻžāϏ āĻ•āϰ⧁āύ
  • apk — āφāϞāĻĒāĻžāχāύ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻļāύ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ
  • add — āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻĒāϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇

āĻāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻāĻ•āϟāĻŋ āϏāĻŽāϝāĻŧ āĻ…āĻžā§āϚāϞ āϏ⧇āϟ āĻ•āϰāĻŦāĨ¤ Europe/Moscow:

lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

āϟāĻžāχāĻŽ āĻœā§‹āύ, āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ tzdata āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ, āĻāϟāĻŋ āĻ¸ā§āĻĨāĻžāύ āύ⧇āĻŦ⧇, āϤāĻžāχ āφāϏ⧁āύ āĻāϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻŋ:

lxc exec jupyterlab -- apk del tzdata

āϏāĻŽāϝāĻŧ āĻ…āĻžā§āϚāϞ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āύāϤ⧁āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻžāĻļ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āĻŦā§āϝāϝāĻŧ āύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϧāĻžāĻĒ⧇ āφāĻŽāϰāĻž āĻšā§‹āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨ⧇āϕ⧇ āϰ⧇āĻĄāĻŋāĻŽā§‡āĻĄ āĻ¸ā§āϕ⧇āϞ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻ•āĻĒāĻŋ āĻ•āϰāĻŦāĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­āĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻŦā§āϝāĻžāĻļāϕ⧇ āϏ⧁āĻ¨ā§āĻĻāϰ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇āĨ¤ āφāĻŽāĻžāϰ āĻšā§‹āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāϞ āĻŽāĻžāĻžā§āϜāĻžāϰ⧋ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ /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"

JupyterLab āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ ^

āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĨāύ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ, āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽā§‡ āĻāχ āĻĻā§‹āĻ­āĻžāώ⧀āϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āφāĻŽāϰāĻž āĻĒāĻžāχāĻĨāύ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ 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

āϝ⧇āĻšā§‡āϤ⧁ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻāĻŦāĻ‚ āφāύ⧁āĻˇā§āĻ āĻžāύāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧ āύāĻž, āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āĻāϰ āϜāĻ¨ā§āϝ NodeJS āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϝāĻžāĻ• - NPM, āϝ⧇āĻšā§‡āϤ⧁ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āϤāĻžāĻĻ⧇āϰ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:

lxc exec jupyterlab -- apk add nodejs npm

āϜāĻ¨ā§āϝ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻ•āϰāϤ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āϝāĻž āφāĻŽāϰāĻž āĻ•āĻžāϜ āĻ•āϰ⧇ āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāĻŦ, āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āχāωāϜāĻžāϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇āĻšā§‡āϤ⧁ āχāωāϜāĻžāϰ āĻĨ⧇āϕ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāĻŦ⧇ jupyter. āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āĻšāϞ āϞāĻžā§āϚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡ āĻāĻŽāύ āϕ⧋āύāĻ“ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύ⧇āχ āϝāĻž āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇; āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āĻŦāĻļā§āϝāχ āĻāϟāĻŋ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻŋāĻ–āĻŦ JUPYTERLAB_DIR āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ jupyter, āύāĻĨāĻŋāϤ⧇ .bashrcāϝāĻž āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϞāĻ— āχāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻž āĻšāϝāĻŧ:

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

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ⧇ - āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āχāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ:

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

āĻāĻ–āύ āĻĒā§āϰāĻĨāĻŽ āϞāĻžā§āĻšā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻāĻ–āύāĻ“ āĻ•āĻŋāϛ⧁ āĻĻāϰāĻ•āĻžāϰ⧀ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ:

  • toc — āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϰ āϏāĻžāϰāĻŖā§€, āĻāĻ•āϟāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧ/āύ⧋āϟāĻŦ⧁āϕ⧇ āĻļāĻŋāϰ⧋āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇
  • jupyterlab-horizon-theme - UI āĻĨāĻŋāĻŽ
  • jupyterlab_neon_theme - UI āĻĨāĻŋāĻŽ
  • jupyterlab-ubu-theme - āφāϰ⧇āĻ•āϟāĻž āϞ⧇āĻ–āĻ• āĻĨ⧇āϕ⧇ āĻĨāĻŋāĻŽ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ :) āϤāĻŦ⧇ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, GitHub āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻĨ⧇āϕ⧇ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāĻŦ⧇

āϏ⧁āϤāϰāĻžāĻ‚, āĻāχ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻ•ā§āϰāĻŽāĻžāύ⧁āϏāĻžāϰ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āϚāĻžāϞāĻžāύ:

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

āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āĻŦāĻļā§āϝāχ āϏ⧇āϗ⧁āϞāĻŋ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϝ⧇āĻšā§‡āϤ⧁ āĻĒā§‚āĻ°ā§āĻŦ⧇, āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ, āφāĻŽāϰāĻž āϕ⧀āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽ --no-build āϏāĻŽāϝāĻŧ āĻŦāĻžāρāϚāĻžāϤ⧇. āĻāĻ–āύ āφāĻŽāϰāĻž āĻāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰ⧇ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻ—āϤāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻŦ:

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

āĻāĻ–āύ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĻ⧁āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞ⧁ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻšāĻŦ⧇, āϤāĻŦ⧇ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āϞāĻžā§āϚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ, āϝāĻž āφāĻĒāύāĻžāϰ āĻŽāύ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻ•āĻ āĻŋāύ, āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻŦā§āϝāĻžāĻļ āĻĻā§āĻŦāĻžāϰāĻž āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻšāĻŦ⧇, āĻšā§‹āĻ¸ā§āĻŸā§‡ āύāϝāĻŧ, āϝ⧇āĻ–āĻžāύ⧇ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āϝāĻĨ⧇āĻˇā§āϟ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āχāϤāĻŋāĻšāĻžāϏ⧇ āϤāĻžāĻĻ⧇āϰ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāϤ⧇ :)

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āϞāĻ—āχāύ āĻ•āϰ⧁āύ jupyter:

lxc exec jupyterlab -- su -l jupyter

āĻĒāϰāĻŦāĻ°ā§āϤ⧀, āϚāĻžāϞāĻžāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦ⧇ āϕ⧀ āĻāĻŦāĻ‚ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āϏāĻš:

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

āφāĻĒāύāĻžāϰ āĻ“āϝāĻŧ⧇āĻŦ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āϝāĻžāύ http://10.0.5.5:8888 āĻāĻŦāĻ‚ āϝ⧇ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻ–ā§‹āϞ⧇ āϏ⧇āĻ–āĻžāύ⧇ āĻāĻ¨ā§āϟāĻžāϰ āĻ•āϰ⧁āύ āĻŸā§‹āϕ⧇āύ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āϝāĻž āφāĻĒāύāĻŋ āĻ•āύāϏ⧋āϞ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύāĨ¤ āĻ•āĻĒāĻŋ āĻ•āϰ⧇ āĻĒ⧇āχāĻœā§‡ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ āϞāĻ—āχāύ. āϞāĻ— āχāύ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āύ⧀āĻšā§‡āϰ āϚāĻŋāĻ¤ā§āϰ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻžāĻŽ āĻĻāĻŋāϕ⧇āϰ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŽā§‡āύ⧁āϤ⧇ āϝāĻžāύ, āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻ•ā§āώ⧇āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻā§āρāĻ•āĻŋ āύāĻŋāϤ⧇ āĻŦāϞāĻž āĻšāĻŦ⧇ āϝāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āωāĻ¨ā§āύāϝāĻŧāύ āĻĻāĻžāϝāĻŧā§€ āύāϝāĻŧ:

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āϝāĻžāχāĻšā§‹āĻ•, āφāĻŽāϰāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ¤ā§āϰ⧇ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ NodeJS-āĻāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŽāύ āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻ•ā§āώ⧇āϰ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āϤāϤ āĻĄāĻŋāĻ¸ā§āϕ⧇āϰ āĻĄā§‡āϟāĻž āϚ⧁āϰāĻŋ āĻ•āϰāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇ āϝāĻž āφāĻŽāϰāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āϖ⧁āϞāĻŋāĨ¤ āĻšā§‹āĻ¸ā§āĻŸā§‡ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āύāĻĨāĻŋāϤ⧇ āϝāĻžāύ /home āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϏ⧇āϏāϗ⧁āϞāĻŋ āϏāĻĢāϞ āĻšāĻ“āϝāĻŧāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āĻ•āĻŽ, āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āϏ⧇āϗ⧁āϞāĻŋ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ āĻšā§‹āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻļ⧇āώāĻžāϧāĻŋāĻ•āĻžāϰ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇, āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āϚāĻžāϞāĻžāχ āϏ⧁āĻŦāĻŋāϧāĻžāĻŦāĻŋāĻšā§€āύ āĻŽā§‹āĻĄ. āĻāχ āϤāĻĨā§āϝ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇, āφāĻĒāύāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āĻā§āρāĻ•āĻŋ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ.

āφāχāĻĒāĻŋāĻĨāύ āύ⧋āϟāĻŦ⧁āĻ• āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āĻĒ⧃āĻˇā§āĻ āĻž āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ) āĻāĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻšā§‹āĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇ - /home/jupyter, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻšāϞ āĻšā§‹āĻ¸ā§āϟ āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĄā§‡āϟāĻž (āĻļ⧇āϝāĻŧāĻžāϰ) āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰāĻž, āϤāĻžāχ āĻ•āύāϏ⧋āϞ⧇ āĻĢāĻŋāϰ⧇ āϝāĻžāύ āĻāĻŦāĻ‚ āĻĨāĻžāĻŽā§āύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻšāϟāĻ•āĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ - CTRL+C āĻāĻŦāĻ‚ āωāĻ¤ā§āϤāϰ āĻĻāĻŋāĻšā§āϛ⧇ y āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĢāϞ⧇. āϤāĻžāϰāĻĒāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻ…āϧāĻŋāĻŦ⧇āĻļāύ āĻŦāĻ¨ā§āϧ jupyter āĻāĻ•āϟāĻŋ āĻšāϟāĻ•āĻŋ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ 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 āĻ…āύ⧁āĻŽāϤāĻŋ āĻ…āĻŦāĻļā§āϝāχ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āϏ⧇āϟ āĻ•āϰāĻž āωāϚāĻŋāϤ āϝāĻžāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āĻāĻ•āϟāĻŋ āχāωāφāχāĻĄāĻŋ āϏāĻŽāĻžāύ SubUID + UID, āĻ…āĻ§ā§āϝāĻžāϝāĻŧ āĻĻ⧇āϖ⧁āύ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āϧāĻžāϰāĻ• āĻŦāĻŋāĻļ⧇āώāĻžāϧāĻŋāĻ•āĻžāϰ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ LXD-āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ - āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ.

āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻ…āύ⧁āĻŽāϤāĻŋ āϏ⧇āϟ āĻ•āϰ⧁āύ, āϝ⧇āĻ–āĻžāύ⧇ āĻŽāĻžāϞāĻŋāĻ• āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāĻŦ⧇āύ jupyter, āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ $USER āφāĻĒāύāĻžāϰ āĻšā§‹āĻ¸ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻāĻ•āϟāĻŋ āĻ—ā§āϰ⧁āĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻŦ⧇:

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

āĻ“āĻšā§‡ āĻŦāĻŋāĻļā§āĻŦ! ^

āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻāĻ–āύāĻ“ āĻāĻ•āϟāĻŋ āĻ•āύāϏ⧋āϞ āĻ…āϧāĻŋāĻŦ⧇āĻļāύ āϏāĻ™ā§āϗ⧇ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻ–ā§‹āϞāĻž āφāϛ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ, āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϕ⧀ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ --notebook-dir āĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇ /mnt/hostfs āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ⧇ āφāĻŽāϰāĻž āϝ⧇ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĻ›āĻŋ āϤāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ⧇āϰ āĻŽā§‚āϞ⧇āϰ āĻĒāĻĨ āĻšāĻŋāϏāĻžāĻŦ⧇:

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

āϤāĻžāϰāĻĒāϰ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āϝāĻžāύ http://10.0.5.5:8888 āĻāĻŦāĻ‚ āύ⧀āĻšā§‡āϰ āĻ›āĻŦāĻŋāϤ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āĻŦā§‹āϤāĻžāĻŽā§‡ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āϤāĻžāϰāĻĒāϰ, āĻĒ⧃āĻˇā§āĻ āĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄāϟāĻŋ āϞāĻŋāϖ⧁āύ āϝāĻž āĻ•ā§āϞāĻžāϏāĻŋāĻ•āϟāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻŦ⧇ Hello World!. āφāĻĒāύāĻŋ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻž āĻļ⧇āώ āĻšāϞ⧇, āϟāĻŋāĻĒ⧁āύ CTRL+ENTER āĻŦāĻž āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦāϕ⧇ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻļā§€āĻ°ā§āώ⧇ āϟ⧁āϞāĻŦāĻžāϰ⧇ "āĻĒā§āϞ⧇" āĻŦā§‹āϤāĻžāĻŽāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇, āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŦāĻ•āĻŋāϛ⧁āχ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ, āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āϰ⧁āϚāĻŋāĻ•āϰ āĻšāĻŦ⧇ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞ (āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ) āχāύāĻ¸ā§āϟāϞ āύāĻž āĻ•āϰāĻŋ āϝāĻž āĻĒāĻžāχāĻĨāύ⧇āϰ āĻŽāĻžāύāĻ• āĻ•ā§āώāĻŽāϤāĻžāϗ⧁āϞāĻŋ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦāϤāĻžāχ, āϚāϞ⧁āύ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāχ :)

PS āĻŽāϜāĻžāϰ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ āĻĒ⧁āϰāĻžāύ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰ āϕ⧋āĻĄ āύāĻžāĻŽā§‡āϰ āĻ…āϧ⧀āύ⧇ Jupyter āύ⧋āϟāĻŦ⧁āĻ• āĻĻā§‚āϰ⧇ āϚāϞ⧇ āϝāĻžāϝāĻŧ āύāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ. āĻĒ⧁āϰāĻžāύ⧋ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāϤ⧇, āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻĒā§āϰāĻ¤ā§āϝāϝāĻŧ āϝ⧋āĻ— āĻ•āϰ⧇ āϞāĻŋāĻ™ā§āĻ•āϟāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ/tree, āĻāĻŦāĻ‚ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻĒā§āϰāĻ¤ā§āϝāϝāĻŧ āϏāĻš āĻŦāĻžāĻšāĻŋāϤ āĻšāϝāĻŧ /lab, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āύāĻž:

āĻĒāĻžāχāĻĨāύ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻž ^

āĻāχ āĻŦāĻŋāĻ­āĻžāϗ⧇, āφāĻŽāϰāĻž āϝ⧇āĻŽāύ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻĒāĻžāχāĻĨāύ āĻ­āĻžāώāĻž āĻŽāĻĄāĻŋāωāϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ āύāĻŽā§āϰ, āĻĒāĻžāĻ¨ā§āĻĄāĻžāϏ, āĻŽā§āϝāĻžāϟāĻĒā§āĻ˛ā§āϞ⧋āĻŦ, IPyWidgets āϝāĻžāϰ āĻĢāϞāĻžāĻĢāϞ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ.

āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āφāϗ⧇ pip āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽā§‡ āφāϞāĻĒāĻžāχāύ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

  • g++ — āĻŽāĻĄāĻŋāωāϞ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ, āϝ⧇āĻšā§‡āϤ⧁ āϤāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āĻ­āĻžāώāĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āϏāĻŋ ++ āĻāĻŦāĻ‚ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻŽāĻĄāĻŋāωāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āϰāĻžāύāϟāĻžāχāĻŽā§‡ āĻĒāĻžāχāĻĨāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰ⧁āύ
  • freetype-dev - āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻŽā§āϝāĻžāϟāĻĒā§āĻ˛ā§āϞ⧋āĻŦ

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž:

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

āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āφāϛ⧇: āφāϞāĻĒāĻžāχāύ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻŦāĻŋāϤāϰāϪ⧇āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ, NumPy-āĻāϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻšāĻŦ⧇ āύāĻž; āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•āϞāύ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāĻŦ⧇ āϝāĻž āφāĻŽāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāύāĻŋ:

ERROR: āύāĻŽā§āĻĒāĻŋāϰ āϜāĻ¨ā§āϝ āϚāĻžāĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāϝāĻŧāύāĻŋ āϝāĻž PEP 517 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏāϰāĻžāϏāϰāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āύāĻž

āĻ…āϤāĻāĻŦ, āφāĻŽāϰāĻž āĻāχ āĻŽāĻĄāĻŋāωāϞāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āϝāĻžāϕ⧇āϜ āĻšāĻŋāϏāĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ āϝāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•āϞāĻŋāϤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰ⧇, āϤāĻŦ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āϏāĻžāχāĻŸā§‡ āϝāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻšā§āϛ⧇ āϤāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻŋāϛ⧁āϟāĻž āĻĒ⧁āϰāĻžāύ⧋:

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

āĻāϰāĻĒāϰ, āĻĒā§āϝāĻžāϕ⧇āϜ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ pip. āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āϧ⧈āĻ°ā§āϝ āϧāϰ⧁āύ āĻ•āĻžāϰāĻŖ āĻ•āĻŋāϛ⧁ āĻŽāĻĄāĻŋāωāϞ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻŋāύāĻŋāϟ āϏāĻŽāϝāĻŧ āϞāĻžāĻ—āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻŽāĻžāϰ āĻŽā§‡āĻļāĻŋāύ⧇, āϏāĻ‚āĻ•āϞāύ ~ 15 āĻŽāĻŋāύāĻŋāϟ āϏāĻŽāϝāĻŧ āύ⧇āϝāĻŧ:

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

āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻ•ā§āϝāĻžāĻļ⧇ āϏāĻžāĻĢ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:

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

JupyterLab āĻ āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚ āĻŽāĻĄāĻŋāωāϞ ^

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĻ⧌āĻĄāĻŧāĻžāĻšā§āϛ⧇āύ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ, āĻāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āύāϤ⧁āύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞāĻŋ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻ•āϰāϤ⧇, āĻāĻ•āϟāĻŋ āĻ•āύāϏ⧋āϞ āϏ⧇āĻļāύ⧇, āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ CTRL+C āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻāϟāĻŋ āϚāĻžāϞ⧁ āφāϛ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧁āύ y āĻ…āύ⧁āϰ⧋āϧ āĻĨāĻžāĻŽāĻžāϤ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄā§‡āϰ āωāĻĒāϰ⧇āϰ āϤ⧀āϰāϟāĻŋ āϟāĻŋāĻĒ⧇ āϝāĻžāϤ⧇ āĻŦāĻžāϰāĻŦāĻžāϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇ Enter āĻāϟāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇:

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

āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āϝāĻžāύ http://10.0.5.5:8888/lab āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āϟāĻŦ⧁āĻ• āĻ•āĻ•ā§āώ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄāϟāĻŋ āϞāĻŋāϖ⧁āύ:

%matplotlib inline

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

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

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

āφāĻĒāύāĻŋ āύ⧀āĻšā§‡āϰ āĻ›āĻŦāĻŋāϰ āĻŽāϤ āĻāĻ•āϟāĻŋ āĻĢāϞāĻžāĻĢāϞ āĻĒ⧇āϤ⧇ āĻšāĻŦ⧇, āϝ⧇āĻ–āĻžāύ⧇ IPyWidgets āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻāĻ•āϟāĻŋ UI āωāĻĒāĻžāĻĻāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻž āωāĻ¤ā§āϏ āϕ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­āĻ­āĻžāĻŦ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻŽā§āϝāĻžāϟāĻĒā§āĻ˛ā§āϞ⧋āĻŦ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻ—ā§āϰāĻžāĻĢ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ›āĻŦāĻŋāϰ āφāĻ•āĻžāϰ⧇ āϕ⧋āĻĄā§‡āϰ āĻĢāϞāĻžāĻĢāϞ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰ⧇:

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻ…āύ⧇āĻ• āωāĻĻāĻžāĻšāϰāĻŖ IPyWidgets āφāĻĒāύāĻŋ āϟāĻŋāωāĻŸā§‹āϰāĻŋāϝāĻŧāĻžāϞ āĻāϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻ–āĻžāύ⧇

āφāϰ āĻ•āĻŋ? ^

āĻ­āĻžāϞ āĻ•āĻžāϜ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻĨ⧇āϕ⧇ āϝāĻžāύ āĻāĻŦāĻ‚ āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āĻāϕ⧇āĻŦāĻžāϰ⧇ āĻļ⧇āώ⧇ āĻĒ⧌āρāϛ⧇āϛ⧇āύ. āφāĻŽāĻŋ āχāĻšā§āĻ›āĻžāĻ•ā§ƒāϤāĻ­āĻžāĻŦ⧇ āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āĻļ⧇āώ⧇ āĻāĻ•āϟāĻŋ āϰ⧇āĻĄāĻŋāĻŽā§‡āĻĄ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĒā§‹āĻ¸ā§āϟ āĻ•āϰāĻŋāύāĻŋ āϝāĻž āχāύāĻ¸ā§āϟāϞ āĻšāĻŦ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ āĻ•āĻ°ā§āĻŽā§€āĻĻ⧇āϰ āωāĻ¤ā§āϏāĻžāĻšāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ "āĻāĻ• āĻ•ā§āϞāĻŋāϕ⧇" :) āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āύāĻŋāĻœā§‡āχ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝ⧇āĻšā§‡āϤ⧁ āφāĻĒāύāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āϜāĻžāύ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇, āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻŦā§āϝāĻžāĻļ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰ⧇ :)

āφāĻĒāύāĻŋ āĻāϟāĻŋāĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

  • āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻšāĻœā§‡ āϞāĻŋāϖ⧇ āĻāĻ•āϟāĻŋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āύāĻžāĻŽ āϏ⧇āϟ āĻ•āϰ⧁āύ /etc/hosts āĻāĻŦāĻ‚ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻ āĻŋāĻ•āĻžāύāĻž āϟāĻžāχāĻĒ āĻ•āϰ⧁āύ http://jupyter.local:8888
  • āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϞāĻŋāĻŽāĻŋāϟ āύāĻŋāϝāĻŧ⧇ āϖ⧇āϞ⧁āύ, āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻ§ā§āϝāĻžāϝāĻŧāϟāĻŋ āĻĒāĻĄāĻŧ⧁āύ āĻŽā§ŒāϞāĻŋāĻ• LXD āĻ•ā§āώāĻŽāϤāĻž āĻ…āĻĨāĻŦāĻž LXD āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āϏāĻžāχāĻŸā§‡ āφāϰāĻ“ āϤāĻĨā§āϝ āĻĒāĻžāύāĨ¤
  • āĻĨāĻŋāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ:

āϜ⧁āĻĒāĻŋāϟāĻžāϰāϕ⧇ LXD āĻ•āĻ•ā§āώāĻĒāĻĨ⧇ āĻ‰ā§ŽāĻ•ā§āώ⧇āĻĒāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāĻŦāĻ‚ āφāϰ⧋ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āφāĻĒāύāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ! āĻāĻ–āĻžāύ⧇āχ āĻļ⧇āώ. āφāĻŽāĻŋ āϤ⧋āĻŽāĻžāϰ āϏāĻžāĻĢāĻ˛ā§āϝ āĻ•āĻžāĻŽāύāĻž āĻ•āϰāĻŋ!

āφāĻĒāĻĄā§‡āϟ: 15.04.2020/18/30 XNUMX:XNUMX - "āĻšā§āϝāĻžāϞ⧋, āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ!" āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
āφāĻĒāĻĄā§‡āϟ: 16.04.2020/10/00 XNUMX:XNUMX — āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāϭ⧇āĻļāύ⧇āϰ āĻŦāĻŋāĻŦāϰāϪ⧇ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āϞ⧇āĻ–āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϜ⧁āĻĒāĻŋāϟāĻžāϰāĻ˛ā§āϝāĻžāĻŦ
āφāĻĒāĻĄā§‡āϟ: 16.04.2020/10/40 XNUMX:XNUMX — āĻĒāĻžāĻ ā§āϝāϟāĻŋāϤ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ "āĻŦ⧇āϏāĻŋāĻ• āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž" āĻ…āĻ§ā§āϝāĻžāϝāĻŧāϟāĻŋ āφāϰāĻ“ āĻ­āĻžāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŋāϛ⧁āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

āωāĻ¤ā§āϏ: www.habr.com