рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрднреА рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдХреЛрдб рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рддрд╛рдХрд┐ рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рд╣реЛ рдФрд░ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд╖реНрдЯ рди рд╣реЛ рдЬрд╛рдП?

рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣реЗрдВ рдХрд┐ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдорд╢реАрди рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдпрд╛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдПрдХ рд╕реМ рдпрд╛ рдПрдХ рд╣рдЬрд╛рд░ рднреА?

рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рд╕реЗ, рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕ рдХреАрдордд рдкрд░? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрд▓рдПрдХреНрд╕рдбреА рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗрд╡рд▓ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ 7.60MB рд░реИрдо, рдФрд░ рдЬрд╣рд╛рдВ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рдж рд░рд╣рддрд╛ рд╣реИ 9.5MB! рдЖрдкрдХреЛ рдпрд╣ рдХреИрд╕рд╛ рд▓рдЧрд╛, рдПрд▓реЛрди рдорд╕реНрдХ? рдореИрдВ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдБ рдПрд▓рдПрдХреНрд╕рдбреА рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХреНрд╖рдорддрд╛рдПрдВ - рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдВрдЯреЗрдирд░ рдХреНрдпрд╛ рд╣реИрдВ, рдЖрдЗрдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рд╕реЛрдЪреЗрдВ, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдРрд╕рд╛ рд╣рд╛рд░реНрд╡реЗрд╕реНрдЯрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реЛрддрд╛ рдЬрд╣рд╛рдВ рдЖрдк рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рдереЗ, рдЧреНрд░рд╛рдлрд╝ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рдереЗ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ (рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд░реВрдк рд╕реЗ) рдпреВрдЖрдИ-рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рдереЗ, рдмреНрд▓реИрдХрдЬреИрдХ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░реЗрдВ... рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ? рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдмреНрд▓реЙрдЧ? рд╡рд╛рд╣... рдореБрдЭреЗ рдпрд╣ рдЪрд╛рд╣рд┐рдП! рдЪрд╛рд╣рдирд╛! ЁЯЩВ

рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рдЬрдкрдпрдЯрд░рд▓рдм - рдкреБрд░рд╛рдиреЗ рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЕрдЧрд▓реА рдкреАрдврд╝реА, рдФрд░ рд╣рдо рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ Numpy, рдкрд╛рдВрдбрд╛, matplotlib, рдЖрдИрдкрд╛рдЗрд╡рд┐рдЬреЗрдЯреНрд╕ рдЬреЛ рдЖрдкрдХреЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ - рдПрдХ рдЖрдИрдкреАрдереЙрди рд▓реИрдкрдЯреЙрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдХрдХреНрд╖реАрдп рдЯреЗрдХ-рдСрдл рдпреЛрдЬрдирд╛ ^

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ:

  • рдЖрдЗрдП рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕. рд╣рдо рдЗрд╕ рд╡рд┐рддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрддрд┐рд╕реВрдХреНрд╖реНрдорд╡рд╛рдж рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреБрдЫ рднреА рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рдирд╣реАрдВред
  • рдЖрдЗрдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирд╛рдо рджреЗрдВ - hostfs рдФрд░ рдЗрд╕реЗ рд░реВрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рдпрд╣ рдбрд┐рд╕реНрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рджреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдПрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╣реЛрд╕реНрдЯ рдкрд░ рд░рд╣реЗрдЧрд╛ред рд╕рд╛рде рд╣реА, рдпрд╣ рдпреЛрдЬрдирд╛ рдХрдВрдЯреЗрдирд░ рд╡рд┐рддрд░рдг рдХреЗ рдорд╛рдирдХ рдиреЗрдЯрд╡рд░реНрдХ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрдИ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
  • рдЖрдЗрдП рдмреИрд╢, рд╕реБрдбреЛ, рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
  • рдЖрдЗрдП рдкрд╛рдпрдерди, рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ
  • рдЖрдЗрдП рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдЬрдкрдпрдЯрд░рд▓рдм, рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдПрд▓рдПрдХреНрд╕рдбреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдпрд╣ рд╕рдм рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдПрд▓рдПрдХреНрд╕рдбреА - рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ.

рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ ^

рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЫрд╡рд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ - 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 рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдЖрд▓реЗрдЦ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдПрд▓рдПрдХреНрд╕рдбреА - рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ.

рд╣рдо рдХрдВрдЯреЗрдирд░ рд╕реНрддрд░ рдкрд░ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдХрд░ рдЗрд╕ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдпрд╛рджрдЧрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ, рди рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реНрддрд░ рдкрд░ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЕрдм рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╣реИред рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛ 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      |
+------------+---------+------------------+--------------+

рдмреБрдирд┐рдпрд╛рджреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ^

рд╣рдорд╛рд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

рдкреИрдХреЗрдЬ
Description

рдЦреВрдм рдЬреЛрд░ рд╕реЗ рдкреАрдЯрдирд╛
рдЬреАрдПрдирдпреВ рдмреЙрд░реНрди рдЕрдЧреЗрди рд╢реЗрд▓

рдмреИрд╢-рд╕рдорд╛рдкрди
рдмреИрд╢ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдордпреЛрдЧреНрдп рд╕рдорд╛рдкрди

sudo
рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рдХрдорд╛рдВрдб рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрдВ

рдЫрд╛рдпрд╛
рдЫрд╛рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ PAM рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрди рдЯреВрд▓ рд╕реВрдЯ

рддрдЬрджрддрд╛
рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдФрд░ рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдХреЗ рд╕реНрд░реЛрдд

рдиреИрдиреЛ
рд╕рдВрд╡рд░реНрджреНрдзрди рдХреЗ рд╕рд╛рде рдкрд┐рдХреЛ рд╕рдВрдкрд╛рджрдХ рдХреНрд▓реЛрди

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореИрди-рдкреЗрдЬреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - 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

рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, package 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 - рдпреВрдЖрдИ рдереАрдо
  • jupyterlab_neon_theme - рдпреВрдЖрдИ рдереАрдо
  • jupyterlab-ubu-theme - рджреВрд╕рд░рд╛ рд▓реЗрдЦрдХ рд╕реЗ рд╡рд┐рд╖рдп рдпрд╣ рд▓реЗрдЦ :) рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЗрд╕рд▓рд┐рдП, рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдПрдБ:

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

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ, рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдереА --no-build рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП. рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдХрд╛рдлреА рддреЗрдЬреА рд▓рд╛рдПрдВрдЧреЗ:

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

рдЕрдм рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ рдЬрдкрдпрдЯрд░рд▓рдм. рдЗрд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб, рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреИрд╢ рджреНрд╡рд╛рд░рд╛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рди рдХрд┐ рд╣реЛрд╕реНрдЯ рдкрд░, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдХрдорд╛рдВрдб рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП :)

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ jupyter:

lxc exec jupyterlab -- su -l jupyter

рдЕрдЧрд▓рд╛, рднрд╛рдЧреЛ рдЬрдкрдпрдЯрд░рд▓рдм рд╕рдВрдХреЗрддрд╛рдиреБрд╕рд╛рд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде:

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

рдЕрдкрдиреЗ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрддреЗ рдкрд░ рдЬрд╛рдПрдБ http://10.0.5.5:8888 рдФрд░ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреЗрдЬ рдкрд░ рдПрдВрдЯрд░ рдХрд░реЗрдВ рдЯреЛрдХрди рдПрдХреНрд╕реЗрд╕ рдЬрд┐рд╕реЗ рдЖрдк рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕реЗ рдХреЙрдкреА рдХрд░рдХреЗ рдкреЗрдЬ рдкрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ. рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╛рдИрдВ рдУрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдиреЗрдЬрд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╕рдордп рддреАрд╕рд░реЗ рдкрдХреНрд╖ рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреНрдпреВрдкрд┐рдЯрд░рд▓реИрдм рд╡рд┐рдХрд╛рд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ:

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╕рднреА рдХреЛ рдЕрд▓рдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдкрдпрдЯрд░рд▓рдм рдФрд░ рдЗрд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд┐рдиреНрд╣реЗрдВ NodeJS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдЙрди рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдЪреЛрд░реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЦреЛрд▓рддреЗ рд╣реИрдВред рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдкрдиреЗ рдирд┐рдЬреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ /home рдХрдВрдЯреЗрдирд░ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡реЗ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрд╕рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд░рд╣рд┐рдд рдореЛрдб. рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдХрд╛ рдЖрдХрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдкрдпрдЯрд░рд▓рдм.

IPython рдиреЛрдЯрдмреБрдХ (рдкреЗрдЬ рдЕрдВрджрд░) рдмрдирд╛рдП рдЧрдП рдЬрдкрдпрдЯрд░рд▓рдм) рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ - /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 рдЕрдиреБрдорддрд┐ рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ UID рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ SubUID + UID, рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВ рд╕реБрд░рдХреНрд╖рд╛ред рдХрдВрдЯреЗрдирд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд▓реЗрдЦ рдореЗрдВ рдПрд▓рдПрдХреНрд╕рдбреА - рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ.

рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдиреБрдорддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдорд╛рд▓рд┐рдХ рдХрдВрдЯреЗрдирд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдЧрд╛ jupyter, рдФрд░ рдЪрд░ $USER рдЖрдкрдХреЗ рд╣реЛрд╕реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛:

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

рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛! ^

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рд╕рддреНрд░ рдЦреБрд▓рд╛ рд╣реИ рдЬрдкрдпрдЯрд░рд▓рдм, рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ --notebook-dir рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ /mnt/hostfs рдЙрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реИрдкрдЯреЙрдк рдХреЗ рд░реВрдЯ рдХреЗ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдерд╛:

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

рдлрд┐рд░ рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ http://10.0.5.5:8888 рдФрд░ рдкреГрд╖реНрда рдкрд░ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд▓реИрдкрдЯреЙрдк рдмрдирд╛рдПрдВ рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдлрд┐рд░, рдкреГрд╖реНрда рдкрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдкрд╛рдпрдерди рдХреЛрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдЬреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ Hello World!. рдЬрдм рдЖрдк рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реЗрдВ, рддреЛ рджрдмрд╛рдПрдБ CTRL+ENTER рдпрд╛ JupyterLab рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рдкрд░ рдЯреВрд▓рдмрд╛рд░ рдкрд░ "рдкреНрд▓реЗ" рдмрдЯрди:

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд░реБрдЪрд┐рдХрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ (рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рдпрдерди рдХреА рдорд╛рдирдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдкрдпрдЯрд░рд▓рдм, рддреЛ рдЪрд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ :)

PS рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреГрд╣рд╕реНрдкрддрд┐ рдХреЛрдб рдирд╛рдо рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЬреБрдкреАрдЯрд░ рдиреЛрдЯрдмреБрдХ рджреВрд░ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реВрдк рд╕реЗ рд╡рд┐рджреНрдпрдорд╛рди рд╣реИ рдЬрдкрдпрдЯрд░рд▓рдм. рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрддреЗ рдореЗрдВ рдкреНрд░рддреНрдпрдп рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ/tree, рдФрд░ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ /lab, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

рдкрд╛рдпрдерди рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ^

рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рдРрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ Numpy, рдкрд╛рдВрдбрд╛, matplotlib, рдЖрдИрдкрд╛рдЗрд╡рд┐рдЬреЗрдЯреНрд╕ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рд▓реИрдкрдЯреЙрдк рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬрдкрдпрдЯрд░рд▓рдм.

рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ pip рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

  • g++ - рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд╕реА + + рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрд╛рдЗрдирд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрдерди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
  • freetype-dev - рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ matplotlib

рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:

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

рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ, NumPy рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛; рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдЬрд┐рд╕реЗ рдореИрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛:

рддреНрд░реБрдЯрд┐: рдирдореНрдкреА рдХреЗ рд▓рд┐рдП рдкрд╣рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдкреАрдИрдкреА 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

рдЖрдкрдХреЛ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдЬреИрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЖрдИрдкрд╛рдЗрд╡рд┐рдЬреЗрдЯреНрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдпреВрдЖрдИ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ matplotlib рдлрд╝рдВрдХреНрд╢рди рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЛ рдПрд▓рдПрдХреНрд╕рдбреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛

рдЕрдиреЗрдХ рдЙрджрд╛рд╣рд░рдг рдЖрдИрдкрд╛рдЗрд╡рд┐рдЬреЗрдЯреНрд╕ рдЖрдк рдЗрд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ

рдФрд░ рдХреНрдпрд╛? ^

рдпрджрд┐ рдЖрдк рд░реБрдХреЗ рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪреЗ рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реБрдЖред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХреА рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдЧреА рдЬрдкрдпрдЯрд░рд▓рдм рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдХ рдХреНрд▓рд┐рдХ" рдореЗрдВ :) рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ, рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рдХреЗ :)

рдЖрдк рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдо рдХреЛ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрдХрд░ рд╕реЗрдЯ рдХрд░реЗрдВ /etc/hosts рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрддрд╛ рдЯрд╛рдЗрдк рдХрд░реЗрдВ http://jupyter.local:8888
  • рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрд╛рдп рдкрдврд╝реЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдПрд▓рдПрдХреНрд╕рдбреА рдХреНрд╖рдорддрд╛рдПрдВ рдпрд╛ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ