рдЬреНрдпреБрдкрд┐рдЯрд░рдЪреЗ LXD рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рддреНрд░реБрдЯреА рдЖрдврд│рд▓реНрдпрд╛рд╕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдгрд╛рд▓реАрдЪреА рдЪрд┐рдВрддрд╛ рди рдХрд░рддрд╛ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдлрд╛рдбреВрди рдЯрд╛рдХрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рдХреЛрдб рдХрд┐рдВрд╡рд╛ рд╕рд┐рд╕реНрдЯрдо рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рдЖрд╣реЗ рдХрд╛?

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

рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░рджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╕рд╣, рдЕрд╢рд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╕реЛрдбрд╡рд▓реНрдпрд╛ рдЬрд╛рддреАрд▓, рдкрд░рдВрддреБ рдХреЛрдгрддреНрдпрд╛ рдХрд┐рдВрдорддреАрд╡рд░? рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд LXD рдордзреАрд▓ рдХрдВрдЯреЗрдирд░ рдлрдХреНрдд рд╡рд╛рдкрд░рддреЛ 7.60MB RAM, рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдирдВрддрд░ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди рдХреБрдареЗ рд╡реНрдпрд╛рдкрддреЗ 9.5MB! рддреБрд▓рд╛ рддреЗ рдХрд╕реЗ рдЖрд╡рдбрддреЗ, рдПрд▓реЛрди рдорд╕реНрдХ? рдореА рдЪреЗрдХ рдЖрдЙрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ LXD рдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдХреНрд╖рдорддрд╛ - рд▓рд┐рдирдХреНрд╕рдордзреАрд▓ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо

LXD рдХрдВрдЯреЗрдирд░реНрд╕ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рд╣реЗ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рдЖрдкрдг рдЖрдгрдЦреА рдкреБрдвреЗ рдЬрд╛рдКрди рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдпрд╛ рдХреА, рдЬрд░ рдЕрд╕рд╛ рдПрдЦрд╛рджрд╛ рд╣рд╛рд░реНрд╡реЗрд╕реНрдЯрд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЕрд╕реЗрд▓ рддрд░ рдЬрд┐рдереЗ рддреБрдореНрд╣реА рд╣реЛрд╕реНрдЯрд╕рд╛рдареА рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ рдХреЛрдб рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛, рдЖрд▓реЗрдЦ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛, рдбрд╛рдпрдиреЕрдорд┐рдХрд▓реА (рдкрд░рд╕реНрдкрд░рд░рд┐рддреНрдпрд╛) UI- рд╡рд┐рдЬреЗрдЯреНрд╕рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдХреЛрдбрд╕рд╣ рд▓рд┐рдВрдХ рдХрд░реВ рд╢рдХрддрд╛, рдмреНрд▓реЕрдХрдЬреЕрдХ... рдлреЙрд░рдореЕрдЯрд┐рдВрдЧрд╕рд╣ рдордЬрдХреВрд░рд╛рд╕рд╣ рдХреЛрдбрдЪреА рдкреВрд░реНрддрддрд╛ рдХрд░рд╛рдпрдЪреА? рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдмреНрд▓реЙрдЧ? рд╡реНрд╡рд╛... рдорд▓рд╛ рддреЗ рд╣рд╡реЗ рдЖрд╣реЗ! рдкрд╛рд╣рд┐рдЬреЗ! ЁЯЩВ

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЦрд╛рд▓реА рдкрд╣рд╛ рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд▓реЙрдиреНрдЪ рдХрд░реВ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ - рдХрд╛рд▓рдмрд╛рд╣реНрдп рдЬреНрдпреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдРрд╡рдЬреА рдкреБрдвреАрд▓ рдкрд┐рдвреАрдЪрд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕, рдЖрдгрд┐ рдЖрдореНрд╣реА рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рджреЗрдЦреАрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рдЬрд╕реЗ рдХреА рд╕реБрдиреНрди, рдкрд╛рдВрдбреНрдпрд╛, рдореЕрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм, IPyWidgets рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд░ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдИрд▓ рдЖрдгрд┐ рддреЗ рд╕рд░реНрд╡ рдПрдХрд╛ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдИрд▓рдордзреНрдпреЗ рд╕реЗрд╡реНрд╣ рдХрд░реЗрд▓ - рдПрдХ IPython рд▓реЕрдкрдЯреЙрдк.

рдЬреНрдпреБрдкрд┐рдЯрд░рдЪреЗ LXD рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рдСрд░реНрдмрд┐рдЯрд▓ рдЯреЗрдХ-рдСрдл рдпреЛрдЬрдирд╛ ^

рдЬреНрдпреБрдкрд┐рдЯрд░рдЪреЗ LXD рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рд╡рд░реАрд▓ рдпреЛрдЬрдирд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреЗ рдЖрдкрд▓реНрдпрд╛рд╕рд╛рдареА рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдереЛрдбрдХреНрдпрд╛рдд рдХреГрддреА рдпреЛрдЬрдиреЗрдЪреА рд░реВрдкрд░реЗрд╖рд╛ рджреЗрдК:

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

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

рдореВрд▓рднреВрдд рдкреНрд░рдгрд╛рд▓реАрдЪреА рд╕реНрдерд╛рдкрдирд╛ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди ^

рдЖрдореНрд╣реА рдХрдорд╛рдВрдбрд╕рд╣ рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рддреЛ рдЬреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣реА рдкреНрд░рддрд┐рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ - alpine3, рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдУрд│рдЦрдХрд░реНрддрд╛ - jupyterlab рдЖрдгрд┐, рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╛рдЗрд▓:

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

рдпреЗрдереЗ рдореА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╡рд╛рдкрд░рдд рдЖрд╣реЗ hddroot рдордзреНрдпреЗ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрдирд╛рд╕рд╣ рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдкреВрд▓ рднреМрддрд┐рдХ HDD рдбрд┐рд╕реНрдХрд╡рд░ рд╕реНрдерд┐рдд:

lxc profile show hddroot

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

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

рд╣реЗ рдорд▓рд╛ HDD рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рджреЗрддреЗ, SSD рдбрд┐рд╕реНрдХрдЪреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рдЬрддрди рдХрд░рддреЗ, рдЬреЗ рдорд╛рдЭреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рджреЗрдЦреАрд▓ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ ЁЯЩВ рдЬреНрдпрд╛рд╕рд╛рдареА рдореА рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ. ssdroot.

рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рддреЛ рд░рд╛рдЬреНрдпрд╛рдд рдЖрд╣реЗ STOPPED, рдореНрд╣рдгреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд init рдкреНрд░рдгрд╛рд▓реА рдЪрд╛рд▓рд╡реВрди рддреЗ рд╕реБрд░реВ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓:

lxc start jupyterlab

рдХреА рд╡рд╛рдкрд░реВрди LXD рдордзреНрдпреЗ рдХрдВрдЯреЗрдирд░рдЪреА рд╕реВрдЪреА рджрд╛рдЦрд╡реВ -c рдЬреЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рдЬреЗ cрдУрд▓рдореНрд╕ рдбрд┐рд╕реНрдкреНрд▓реЗ:

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

рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдореБрд│реЗ, рдЖрдпрдкреА рдкрддреНрддрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рдирд┐рд╡рдбрд▓рд╛ рдЧреЗрд▓рд╛ default рдЬреЗ рдкреВрд░реНрд╡реА рд▓реЗрдЦрд╛рдд рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ LXD рдЪреА рдореВрд▓рднреВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ - рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо.

рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕реНрддрд░рд╛рд╡рд░ рдирд╡реНрд╣реЗ рддрд░ рдХрдВрдЯреЗрдирд░ рд╕реНрддрд░рд╛рд╡рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдпрд╛рд░ рдХрд░реВрди рдЖрдореНрд╣реА рд╣рд╛ 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      |
+------------+---------+------------------+--------------+

рдореВрд▓рднреВрдд рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯ рдХрд░рдгреЗ ^

рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

рдкреЕрдХреЗрдЬ
рд╡рд░реНрдгрди

рдмрд╛рд╢
GNU рдмреЙрд░реНрди рдкреБрдиреНрд╣рд╛ рд╢реЗрд▓

bash-рдкреВрд░реНрдгрддрд╛
рдмреЕрд╢ рд╢реЗрд▓рд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдкреВрд░реНрдгрддрд╛

рд╕реБрдбреЛ
рдХрд╛рд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдХрд╛рд╣реА рдХрдорд╛рдВрдб рд░реВрдЯ рдореНрд╣рдгреВрди рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рджреНрдпрд╛

рд╕рд╛рд╡рд▓реА
рд╢реЕрдбреЛ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ PAM рд╕рд╛рдареА рд╕рдкреЛрд░реНрдЯ рдЕрд╕рд▓реЗрд▓реЗ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдгрд┐ рдЕрдХрд╛рдЙрдВрдЯ рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдЯреВрд▓ рд╕реВрдЯ

tzdata
рдЯрд╛рдЗрдо рдЭреЛрди рдЖрдгрд┐ рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡реНрд╣рд┐рдВрдЧ рдЯрд╛рдЗрдо рдбреЗрдЯрд╛рд╕рд╛рдареА рд╕реНрд░реЛрдд

рдиреЕрдиреЛ
рд╕реБрдзрд╛рд░рдгрд╛рдВрд╕рд╣ рдкрд┐рдХреЛ рд╕рдВрдкрд╛рджрдХ рдХреНрд▓реЛрди

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдкреЕрдХреЗрдЬреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрди рд╕рд┐рд╕реНрдЯрдо рдореЕрди-рдкреЗрдЬреЗрд╕рдордзреНрдпреЗ рд╕рдорд░реНрдерди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ - man man-pages mdocml-apropos less

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

рдЖрдкрдг рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдХрдорд╛рдВрдбреНрд╕ рдЖрдгрд┐ рдХреА рдкрд╛рд╣реВ рдпрд╛:

  • lxc - рдПрд▓рдПрдХреНрд╕рдбреА рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдХреЙрд▓ рдХрд░рд╛
  • exec - LXD рдХреНрд▓рд╛рдпрдВрдЯ рдкрджреНрдзрдд рдЬреА рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рддреЗ
  • jupyterlab - рдХрдВрдЯреЗрдирд░ рдЖрдпрдбреА
  • -- тАФ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреА рдЬреА рдкреБрдвреАрд▓ рдХреА рдЪрд╛ рдХреА рдореНрд╣рдгреВрди рдЕрд░реНрде рд▓рд╛рд╡реВ рдирдпреЗ рдЕрд╕реЗ рдирд┐рд░реНрджреЗрд╢реАрдд рдХрд░рддреЗ lxc рдЖрдгрд┐ рдЙрд░рд▓реЗрд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░рд▓рд╛ рджреНрдпрд╛
  • apk тАФ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
  • add тАФ рдПрдХ рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рдкрджреНрдзрдд рдЬреА рдХрдорд╛рдВрдбрдирдВрддрд░ рдирд┐рд░реНрджреЗрд╢реАрдд рдкреЕрдХреЗрдЬреЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ

рдкреБрдвреЗ, рдЖрдореНрд╣реА рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдПрдХ рдЯрд╛рдЗрдо рдЭреЛрди рд╕реЗрдЯ рдХрд░реВ Europe/Moscow:

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

рдЯрд╛рдЗрдо рдЭреЛрди, рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ tzdata рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдпрд╛рдкреБрдвреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА, рддреЗ рдЬрд╛рдЧрд╛ рдШреЗрдИрд▓, рдореНрд╣рдгреВрди рддреЗ рд╣рдЯрд╡реВ:

lxc exec jupyterlab -- apk del tzdata

рдЯрд╛рдЗрдо рдЭреЛрди рддрдкрд╛рд╕рдд рдЖрд╣реЗ:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдмреЕрд╢ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡реВ рдирдпреЗ рдореНрд╣рдгреВрди, рдкреБрдвреАрд▓ рдЪрд░рдгрд╛рдВрдордзреНрдпреЗ рдЖрдореНрд╣реА рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдордордзреВрди рддрдпрд╛рд░ рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓реНрд╕ рдХреЙрдкреА рдХрд░реВ. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдкрд░рд╕реНрдкрд░рд░рд┐рддреНрдпрд╛ рдмреЕрд╢рд▓рд╛ рд╕реБрдВрджрд░ рдмрдирд╡рд┐рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓. рдорд╛рдЭреА рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдорд╛рдВрдЬрд╛рд░реЛ рд▓рд┐рдирдХреНрд╕ рдЖрд╣реЗ рдЖрдгрд┐ рдлрд╛рдпрд▓реА рдХреЙрдкреА рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors рддрддреНрддреНрд╡рддрдГ рддреЗ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рдпреЛрдЧреНрдп рдЖрд╣реЗрдд рдЖрдгрд┐ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╡реЗрдЧрд│реЗ рд╡рд┐рддрд░рдг рдЕрд╕реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдмреЕрд╢ рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рдХрд╛рд╣реА рддреНрд░реБрдЯреА рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓реНрд╕ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХреЙрдкреА рдХрд░рд╛. рдХреА --create-dirs рдЬрд░ рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕реЗрд▓ рддрд░ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░реЗрд▓:

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

рдЖрдзреАрдкрд╛рд╕реВрди рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд░реВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА, рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдиреБрдХрддреНрдпрд╛рдЪ рдХреЙрдкреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓реНрд╕ рд╣реЛрдо рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рдХреЙрдкреА рдХрд░рд╛:

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

рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕рд┐рд╕реНрдЯрдо рд╢реЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ /bin/sh, рдЖрдореНрд╣реА рддреЗ рд╕рд╣ рдмрджрд▓реВ root рдмреЕрд╢ рдордзреАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддрд╛:

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

рдХреА root рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдбрд░рд╣рд┐рдд рдирд╡реНрд╣рддрд╛, рддреНрдпрд╛рд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдб рддреНрдпрд╛рдЪреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб рддрдпрд╛рд░ рдХрд░реЗрд▓ рдЖрдгрд┐ рд╕реЗрдЯ рдХрд░реЗрд▓, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдирдВрддрд░ рдХрдиреНрд╕реЛрд▓ рд╕реНрдХреНрд░реАрдирд╡рд░ рджрд┐рд╕реЗрд▓:

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

New Password: sFiXEvBswuWA

рддрд╕реЗрдЪ, рдПрдХ рдирд╡реАрди рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХрд░реВрдпрд╛ - jupyter рдЬреНрдпрд╛рд╕рд╛рдареА рдЖрдкрдг рдирдВрддрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ 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 рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдд рдЖрд╣реЗ ^

jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдкрд╛рдпрдерди рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдкрдг рдкреНрд░рдердо рд╣рд╛ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ. рддрд╕реЗрдЪ, jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдЖрдореНрд╣реА рдкрд╛рдпрдерди рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рд╡рд╛рдкрд░реВрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ 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

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рджреНрд╡рд╛рд░реЗ pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

рдордзреНрдпреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдЭрд╛рд▓реНрдпрд╛рдкрд╛рд╕реВрди jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЖрд╣реЗрдд рдЖрдгрд┐ рдЕрдзрд┐рдХреГрддрдкрдгреЗ jupyterlab рдкреЕрдХреЗрдЬрд╕рд╣ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ рд╕реНрд╡рддрдГ рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рддреНрдпрд╛рд╕рд╛рдареА NodeJS рдЖрдгрд┐ рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ - NPM, рдкрд╛рд╕реВрди jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рддреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╛рдареА рд╡рд╛рдкрд░рддреЗ:

lxc exec jupyterlab -- apk add nodejs npm

рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдЬреЗ рдЖрдореНрд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ, рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рд▓реЙрдиреНрдЪ рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓ jupyter. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд▓рд╛рдБрдЪ рдХрдорд╛рдВрдбрдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рдкреЕрд░рд╛рдореАрдЯрд░ рдирд╛рд╣реА рдЬреЗ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ; рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдлрдХреНрдд рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реНрд╡реАрдХрд╛рд░рддреЛ рдЖрдгрд┐ рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рддреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрдорд╛рдВрдб рд▓рд┐рд╣реВ JUPYTERLAB_DIR рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд jupyter, рджрд╛рдЦрд▓ рдХрд░рдгреНрдпрд╛рдЪрд╛ .bashrcрдЬреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗрд╡реЗрд│реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ:

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

рдкреБрдвреАрд▓ рдХрдорд╛рдВрдб рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрд▓ - рдордзреНрдпреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛:

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

рдЖрддрд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛, рдкрд░рдВрддреБ рддрд░реАрд╣реА рдЖрдореНрд╣реА рдХрд╛рд╣реА рдЙрдкрдпреБрдХреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреЛ:

  • 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 рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛. рдПрдХрд╛ рдХрдорд╛рдВрдбрдиреЗ рддреЗ рд▓рд╛рдБрдЪ рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрдИрд▓, рдкрд░рдВрддреБ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд▓рд╛рдБрдЪ рдХрдорд╛рдВрдб, рдЬреА рддреБрдордЪреНрдпрд╛ рдордирд╛рдд рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдХрдареАрдг рдЖрд╣реЗ, рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдмреЕрд╢рджреНрд╡рд╛рд░реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд▓реА рдЬрд╛рдИрд▓, рдЖрдгрд┐ рд╣реЛрд╕реНрдЯрд╡рд░ рдирд╛рд╣реА, рдЬрд┐рдереЗ рдЖрдзреАрдЪ рдкреБрд░реЗрд╢рд╛ рдХрдорд╛рдВрдбреНрд╕ рдЖрд╣реЗрдд. рдЗрддрд┐рд╣рд╛рд╕рд╛рдд рддреНрдпрд╛рдВрдЪреА рдиреЛрдВрдж рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА :)

рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдХрдВрдЯреЗрдирд░рд╡рд░ рд▓реЙрдЧ рдЗрди рдХрд░рд╛ jupyter:

lxc exec jupyterlab -- su -l jupyter

рдкреБрдвреЗ, рдЪрд╛рд▓рд╡рд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рд╕реВрдЪрд┐рдд рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдХреА рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣:

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

рддреБрдордЪреНрдпрд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЭрд░рдордзреАрд▓ рдкрддреНрддреНрдпрд╛рд╡рд░ рдЬрд╛ http://10.0.5.5:8888 рдЖрдгрд┐ рдЙрдШрдбрд▓реЗрд▓реНрдпрд╛ рдкреГрд╖реНрдард╛рд╡рд░ enter рдЯреЛрдХрди рдкреНрд░рд╡реЗрд╢ рдХрд░рд╛ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рджрд┐рд╕реЗрд▓. рдкреГрд╖реНрдард╛рд╡рд░ рдХреЙрдкреА рдЖрдгрд┐ рдкреЗрд╕реНрдЯ рдХрд░рд╛, рдирдВрддрд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рд▓реЙрдЧрд┐рди рдХрд░рд╛. рд▓реЙрдЧ рдЗрди рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЦрд╛рд▓реАрд▓ рдЖрдХреГрддреАрдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдбрд╛рд╡реАрдХрдбреАрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдиреВрд╡рд░ рдЬрд╛, рдЬреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛рдирд╛, рддреГрддреАрдп рдкрдХреНрд╖рд╛рдВрдХрдбреВрди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрди рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдЬреЛрдЦреАрдо рдШреЗрдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЬрд╛рдИрд▓ рдЬреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб JupyterLab рд╡рд┐рдХрд╛рд╕ рдЬрдмрд╛рдмрджрд╛рд░ рдирд╛рд╣реА:

рдЬреНрдпреБрдкрд┐рдЯрд░рдЪреЗ LXD рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рддрдерд╛рдкрд┐, рдЖрдореНрд╣реА рд╕рдВрдкреВрд░реНрдг рд╡реЗрдЧрд│реЗ рдХрд░рдд рдЖрд╣реЛрдд jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдЖрдгрд┐ рддреЗ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдареЗрд╡рд╛ рдЬреЗрдгреЗрдХрд░реВрди NodeJS рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгрд╛рд░реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдорд╛рди рдЖрдкрдг рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЙрдШрдбрд▓реЗрд▓реНрдпрд╛ рдбрд┐рд╕реНрдХ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рдЗрддрд░ рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдЪреЛрд░реВ рд╢рдХрдд рдирд╛рд╣реАрдд. рдордзреНрдпреЗ рд╣реЛрд╕реНрдЯрд╡рд░реАрд▓ рдЖрдкрд▓реНрдпрд╛ рдЦрд╛рдЬрдЧреА рджрд╕реНрддрдРрд╡рдЬрд╛рдВрд╡рд░ рдЬрд╛ /home рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╢рд╕реНрд╡реА рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд╛рд╣реА, рдЖрдгрд┐ рдЬрд░ рддреНрдпрд╛ рдЭрд╛рд▓реНрдпрд╛, рддрд░ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдорд╡рд░реАрд▓ рдлрд╛рдпрд▓реАрдВрд╡рд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдХрд╛рд░рдг рдЖрдореНрд╣реА рдХрдВрдЯреЗрдирд░ рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рддреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдирд╕рд▓реЗрд▓рд╛ рдореЛрдб. рдпрд╛ рдорд╛рд╣рд┐рддреАрдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ, рддреБрдореНрд╣реА рдордзреНрдпреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЬреЛрдЦрдореАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реВ рд╢рдХрддрд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛.

IPython рдиреЛрдЯрдмреБрдХ рддрдпрд╛рд░ рдХреЗрд▓реЗ (рдкреГрд╖реНрдареЗ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛) рдЖрддрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рд╣реЛрдо рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ - /home/jupyter, рдкрд░рдВрддреБ рдЖрдордЪреА рдпреЛрдЬрдирд╛ рд╣реЛрд╕реНрдЯ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛ (рд╢реЗрдЕрд░) рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкрд░рдд рдпрд╛ рдЖрдгрд┐ рдерд╛рдВрдмрд╛ 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, рдзрдбрд╛ рдкрд╣рд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛. рдХрдВрдЯреЗрдирд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд▓реЗрдЦрд╛рдд LXD рдЪреА рдореВрд▓рднреВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ - рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕рд┐рд╕реНрдЯрдо.

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

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

рдирдорд╕реНрдХрд╛рд░, рдЬрдЧ! ^

рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдЬреВрдирд╣реА рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрдиреНрд╕реЛрд▓ рд╕рддреНрд░ рдЙрдШрдбрд▓реЗ рдЕрд╕реЗрд▓ рддрд░ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛, рдирдВрддрд░ рдирд╡реАрди рдХреА рд╕рд╣ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рд╛ --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 рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдкрд╛рдпрдердирдЪреНрдпрд╛ рдорд╛рдирдХ рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд▓рдХреНрд╖рдгреАрдп рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реВ рд╢рдХрдгрд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ (рд╕рдВрдкреВрд░реНрдг рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕) рд╕реНрдерд╛рдкрд┐рдд рди рдХреЗрд▓реНрдпрд╛рд╕ рддреЗ рд░реВрдЪрдгрд╛рд░реЗ рдирд╛рд╣реА. jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛рдореНрд╣рдгреВрди, рдЪрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛ :)

рдкреБрдирд╢реНрдЪ рдордиреЛрд░рдВрдЬрдХ рдЧреЛрд╖реНрдЯ рдЬреБрдиреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ рдЬреНрдпреБрдкрд┐рдЯрд░ рдХреЛрдб рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдЬреНрдпреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рджреВрд░ рдЧреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рд╕рдорд╛рдВрддрд░ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛. рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╡рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрддреНрддреНрдпрд╛рдордзреНрдпреЗ рдкреНрд░рддреНрдпрдп рдЬреЛрдбрдгрд╛рд▒реНрдпрд╛ рджреБрд╡реНрдпрд╛рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛/tree, рдЖрдгрд┐ рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдЪреЗ рд╕рдВрдХреНрд░рдордг рдкреНрд░рддреНрдпрдп рд╕рд╣ рдЪрд╛рд▓рддреЗ /lab, рдкрд░рдВрддреБ рддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА:

рдкрд╛рдпрдердирдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреЗ ^

рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд, рдЖрдореНрд╣реА рдЕрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╕реБрдиреНрди, рдкрд╛рдВрдбреНрдпрд╛, рдореЕрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм, IPyWidgets рдЬреНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рд▓реЕрдкрдЯреЙрдкрдордзреНрдпреЗ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛.

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

  • g++ тАФ рдореЙрдбреНрдпреБрд▓реНрд╕ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдХрд╛рд░рдг рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рднрд╛рд╖реЗрдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗрдд C ++ рдЖрдгрд┐ рдмрд╛рдпрдирд░реА рдореЙрдбреНрдпреВрд▓реНрд╕ рдореНрд╣рдгреВрди рд░рдирдЯрд╛рдЗрдорд╡рд░ рдкрд╛рдпрдердирд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рд╛
  • freetype-dev - рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓рд╕рд╛рдареА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдореЕрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм

рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ:

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

рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ: рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╛рдЪреНрдпрд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдд, NumPy рдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА; рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯреА рджрд┐рд╕реВрди рдпреЗрдИрд▓ рдЬреА рдореА рд╕реЛрдбрд╡реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА:

рдЪреВрдХ: PEP 517 рд╡рд╛рдкрд░рдгрд╛рд░реНтАНрдпрд╛ рдЖрдгрд┐ рдереЗрдЯ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рдпреЗрдгрд╛рд░ рдирд╛рд╣реА рдЕрд╢рд╛ numpy рд╕рд╛рдареА рдЪрд╛рдХреЗ рддрдпрд╛рд░ рдХрд░рддрд╛ рдЖрд▓реА рдирд╛рд╣реАрдд

рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рд╣реЗ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдкреЕрдХреЗрдЬ рдореНрд╣рдгреВрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рдЬреЗ рдЖрдзреАрдкрд╛рд╕реВрди рд╕рдВрдХрд▓рд┐рдд рдЖрд╡реГрддреНрддреАрдЪреЗ рд╡рд┐рддрд░рдг рдХрд░рддреЗ, рдкрд░рдВрддреБ рд╕рд╛рдЗрдЯрд╡рд░ рд╕рдзреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдереЛрдбреЗ рдЬреБрдиреЗ рдЖрд╣реЗ:

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 рдордзреНрдпреЗ рдЪрд╛рдЪрдгреА рдореЙрдбреНрдпреВрд▓ ^

рдЬрд░ рддреБрдореНрд╣реА рдзрд╛рд╡рдд рдЕрд╕рд╛рд▓ рддрд░ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛, рддреЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рд╛ рдЬреЗрдгреЗрдХрд░реВрди рдирд╡реАрди рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛрддреАрд▓. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдиреНрд╕реЛрд▓ рд╕рддреНрд░рд╛рдд, рдХреНрд▓рд┐рдХ рдХрд░рд╛ CTRL+C рдЬрд┐рдереЗ рддреЗ рдЪрд╛рд▓реВ рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛ y рд╡рд┐рдирдВрддреА рдерд╛рдВрдмрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирдВрддрд░ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдХреАрдмреЛрд░реНрдбрд╡рд░реАрд▓ рд╡рд░рдЪрд╛ рдмрд╛рдг рджрд╛рдмреВрди рдкреБрдиреНрд╣рд╛ рдкреБрдиреНрд╣рд╛ рдХрдорд╛рдВрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВ рдирдпреЗ 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 рдЖрдкрдг рддреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ рд╢реЛрдзреВ рд╢рдХрддрд╛ рдпреЗрдереЗ

рдЕрдЬреВрди рдХрд╛рдп? ^

рддреБрдореНрд╣реА рдерд╛рдВрдмрд▓рд╛рдд рдЖрдгрд┐ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдЕрдЧрджреА рд╢реЗрд╡рдЯреА рдкреЛрд╣реЛрдЪрд▓рд╛рдд рддрд░ рдЫрд╛рди. рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЗрдиреНрд╕реНрдЯреЙрд▓ рд╣реЛрдИрд▓ рдЕрд╢реА рд░реЗрдбреАрдореЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореА рдореБрджреНрджрд╛рдо рдкреЛрд╕реНрдЯ рдХреЗрд▓реА рдирд╛рд╣реА jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ рдХрд╛рдордЧрд╛рд░рд╛рдВрдирд╛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА "рдПрдХрд╛ рдХреНрд▓рд┐рдХ" рдордзреНрдпреЗ :) рдкрд░рдВрддреБ рддреБрдореНрд╣реА рддреЗ рд╕реНрд╡рддрдГ рдХрд░реВ рд╢рдХрддрд╛, рдХрд╛рд░рдг рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА, рдПрдХрд╛рдЪ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдХрдорд╛рдВрдб рдХрд╕реЗ рдЧреЛрд│рд╛ рдХреЗрд▓реЗ :)

рддреБрдореНрд╣реА рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛:

  • рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА IP рдкрддреНрддреНрдпрд╛рдРрд╡рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рдирд╛рд╡ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рднрд╛рд╖реЗрдд рд▓рд┐рд╣реВрди рд╕реЗрдЯ рдХрд░рд╛ /etc/hosts рдЖрдгрд┐ рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдкрддреНрддрд╛ рдЯрд╛рдЗрдк рдХрд░рд╛ http://jupyter.local:8888
  • рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рд╕рдВрд╕рд╛рдзрди рдорд░реНрдпрд╛рджреЗрд╕рд╣ рдЦреЗрд│рд╛, рдпрд╛рд╕рд╛рдареА рдзрдбрд╛ рд╡рд╛рдЪрд╛ рдореВрд▓рднреВрдд LXD рдХреНрд╖рдорддрд╛ рдХрд┐рдВрд╡рд╛ LXD рд╡рд┐рдХрд╕рдХ рд╕рд╛рдЗрдЯрд╡рд░ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рд╛.
  • рдереАрдо рдмрджрд▓рд╛:

рдЬреНрдпреБрдкрд┐рдЯрд░рдЪреЗ LXD рдХрдХреНрд╖реЗрдд рдкреНрд░рдХреНрд╖реЗрдкрдг

рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдЖрдкрдг рдХрд░реВ рд╢рдХрддрд╛! рдЗрддрдХрдВрдЪ. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╢ рдЗрдЪреНрдЫрд┐рддреЛ!

рдЕрдкрдбреЗрдЯ: 15.04.2020/18/30 XNUMX:XNUMX - тАЬрд╣реЕрд▓реЛ, рд╡рд░реНрд▓реНрдб!тАЭ рдпрд╛ рдЕрдзреНрдпрд╛рдпрд╛рддреАрд▓ рдЪреБрдХрд╛ рд╕реБрдзрд╛рд░рд▓реНрдпрд╛.
рдЕрдкрдбреЗрдЯ: 16.04.2020/10/00 XNUMX:XNUMX тАФ рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рдореЕрдиреЗрдЬрд░ рдЕтАНреЕрдХреНрдЯрд┐рд╡реНрд╣реЗрд╢рдирдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рддреАрд▓ рдордЬрдХреВрд░ рджреБрд░реБрд╕реНрдд рдХреЗрд▓рд╛ рдЖрдгрд┐ рдЬреЛрдбрд▓рд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛
рдЕрдкрдбреЗрдЯ: 16.04.2020/10/40 XNUMX:XNUMX тАФ рдордЬрдХреВрд░рд╛рдд рдЖрдврд│рд▓реЗрд▓реНрдпрд╛ рдЪреБрдХрд╛ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ "рдореВрд▓рднреВрдд рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯ рдХрд░рдгреЗ" рдпрд╛ рдзрдбреНрдпрд╛рд╕рд╛рдареА рдереЛрдбреЗрд╕реЗ рдмрджрд▓рд▓реЗ рдЖрд╣реЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛