Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

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

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

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

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

рдмрд┐рд░рд╛рд▓реЛ рдореБрдирд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдХрдиреНрдЯреЗрдирд░рдорд╛ рд▓рдиреНрдЪ рдЧрд░реНрдиреЗрдЫреМрдВ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ - рдкреБрд░рд╛рдиреЛ Jupyter Notebook рдХреЛ рд╕рдЯреНрдЯрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрд░реНрдХреЛ рдкреБрд╕реНрддрд╛, рд░ рд╣рд╛рдореА рдкрдирд┐ Python рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рдЬрд╕реНрддреИ рдирдореНрд░, рдкрд╛рдгреНрдбрд╕, matplotlib, IPyWidgets рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдорд╛рдерд┐ рд╕реВрдЪреАрдмрджреНрдз рд╕рдмреИ рдЧрд░реНрди рд░ рдпреЛ рд╕рдмреИрд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ - рдПрдХ IPython рд▓реНрдпрд╛рдкрдЯрдкред

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

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

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

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

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

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

рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди ^

рд╣рд╛рдореА рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫреМрдВ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдЫрд╡рд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫреМрдВ - alpine3, рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ - jupyterlab рд░, рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░реЛрдлрд╛рдЗрд▓:

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

рдпрд╣рд╛рдБ рдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдЫреБ hddroot рдЬрд╕рдорд╛ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрдирдХреЛ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ рднрдгреНрдбрд╛рд░рдг рдкреЛрдЦрд░реА рднреМрддрд┐рдХ HDD рдбрд┐рд╕реНрдХрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд:

lxc profile show hddroot

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

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

рдпрд╕рд▓реЗ рдорд▓рд╛рдИ 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      |
+------------+---------+-------------------+--------------+

рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, IP рдареЗрдЧрд╛рдирд╛ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдЫрдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ default рдЬреБрди рдкрд╣рд┐рд▓реЗ рд▓реЗрдЦрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ LXD рдХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ - рд▓рд┐рдирдХреНрд╕ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдгрд╛рд▓реА.

рд╣рд╛рдореА рдпреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░ рд╕реНрддрд░рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ рдЕрдЭ рдпрд╛рджрдЧрд╛рд░ рдареЗрдЧрд╛рдирд╛рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗрдЫреМрдВ, рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕реНрддрд░рдорд╛ рд╣реЛрдЗрди рдЬреБрди рд╣рд╛рд▓рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЧрд░реНрдиреБ рдкрд░реНрджреИрди, рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдЫреЛрдбреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ 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-рд╕рдорд╛рдкрди
рдмреНрдпрд╛рд╕ рд╢реЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдордпреЛрдЧреНрдп рд╕рдорд╛рдкрди

sudo
рдХреЗрд╣реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд░реВрдЯрдХреЛ рд░реВрдкрдорд╛ рдХреЗрд╣реА рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛ рджрд┐рдиреБрд╣реЛрд╕реН

рдЫрд╛рдпрд╛
рдЫрд╛рдпрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд░ PAM рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рд░ рдЦрд╛рддрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЙрдкрдХрд░рдг рд╕реБрдЗрдЯ

tzdata
рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд░ рдбреЗрд▓рд╛рдЗрдЯ рдмрдЪрдд рд╕рдордп рдбреЗрдЯрд╛ рдХреЛ рд▓рд╛рдЧреА рд╕реНрд░реЛрддрд╣рд░реВ

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

рдердк рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрд░ рдкреНрд░рдгрд╛рд▓реА рдореНрдпрд╛рди-рдкреЗрдЬрд╣рд░реВрдорд╛ рд╕рдорд░реНрдерди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - man man-pages mdocml-apropos less

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

рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХрд╛ рдЖрджреЗрд╢ рд░ рдХреБрдЮреНрдЬреАрд╣рд░реВ рд╣реЗрд░реМрдВ:

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

рдЕрд░реНрдХреЛ, рд╣рд╛рдореА рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдЧрд░реНрдиреЗрдЫреМрдВ Europe/Moscow:

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

рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐, рдкреНрдпрд╛рдХреЗрдЬ tzdata рдЕрдм рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдпрд╕рд▓реЗ рдард╛рдЙрдБ рд▓рд┐рдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдореЗрдЯреМрдВ:

lxc exec jupyterlab -- apk del tzdata

рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ:

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

рдХрдиреНрдЯреЗрдирд░рдорд╛ рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Bash рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдзреЗрд░реИ рд╕рдордп рдЦрд░реНрдЪ рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдЪрд░рдгрд╣рд░реВрдорд╛ рд╣рд╛рдореА рд╣реЛрд╕реНрдЯ рдкреНрд░рдгрд╛рд▓реАрдмрд╛рдЯ рддрдпрд╛рд░-рдмрдирд╛рдПрдХрд╛ рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓рд╣рд░реВ рдпрд╕рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗрдЫреМрдВред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдмреНрдпрд╛рд╕рд▓рд╛рдИ рд╕реБрдиреНрджрд░ рдмрдирд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫред рдореЗрд░реЛ рд╣реЛрд╕реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдордиреНрдЬрд╛рд░реЛ рд▓рд┐рдирдХреНрд╕ рд╣реЛ рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░рд┐рдБрджреИрдЫ /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors рд╕реИрджреНрдзрд╛рдиреНрддрд┐рдХ рд░реВрдкрдорд╛ рддрд┐рдиреАрд╣рд░реВ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫрдиреН рд░ рдЧрдореНрднреАрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрджреИрдирдиреН, рддрд░ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдлрд░рдХ рд╡рд┐рддрд░рдг рд╣реБрди рд╕рдХреНрдЫ рд░ рдХрдиреНрдЯреЗрдирд░рдорд╛ Bash рдЪрд▓рд╛рдЙрдБрджрд╛ рддреНрд░реБрдЯрд┐ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдХрдиреНрдЯреЗрдирд░рдорд╛ рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХреБрдЮреНрдЬреА --create-dirs рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрдирдиреН рднрдиреЗ рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ:

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

рдЕрд╡рд╕реНрдерд┐рдд рд░реВрдЯ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдШрд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдХреЗрд▓ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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

рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рд╢реЗрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрдЫ /bin/sh, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗрдЫреМрдВ root Bash рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛:

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

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

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

New Password: sFiXEvBswuWA

рд╕рд╛рдереИ, рдирдпрд╛рдБ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ - jupyter рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкрдЫрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВ 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 рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ред рдпрд╕рд▓рд╛рдИ рдПрдХ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рд╕реБрд░реВ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рддрд░ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рдХреНрд╖реЗрдкрдг рдЖрджреЗрд╢, рдЬреБрди рддрдкрд╛рдЗрдБрдХреЛ рджрд┐рдорд╛рдЧрдорд╛ рд╕рдореНрдЭрди рдЧрд╛рд╣реНрд░реЛ рдЫ, рдХрдиреНрдЯреЗрдирд░рдорд╛ bash рджреНрд╡рд╛рд░рд╛ рд╕рдореНрдЭрд┐рдиреЗрдЫ, рд░ рд╣реЛрд╕реНрдЯрдорд╛ рд╣реЛрдЗрди, рдЬрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд░реНрдпрд╛рдкреНрдд рдЖрджреЗрд╢рд╣рд░реВ рдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЗрддрд┐рд╣рд╛рд╕рдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрди :)

рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН 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 рд░ рдЦреБрд▓реНрдиреЗ рдкреГрд╖реНрдардорд╛ рдЗрдиреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЯреЛрдХрди рдкрд╣реБрдБрдЪ рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрд╕реЛрд▓рдорд╛ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред рдпрд╕рд▓рд╛рдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрд░ рдкреГрд╖реНрдардорд╛ рдЯрд╛рдБрд╕реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд▓рдЧ - рдЗрдиред рд▓рдЧ рдЗрди рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдП рдЕрдиреБрд╕рд╛рд░ рдмрд╛рдпрд╛рдБрдХреЛ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдореЗрдиреБрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдкреНрд░рдмрдиреНрдзрдХ рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрд╛, рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖рд╣рд░реВрдмрд╛рдЯ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рд▓рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдореНрдкреНрдЯ рдЧрд░рд┐рдиреЗрдЫред JupyterLab рд╡рд┐рдХрд╛рд╕ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫреИрди:

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

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

IPython рдиреЛрдЯрдмреБрдХрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдпреЛ (рдкреГрд╖реНрдард╣рд░реВрдорд╛ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛) рдЕрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЧреГрд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреЗрдЫ - /home/jupyter, рддрд░ рд╣рд╛рдореНрд░реЛ рдпреЛрдЬрдирд╛рд╣рд░реВ рд╣реЛрд╕реНрдЯ рд░ рдХрдиреНрдЯреЗрдирд░ рдмреАрдЪ рдбрд╛рдЯрд╛ (рд╕реЗрдпрд░) рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░реНрдиреЗ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдХрдиреНрд╕реЛрд▓рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рд░реЛрдХреНрдиреБрд╣реЛрд╕реНред jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рд╣рдЯрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реЗрд░ - CTRL+C рд░ рдЬрд╡рд╛рдл рджрд┐рдБрджреИ y рдЕрдиреБрд░реЛрдз рдорд╛ред рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН jupyter рд╣рдЯрдХреА рдкреВрд░рд╛ рдЧрд░реНрджреИ CTRL+D.

рд╣реЛрд╕реНрдЯрд╕рдБрдЧ рдбрд╛рдЯрд╛ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрджреИ ^

рд╣реЛрд╕реНрдЯрд╕рдБрдЧ рдбрд╛рдЯрд╛ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреЛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рд░ рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдХреБрдЮреНрдЬреАрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВ:

  • lxc config device add - рдЖрджреЗрд╢рд▓реЗ рдЙрдкрдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдердкреНрдЫ
  • jupyter тАФ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдердкрд┐рдПрдХреЛ рдХрдиреНрдЯреЗрдирд░рдХреЛ ID
  • 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 рд░ рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдкреГрд╖реНрдардорд╛ рдмрдЯрди рдХреНрд▓рд┐рдХ рдЧрд░реЗрд░ рдЖрдлреНрдиреЛ рдкрд╣рд┐рд▓реЛ рд▓реНрдпрд╛рдкрдЯрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

рддреНрдпрд╕рдкрдЫрд┐, рдкреГрд╖реНрдардХреЛ рдлрд┐рд▓реНрдбрдорд╛, рдкрд╛рдЗрдерди рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╕рд▓реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫ Hello World!ред рдЬрдм рддрдкрд╛рдЗрдБ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдерд┐рдЪреНрдиреБрд╣реЛрд╕реН CTRL+ENTER рд╡рд╛ JupyterLab рд▓рд╛рдИ рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдерд┐рдХреЛ рдЙрдкрдХрд░рдгрдкрдЯреНрдЯреАрдорд╛ "рдкреНрд▓реЗ" рдмрдЯрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

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

PS рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдкреБрд░рд╛рдиреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреБрдкрд┐рдЯрд░ рдХреЛрдб рдирд╛рдо рдЕрдиреНрддрд░реНрдЧрдд Jupyter рдиреЛрдЯрдмреБрдХ рдЧрдПрдХреЛ рдЫреИрди рд░ рдпреЛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ред рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди, рдареЗрдЧрд╛рдирд╛рдорд╛ рдкреНрд░рддреНрдпрдп рдердкреЗрд░ рд▓рд┐рдЩреНрдХ рдкрдЫреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН/tree, рд░ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рд╕рдВрдХреНрд░рдордг рдкреНрд░рддреНрдпрдп рд╕рдВрдЧ рдЧрд░рд┐рдиреНрдЫ /lab, рддрд░ рдпреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди:

рдкрд╛рдЗрдердирдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджреИ ^

рдпрд╕ рдЦрдгреНрдбрдорд╛, рд╣рд╛рдореА рддреНрдпрд╕реНрддрд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд╛рдЗрдерди рднрд╛рд╖рд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рдирдореНрд░, рдкрд╛рдгреНрдбрд╕, matplotlib, IPyWidgets рдЬрд╕рдХреЛ рдирддрд┐рдЬрд╛ рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рдПрдХреАрдХреГрдд рд╣реБрдиреНрдЫ jupyter рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛.

рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рдорд╛рд░реНрдлрдд рд╕реВрдЪреАрдмрджреНрдз рдкрд╛рдЗрдерди рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рдЕрдШрд┐ pip рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдгрд╛рд▓реА рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБрдкрд░реНрдЫ:

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

рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ:

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 рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдбрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджрдЫ, рд░ рдкрдирд┐ matplotlib рдПрдЙрдЯрд╛ рдкреНрд░рдХрд╛рд░реНрдп рдЧреНрд░рд╛рдлрдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рддреНрд░рдХреЛ рд░реВрдкрдорд╛ рдХреЛрдбрдХреЛ рдирддрд┐рдЬрд╛ рджреЗрдЦрд╛рдЙрдБрдЫ:

Jupyter LXD рдХрдХреНрд╖рд╛рдорд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЧрд░реНрджреИ

рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдг IPyWidgets рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ

рдЕрд░реВ рдХреЗ? ^

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

рддрдкрд╛рдИрдВ рдкрдирд┐ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

  • рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рдХреЛ рд╕рдЯреНрдЯрд╛ рдпрд╕рд▓рд╛рдИ рд╕рд░рд▓рдорд╛ рд▓реЗрдЦреЗрд░ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдо рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН /etc/hosts рд░ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдареЗрдЧрд╛рдирд╛ рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН http://jupyter.local:8888
  • рдХрдиреНрдЯреЗрдирд░рдХреЛ рд╕реНрд░реЛрдд рд╕реАрдорд╛рд╕рдБрдЧ рд╡рд░рд┐рдкрд░рд┐ рдЦреЗрд▓реНрдиреБрд╣реЛрд╕реН, рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдзреНрдпрд╛рдп рдкрдвреНрдиреБрд╣реЛрд╕реН рдЖрдзрд╛рд░рднреВрдд LXD рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╡рд╛ LXD рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рд╡рд┐рд╖рдпрд╡рд╕реНрддреБ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

Jupyter 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди