เชœเซเชฏเซเชชเซ€เชŸเชฐเชจเซ‡ LXD เชญเซเชฐเชฎเชฃเช•เช•เซเชทเชพเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชถเซเช‚ เชคเชฎเชพเชฐเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชฒเชฟเชจเช•เซเชธเชฎเชพเช‚ เช•เซ‹เชก เช…เชฅเชตเชพ เชธเชฟเชธเซเชŸเชฎ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เช เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เช›เซ‡ เชœเซ‡เชฅเซ€ เชฌเซ‡เช เชธเชฟเชธเซเชŸเชฎ เชตเชฟเชถเซ‡ เชšเชฟเช‚เชคเชพ เชจ เช•เชฐเชตเซ€ เช…เชจเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชญเซ‚เชฒเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชฌเชงเซเช‚ เชœ เชคเซ‹เชกเซ€ เชจ เชจเชพเช–เชตเซเช‚ เชœเซ‡ เชฐเซ‚เชŸ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชšเชพเชฒเชตเซเช‚ เชœเซ‹เชˆเช?

เชชเชฐเช‚เชคเซ เช เชนเช•เซ€เช•เชค เชตเชฟเชถเซ‡ เชถเซเช‚ เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชเช• เชฎเชถเซ€เชจ เชชเชฐ เชตเชฟเชตเชฟเชง เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เซเชฒเชธเซเชŸเชฐเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เช…เชฅเชตเชพ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡? เชธเซ‹ เช•เซ‡ เชนเชœเชพเชฐ เชชเชฃ?

เชนเชพเช‡เชชเชฐเชตเชพเช‡เชเชฐ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชšเชพเชฒเชฟเชค เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เชธเชพเชฅเซ‡, เช†เชตเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชฅเชถเซ‡, เชชเชฐเช‚เชคเซ เช•เชฏเชพ เช–เชฐเซเชšเซ‡? เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช†เชฒเซเชชเชพเช‡เชจ Linux เชตเชฟเชคเชฐเชฃ เชชเชฐ เช†เชงเชพเชฐเชฟเชค LXD เชฎเชพเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ เชซเช•เซเชค เชตเชชเชฐเชพเชถ เช•เชฐเซ‡ เช›เซ‡ 7.60MB RAM, เช…เชจเซ‡ เชœเซเชฏเชพเช‚ เชฐเซเชŸ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชชเช›เซ€ เช•เชฌเชœเซ‡ เช•เชฐเซ‡ เช›เซ‡ 9.5MB! เชคเชฎเชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซเช‚ เช—เชฎเซเชฏเซเช‚, เชเชฒเซ‹เชจ เชฎเชธเซเช•? เชนเซเช‚ เชคเชชเชพเชธเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ LXD เชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เช•เซเชทเชฎเชคเชพเช“ - Linux เชฎเชพเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชฟเชธเซเชŸเชฎ

LXD เช•เชจเซเชŸเซ‡เชจเชฐ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเชพ เชชเช›เซ€, เชšเชพเชฒเซ‹ เช†เช—เชณ เชœเชˆเช เช…เชจเซ‡ เชตเชฟเชšเชพเชฐเซ€เช เช•เซ‡, เชœเซ‹ เชเชตเซเช‚ เช•เซ‹เชˆ เชนเชพเชฐเซเชตเซ‡เชธเซเชŸเชฐ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชนเซ‹เชฏ เช•เซ‡ เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เชนเซ‹เชธเซเชŸ เชฎเชพเชŸเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เช•เซ‹เชก เชšเชฒเชพเชตเซ€ เชถเช•เซ‹, เช—เซเชฐเชพเชซ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹, เชกเชพเชฏเชจเซ‡เชฎเชฟเช•เชฒเซ€ (เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชตเชฒเซ€) UI- เชตเชฟเชœเซ‡เชŸเซเชธเชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช• เช•เชฐเซ€ เชถเช•เซ‹, เชฌเซเชฒเซ‡เช•เชœเซ‡เช•... เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช— เชธเชพเชฅเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชธเชพเชฅเซ‡ เช•เซ‹เชกเชจเซ€ เชชเซ‚เชฐเซเชคเชฟ เช•เชฐเซ€เช? เช…เชฐเชธเชชเชฐเชธ เชฌเซเชฒเซ‹เช— เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ? เชตเชพเชน... เชฎเชพเชฐเซ‡ เชคเซ‡ เชœเซ‹เชˆเช เช›เซ‡! เชœเซ‹เชˆเช เช›เซ‡! ๐Ÿ™‚

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เชจเซ€เชšเซ‡ เชœเซเช“ เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เชถเซเช‚ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ - เชœเซ‚เชจเซ€ เชœเซเชชเซ€เชŸเชฐ เชจเซ‹เชŸเชฌเซเช•เชจเซ‡ เชฌเชฆเชฒเซ‡ เชฏเซเชเชฐ เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชจเซ‡เช•เซเชธเซเชŸ เชœเชจเชฐเซ‡เชถเชจ, เช…เชจเซ‡ เช…เชฎเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เชชเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชถเซเช‚ เชœเซ‡เชฎ เช•เซ‡ เชจเชฎเซ€, เชชเชพเช‚เชกเชพ, เชฎเซ‡เชŸเชชเซเชฒเซ‹เชŸเชฒเชฟเชฌ, IPyWidgets เชœเซ‡ เชคเชฎเชจเซ‡ เช‰เชชเชฐ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชฌเชงเซเช‚ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซเช‚ เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชพเชšเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ - เชเช• IPython เชฒเซ‡เชชเชŸเซ‹เชช.

เชœเซเชฏเซเชชเซ€เชŸเชฐเชจเซ‡ LXD เชญเซเชฐเชฎเชฃเช•เช•เซเชทเชพเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช“เชฐเซเชฌเชฟเชŸเชฒ เชŸเซ‡เช•-เช“เชซ เชชเซเชฒเชพเชจ ^

เชœเซเชฏเซเชชเซ€เชŸเชฐเชจเซ‡ LXD เชญเซเชฐเชฎเชฃเช•เช•เซเชทเชพเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช‰เชชเชฐเซ‹เช•เซเชค เชฏเซ‹เชœเชจเชพเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซเช‚ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เชธเช‚เช•เซเชทเชฟเชชเซเชค เช•เชพเชฐเซเชฏ เชฏเซ‹เชœเชจเชพเชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เช†เชชเซ€เช:

  • เชšเชพเชฒเซ‹ เชตเชฟเชคเชฐเชฃ เช•เซ€เชŸ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เชฒเซ‹เช‚เชš เช•เชฐเซ€เช เช†เชฒเซเชชเชพเช‡เชจ เชฒเชฟเชจเช•เซเชธ. เช…เชฎเซ‡ เช† เชตเชฟเชคเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎเชตเชพเชฆเชจเซ‡ เชฒเช•เซเชทเซเชฏเชฎเชพเช‚ เชฐเชพเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชซเช•เซเชค เชธเซŒเชฅเซ€ เชœเชฐเซ‚เชฐเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชถเซเช‚, เช•เช‚เชˆเชชเชฃ เช…เชจเชพเชตเชถเซเชฏเช• เชจเชนเซ€เช‚.
  • เชšเชพเชฒเซ‹ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชกเชฟเชธเซเช• เช‰เชฎเซ‡เชฐเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชจเชพเชฎ เช†เชชเซ€เช - hostfs เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ‹. เช† เชกเชฟเชธเซเช• เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เช†เชชเซ‡เชฒ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชนเซ‹เชธเซเชŸ เชชเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเชถเซ‡. เช†เชฎ, เช…เชฎเชพเชฐเซ‹ เชกเซ‡เชŸเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชฅเซ€ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเชนเซ‡เชถเซ‡. เชœเซ‹ เช•เชจเซเชŸเซ‡เชจเชฐ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชกเซ‡เชŸเชพ เชนเซ‹เชธเซเชŸ เชชเชฐ เชฐเชนเซ‡เชถเซ‡. เช‰เชชเชฐเชพเช‚เชค, เช† เชฏเซ‹เชœเชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชฟเชคเชฐเชฃเชจเซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช˜เชฃเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชšเซเชšเซ‡ เชธเชฎเชพเชจ เชกเซ‡เชŸเชพ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡.
  • เชšเชพเชฒเซ‹ Bash, sudo, เชœเชฐเซ‚เชฐเซ€ เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชˆเชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช, เชธเชฟเชธเซเชŸเชฎ เชฏเซเชเชฐเชจเซ‡ เช‰เชฎเซ‡เชฐเซ‹ เช…เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€เช
  • เชšเชพเชฒเซ‹ Python, เชฎเซ‹เชกเซเชฏเซเชฒเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเซ€เช
  • เชšเชพเชฒเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ, เชฆเซ‡เช–เชพเชตเชจเซ‡ เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ‹, เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹.

เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เชถเซเช‚, เช…เชฎเซ‡ LXD เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เชตเชฟเชšเชพเชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚, เชคเชฎเซ‡ เช† เชฌเชงเซเช‚ เชฌเซ€เชœเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ - LXD - Linux เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเซเชตเชฟเชงเชพเช“.

เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ เช…เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€ ^

เช…เชฎเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชœเซ‡เชฎเชพเช‚ เช…เชฎเซ‡ เช›เชฌเซ€เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เช เช›เซ€เช - 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

เช† เชฎเชจเซ‡ SSD เชกเชฟเชธเซเช•เชจเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชธเชพเชšเชตเซ€เชจเซ‡ HDD เชกเชฟเชธเซเช• เชชเชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชคเช• เช†เชชเซ‡ เช›เซ‡, เชœเซ‡ เชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชชเชฃ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ ๐Ÿ™‚ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เชเช• เช…เชฒเช— เช—เซ‹เช เชตเชฃเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€ เช›เซ‡. 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      |
+------------+---------+-------------------+--------------+

เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡, IP เชธเชฐเชจเชพเชฎเซเช‚ เช…เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชฐเซ€เชคเซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹ default เชœเซ‡ เช…เช—เชพเช‰ เชฒเซ‡เช–เชฎเชพเช‚ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ LXD - Linux เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเซเชตเชฟเชงเชพเช“.

เช…เชฎเซ‡ เช† 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-เชชเซ‚เชฐเซเชฃเชคเชพ
เชฌเซ‡เชถ เชถเซ‡เชฒ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซ‡เชฌเชฒ เชชเซ‚เชฐเซเชฃเชคเชพ

sudo
เช…เชฎเซเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช…เชฎเซเช• เช†เชฆเซ‡เชถเซ‹เชจเซ‡ เชฐเซ‚เชŸ เชคเชฐเซ€เช•เซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช†เชชเซ‹

เช›เชพเชฏเชพ
เชถเซ‡เชกเซ‹ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ PAM เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เชชเชพเชธเชตเชฐเซเชก เช…เชจเซ‡ เชเช•เชพเช‰เชจเซเชŸ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชŸเซ‚เชฒ เชธเซเชฏเซเชŸ

tzdata
เชŸเชพเช‡เชฎ เชเซ‹เชจ เช…เชจเซ‡ เชกเซ‡เชฒเชพเช‡เชŸ เชธเซ‡เชตเชฟเช‚เช— เชŸเชพเช‡เชฎ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชธเซเชคเซเชฐเซ‹เชคเซ‹

เชจเซ‡เชจเซ‹
เช‰เชจเซเชจเชคเซเชคเชฟเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชชเซ€เช•เซ‹ เชธเช‚เชชเชพเชฆเช• เช•เซเชฒเซ‹เชจ

เชตเชงเซเชฎเชพเช‚, เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹ - เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฎเซ‡เชจ-เชชเซ‡เชœเชฎเชพเช‚ เชธเชชเซ‹เชฐเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ man man-pages mdocml-apropos less

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

เชšเชพเชฒเซ‹ เช†เชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ€เชงเซ‡เชฒเชพ เช†เชฆเซ‡เชถเซ‹ เช…เชจเซ‡ เช•เซ€เช“ เชœเซ‹เชˆเช:

  • lxc - LXD เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‹
  • exec - LXD เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชฆเซเชงเชคเชฟ เชœเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‡ เช›เซ‡
  • jupyterlab - เช•เชจเซเชŸเซ‡เชจเชฐ ID
  • -- - เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เช•เซ€ เช•เซ‡ เชœเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เช†เช—เชณเชจเซ€ เช•เซ€เชจเซ‡ เช•เซ€ เชคเชฐเซ€เช•เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เชจ เช•เชฐเชตเซ€ 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

เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชจเชตเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ Bash เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชจ เช–เชฐเซเชšเชตเชพ เชฎเชพเชŸเซ‡, เชจเซ€เชšเซ‡เชจเชพ เชชเช—เชฒเชพเช‚เช“เชฎเชพเช‚ เช…เชฎเซ‡ เชนเซ‹เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เชคเซˆเชฏเชพเชฐ เชธเซเช•เซ‡เชฒ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเซ€เชถเซเช‚. เช† เชคเชฎเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชฐเซ€เชคเซ‡ เชฌเซ‡เชถเชจเซ‡ เชธเซเช‚เชฆเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡. เชฎเชพเชฐเซ€ เชฏเชœเชฎเชพเชจ เชธเชฟเชธเซเชŸเชฎ Manjaro Linux เช›เซ‡ เช…เชจเซ‡ เชซเชพเชˆเชฒเซ‹ เชจเช•เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡ /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 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 เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชถเซเช‚ 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

เชฎเชพเช‚ เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เชนเซ‹เชตเชพเชฅเซ€ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เช›เซ‡ เช…เชจเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเซ€เชคเซ‡ 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 เช…เชจเซ‡ เชœเซ‡ เชชเซ‡เชœ เช–เซเชฒเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชเชจเซเชŸเชฐ เช•เชฐเซ‹ เชŸเซ‹เช•เชจ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ‹ เชœเซ‡ เชคเชฎเซ‡ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชœเซ‹เชถเซ‹. เชคเซ‡เชจเซ‡ เชชเซ‡เชœ เชชเชฐ เช•เซ‹เชชเซ€ เช•เชฐเซ€เชจเซ‡ เชชเซ‡เชธเซเชŸ เช•เชฐเซ‹, เชชเช›เซ€ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ เชฒเซ‰เช—เชฟเชจ. เชฒเซ‰เช— เช‡เชจ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชจเซ€เชšเซ‡เชจเซ€ เช†เช•เซƒเชคเชฟเชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡, เชกเชพเชฌเซ€ เชฌเชพเชœเซเชจเชพ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฎเซ‡เชจเซ‚ เชชเชฐ เชœเชพเช“, เชœเซเชฏเชพเช‚ เชคเชฎเชจเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฎเซ‡เชจเซ‡เชœเชฐเชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเซƒเชคเซ€เชฏ เชชเช•เซเชทเซ‹เชจเชพ เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชจเซ‡ เชธเซเชฐเช•เซเชทเชพ เชœเซ‹เช–เชฎเซ‹ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช†เชฆเซ‡เชถ JupyterLab เชตเชฟเช•เชพเชธ เชœเชตเชพเชฌเชฆเชพเชฐ เชจเชฅเซ€:

เชœเซเชฏเซเชชเซ€เชŸเชฐเชจเซ‡ LXD เชญเซเชฐเชฎเชฃเช•เช•เซเชทเชพเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชœเซ‹ เช•เซ‡, เช…เชฎเซ‡ เชธเชฎเช—เซเชฐเชจเซ‡ เช…เชฒเช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชฎเซ‚เช•เซ‹ เชœเซ‡เชฅเซ€ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจ เช•เซ‡ เชœเซ‡เชจเซ‡ NodeJS เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เชคเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชกเชฟเชธเซเช• เชชเชฐเชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชšเซ‹เชฐเซ€ เชจ เช•เชฐเซ€ เชถเช•เซ‡ เชœเซ‡ เช…เชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เช–เซ‹เชฒเซ€เช เช›เซ€เช. เชฎเชพเช‚ เชนเซ‹เชธเซเชŸ เชชเชฐ เชคเชฎเชพเชฐเชพ เช–เชพเชจเช—เซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชฎเซ‡เชณเชตเซ‹ /home เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชธเชซเชณ เชฅเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชจเชฅเซ€, เช…เชจเซ‡ เชœเซ‹ เชคเซ‡เช“ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชนเซ‹เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎ เชชเชฐเชจเซ€ เชซเชพเช‡เชฒเซ‹ เชชเชฐ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเซ€เช เช›เซ€เช เช…เชจเชชเซเชฐเชฟเชตเชฟเชฒเซ‡เชœเซเชก เชฎเซ‹เชก. เช† เชฎเชพเชนเชฟเชคเซ€เชจเชพ เช†เชงเชพเชฐเซ‡, เชคเชฎเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‡ เชธเชพเชฎเซ‡เชฒ เช•เชฐเชตเชพเชจเชพ เชœเซ‹เช–เชฎเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ.

IPython เชจเซ‹เชŸเชฌเซเช• เชฌเชจเชพเชตเซ€ (เชชเชพเชจเชพ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ) เชนเชตเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ - /home/jupyter, เชชเชฐเช‚เชคเซ เช…เชฎเชพเชฐเซ€ เชฏเซ‹เชœเชจเชพ เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชšเซเชšเซ‡ เชกเซ‡เชŸเชพ (เชถเซ‡เชฐ) เชจเซ‡ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช›เซ‡, เชคเซ‡เชฅเซ€ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเซ‹ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเซ‹ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ เชนเซ‹เชŸเช•เซ€ เชšเชฒเชพเชตเซ€เชจเซ‡ - CTRL+C เช…เชจเซ‡ เชœเชตเชพเชฌ เช†เชชเซ‡ เช›เซ‡ y เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ. เชชเช›เซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชธเชคเซเชฐเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‹ jupyter เชนเซ‹เชŸเช•เซ€ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช CTRL+D.

เชนเซ‹เชธเซเชŸ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพ เชถเซ‡เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช ^

เชนเซ‹เชธเซเชŸ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชเช• เช‰เชชเช•เชฐเชฃ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช† เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹ เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช•เซ€เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เช เช›เซ€เช:

  • lxc config device add โ€” เช†เชฆเซ‡เชถ เช‰เชชเช•เชฐเชฃ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡
  • jupyter โ€” เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ ID เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡
  • hostfs - เช‰เชชเช•เชฐเชฃ ID. เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
  • 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 - Linux เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเซเชตเชฟเชงเชพเช“.

เชนเซ‹เชธเซเชŸ เชชเชฐ เชชเชฐเชตเชพเชจเช—เซ€ เชธเซ‡เชŸ เช•เชฐเซ‹, เชœเซเชฏเชพเช‚ เชฎเชพเชฒเชฟเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชนเชถเซ‡ 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 เช…เชฅเชตเชพ JupyterLab เชจเซ‡ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเซ‹เชš เชชเชฐ เชŸเซ‚เชฒเชฌเชพเชฐ เชชเชฐ "เชชเซเชฒเซ‡" เชฌเชŸเชจ เชฆเชฌเชพเชตเซ‹:

เชœเซเชฏเซเชชเซ€เชŸเชฐเชจเซ‡ LXD เชญเซเชฐเชฎเชฃเช•เช•เซเชทเชพเชฎเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช† เชฌเชฟเช‚เชฆเซเช, เชฒเช—เชญเช— เชฌเชงเซเช‚ เชœ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เช†เชชเชฃเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ (เชธเช‚เชชเซ‚เชฐเซเชฃ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹) เช‡เชจเซเชธเซเชŸเซ‹เชฒ เชจเชนเซ€เช‚ เช•เชฐเซ€เช เชคเซ‹ เชคเซ‡ เชฐเชธเชชเซเชฐเชฆ เชฐเชนเซ‡เชถเซ‡ เช•เซ‡ เชœเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช•เซเชทเชฎเชคเชพเช“เชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌเชคเซ‡เชฅเซ€, เชšเชพเชฒเซ‹ เช†เช—เชณ เชตเชงเซ€เช :)

PS เชฐเชธเชชเซเชฐเชฆ เชตเชพเชค เช เช›เซ‡ เช•เซ‡ เชœเซ‚เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชœเซเชฏเซเชชเซ€เชŸเชฐ เช•เซ‹เชก เชจเชพเชฎ เชนเซ‡เช เชณ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชจเซ‹เชŸเชฌเซเช• เชฆเซ‚เชฐ เช—เชฏเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเชฎเชพเช‚เชคเชฐ เช…เชธเซเชคเชฟเชคเซเชต เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ. เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชธเชฐเชจเชพเชฎเชพเช‚เชฎเชพเช‚ เชชเซเชฐเชคเซเชฏเชฏ เช‰เชฎเซ‡เชฐเชคเซ€ เชฒเชฟเช‚เช•เชจเซ‡ เช…เชจเซเชธเชฐเซ‹/tree, เช…เชจเซ‡ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ เชธเช‚เช•เซเชฐเชฎเชฃ เชชเซเชฐเชคเซเชฏเชฏ เชธเชพเชฅเซ‡ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ /lab, เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€:

  • เชœเซเชฏเซเชชเซ€เชŸเชฐ เชจเซ‹เชŸเชฌเซเช• - http://10.0.5.5:8888/tree
  • เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ - http://10.0.5.5:8888/lab

เชชเชพเชฏเชฅเซ‹เชจเชจเซ€ เช•เซเชทเชฎเชคเชพเช“ เชตเชฟเชธเซเชคเชฐเซ€ เชฐเชนเซ€ เช›เซ‡ ^

เช† เชตเชฟเชญเชพเช—เชฎเชพเช‚, เช…เชฎเซ‡ เช†เชตเชพ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชชเชพเชฏเชฅเซ‹เชจ เชญเชพเชทเชพ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชถเซเช‚ เชจเชฎเซ€, เชชเชพเช‚เชกเชพ, เชฎเซ‡เชŸเชชเซเชฒเซ‹เชŸเชฒเชฟเชฌ, IPyWidgets เชœเซ‡เชจเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฒเซ‡เชชเชŸเซ‹เชชเชฎเชพเช‚ เชเช•เซ€เช•เซƒเชค เช›เซ‡ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ.

เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ pip เช†เชชเชฃเซ‡ เชธเซŒเชชเซเชฐเชฅเชฎ เช†เชฒเซเชชเชพเช‡เชจ เชฒเชฟเชจเช•เซเชธเชฎเชพเช‚ เชธเชฟเชธเซเชŸเชฎ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเซ€ เชœเซ‹เชˆเช:

  • g++ - เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚เชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชญเชพเชทเชพเชฎเชพเช‚ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซเช•เชพเชฏเชพ เช›เซ‡ เชธเซ€ ++ เช…เชจเซ‡ เชฐเชจเชŸเชพเชˆเชฎ เชชเชฐ เชชเชพเชฏเชฅเซ‹เชจ เชธเชพเชฅเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เชคเชฐเซ€เช•เซ‡ เชœเซ‹เชกเซ‹
  • freetype-dev - เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชฎเซ‡เชŸเชชเซเชฒเซ‹เชŸเชฒเชฟเชฌ

เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช:

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

เชคเซเชฏเชพเช‚ เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡: เช†เชฒเซเชชเชพเช‡เชจ เชฒเชฟเชจเช•เซเชธ เชตเชฟเชคเชฐเชฃเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, NumPy เชจเชพ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚; เชเช• เชธเช‚เช•เชฒเชจ เชญเซ‚เชฒ เชฆเซ‡เช–เชพเชถเซ‡ เชœเซ‡ เชนเซเช‚ เช‰เช•เซ‡เชฒเซ€ เชถเช•เซเชฏเซ‹ เชจเชฅเซ€:

เชญเซ‚เชฒ: เชจเชฎเซเชชเซ€ เชฎเชพเชŸเซ‡ เชตเซเชนเซ€เชฒเซเชธ เชฌเชจเชพเชตเซ€ เชถเช•เซเชฏเชพ เชจเชฅเซ€ เชœเซ‡ 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 เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชŸเซเชฏเซเชŸเซ‹เชฐเชฟเชฏเชฒเซเชธเชฎเชพเช‚ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚

เชฌเซ€เชœเซเช‚ เชถเซเช‚? ^

เชœเซ‹ เชคเชฎเซ‡ เชฐเซ‹เช•เชพเชฏเชพ เช…เชจเซ‡ เชฒเซ‡เช–เชจเชพ เช…เช‚เชค เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซเชฏเชพ เชคเซ‹ เชธเชพเชฐเซเช‚ เชฅเชฏเซเช‚. เชฎเซ‡เช‚ เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชคเซˆเชฏเชพเชฐ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซ‹เชธเซเชŸ เช•เชฐเซ€ เชจเชฅเซ€ เชœเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชถเซ‡ เชœเซเชฏเซเชชเซ€เชŸเชฐ เชฒเซ‡เชฌ เช•เชพเชฎเชฆเชพเชฐเซ‹เชจเซ‡ เชชเซเชฐเซ‹เชคเซเชธเชพเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ "เชเช• เช•เซเชฒเชฟเช•" เชฎเชพเช‚ :) เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชคเซ‡ เชœเชพเชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡, เชเช• เชœ เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เช†เชฆเซ‡เชถเซ‹ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€ :)

เชคเชฎเซ‡ เช† เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

  • เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเชพเชŸเซ‡ IP เชเชกเซเชฐเซ‡เชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เชคเซ‡เชจเซ‡ เชธเชฐเชณ เชญเชพเชทเชพเชฎเชพเช‚ เชฒเช–เซ€เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซ‹ /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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹