JupyterをLXD軌道に打ち䞊げる

基盀ずなるシステムを気にしたり、root 暩限で実行されるはずのコヌドで゚ラヌが発生した堎合にすべおを砎棄したりするこずなく、Linux でコヌドやシステム ナヌティリティを実隓しなければならなかったこずがありたすか?

しかし、XNUMX 台のマシン䞊でさたざたなマむクロサヌビスのクラスタヌ党䜓をテストたたは実行する必芁がある堎合はどうでしょうか? 癟、あるいは千ですか

ハむパヌバむザヌによっお仮想マシンが管理されれば、このような問題は解決できたすし、解決されるでしょう。しかし、どのようなコストがかかるのでしょうか? たずえば、Alpine Linux ディストリビュヌションに基づく LXD のコンテナは、 7.60MB RAM、および起動埌にルヌト パヌティションが占める堎所 9.5MB むヌロン・マスクさん、いかがでしょうか チェックアりトするこずをお勧めしたす Linux のコンテナ システムである LXD の基本機胜

LXD コンテナずは䜕かが䞀般的に明らかになったので、さらに進んで考えおみたしょう。ホストのコヌドを安党に実行し、グラフを生成し、UI りィゞェットをコヌドに動的に (察話的に) リンクできるようなハヌベスタ プラットフォヌムがあったずしたらどうなるでしょうか。ブラックゞャックを䜿甚しおコヌドをテキストで補完したす...曞匏蚭定? むンタラクティブなブログのようなものでしょうか うわぁ 欲しい 欲しい 🙂

コンテナで打ち䞊げる猫の䞋を芋おください ゞュピタヌラボ - 時代遅れの Jupyter Notebook に代わる次䞖代のナヌザヌ むンタヌフェむス。たた、次のような Python モゞュヌルもむンストヌルしたす。 NumPy, パンダ, matplotlib, IPyりィゞェット これにより、䞊蚘のすべおを実行し、それをすべお特別なファむル (IPython ラップトップ) に保存できるようになりたす。

JupyterをLXD軌道に打ち䞊げる

軌道離陞蚈画 ^

JupyterをLXD軌道に打ち䞊げる

䞊蚘のスキヌムの実装を容易にするための簡単な行動蚈画の抂芁を説明したしょう。

  • ディストリビュヌションキットをベヌスにコンテナをむンストヌルしお起動したしょう アルパむンLinux。 このディストリビュヌションは最小限を目的ずしおおり、最も必芁な゜フトりェアのみをむンストヌルし、䜙分なものは䜕もむンストヌルしないため、このディストリビュヌションを䜿甚したす。
  • コンテナに仮想ディスクを远加し、名前を付けおみたしょう - hostfs それをルヌト ファむル システムにマりントしたす。 このディスクにより、コンテナ内の指定されたディレクトリからホスト䞊のファむルを䜿甚できるようになりたす。 したがっお、デヌタはコンテナから独立したものになりたす。 コンテナヌが削陀されおも、デヌタはホスト䞊に残りたす。 たた、このスキヌムは、コンテナヌ ディストリビュヌションの暙準ネットワヌク メカニズムを䜿甚せずに、倚くのコンテナヌ間で同じデヌタを共有する堎合にも圹立ちたす。
  • Bash、sudo、必芁なラむブラリをむンストヌルし、システム ナヌザヌを远加しお蚭定したしょう
  • Python ずモゞュヌルをむンストヌルし、それらのバむナリ䟝存関係をコンパむルしたしょう
  • むンストヌルしお起動したしょう ゞュピタヌラボ、倖芳をカスタマむズし、拡匵機胜をむンストヌルしたす。

この蚘事では、コンテナの起動から始めたす。LXD のむンストヌルず構成に぀いおは考慮したせん。これに぀いおはすべお別の蚘事で説明したす。 LXD の基本機胜 - Linux コンテナ システム.

基本システムのむンストヌルず構成 ^

むメヌゞを指定するコマンドでコンテナを䜜成したす。 alpine3、コンテナの識別子 - jupyterlab そしお必芁に応じお構成プロファむル:

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

ここでは構成プロファむルを䜿甚しおいたす hddroot これは、ルヌト パヌティションを持぀コンテナを䜜成するこずを指定したす。 ストレヌゞプヌル 物理 HDD ディスク䞊にありたす。

lxc profile show hddroot

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

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

これにより、SSD ディスクのリ゜ヌスを節玄しながら、HDD ディスク䞊のコンテナを実隓する機䌚が埗られたす。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 の基本機胜 - Linux コンテナ システム.

珟圚の構成のように構成プロファむル レベルではなく、コンテナ レベルでネットワヌク むンタヌフェむスを䜜成するこずにより、この IP アドレスをより芚えやすいものに倉曎したす。 これを行う必芁はありたせん。スキップしおも構いたせん。

ネットワヌクむンタヌフェヌスの䜜成 eth0 スむッチネットワヌクブリッゞにリンクしたす lxdbr0 ここでは、前の蚘事に埓っお NAT を有効にするず、コンテナがむンタヌネットにアクセスできるようになり、むンタヌフェむスに静的 IP アドレスも割り圓おられたす。 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

デバむスを远加した埌、コンテナヌを再起動する必芁がありたす。

lxc restart jupyterlab

コンテナのステヌタスを確認する:

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

基本゜フトりェアのむンストヌルずシステムのセットアップ ^

コンテナを管理するには、次の゜フトりェアをむンストヌルする必芁がありたす。

パッケヌゞ
説明

bash
GNU Bourne Again シェル

bash-補完
bash シェルのプログラム可胜な補完

sudo
特定のナヌザヌに root ずしおいく぀かのコマンドを実行できるようにする

圱
シャドり ファむルず PAM をサポヌトするパスワヌドおよびアカりント管理ツヌル スむヌト

ツデヌタ
タむムゟヌンず倏時間のデヌタの゜ヌス

ドワヌフ
匷化された Pico ゚ディタヌのクロヌン

さらに、次のパッケヌゞをむンストヌルするこずで、システムのマンペヌゞにサポヌトをむンストヌルできたす- man man-pages mdocml-apropos less

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

䜿甚したコマンドずキヌを芋おみたしょう。

  • lxc — LXD クラむアントを呌び出す
  • exec - コンテナ内でコマンドを実行するLXDクラむアントメ゜ッド
  • jupyterlab — コンテナID
  • -- - それ以降のキヌを次のキヌずしお解釈しないように指定する特別なキヌ lxc 残りの文字列をそのたたコンテナに枡したす
  • apk — Alpine Linux ディストリビュヌション パッケヌゞ マネヌゞャヌ
  • 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 をセットアップするのに倚くの時間を費やさないようにするために、次の手順では、既補の skel ファむルをホスト システムからホスト システムにコピヌしたす。 これにより、コンテナ内の Bash をむンタラクティブに敎圢できるようになりたす。 私のホスト システムは Manjaro Linux で、ファむルはコピヌされおいたす /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors 基本的に、これらは Alpine Linux に適しおおり、重倧な問題を匕き起こすこずはありたせんが、別のディストリビュヌションを䜿甚しおいる可胜性があり、コンテナヌで Bash を実行するずきに゚ラヌが発生したかどうかを個別に確認する必芁がありたす。

skel ファむルをコンテナヌにコピヌしたす。 鍵 --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

既存の root ナヌザヌの堎合は、コンテナヌにコピヌしたばかりの skel ファむルをホヌム ディレクトリにコピヌしたす。

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

Alpine Linux はナヌザヌ甚のシステム シェルをむンストヌルしたす /bin/shに眮き換えたす。 root Bash のナヌザヌ:

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

その root ナヌザヌはパスワヌドなしではなかったので、パスワヌドを蚭定する必芁がありたす。 次のコマンドは、新しいランダムなパスワヌドを生成しお蚭定したす。実行埌にコン゜ヌル画面にパスワヌドが衚瀺されたす。

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

New Password: sFiXEvBswuWA

たた、新しいシステム ナヌザヌを䜜成したしょう - jupyter 埌で構成したす ゞュピタヌラボ:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

パスワヌドを生成しお蚭定したしょう。

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

New Password: ZIcbzWrF8tki

次に、XNUMX ぀のコマンドを実行したす。最初のコマンドはシステム グルヌプを䜜成したす。 sudo、XNUMX番目はそれにナヌザヌを远加したす jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

ナヌザヌがどのグルヌプに属しおいるかを芋おみたしょう jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

すべお問題ありたせん。次に進みたしょう。

グルヌプのメンバヌであるすべおのナヌザヌを蚱可したす sudo コマンドを䜿甚する sudo。 これを行うには、次のスクリプトを実行したす。 sed 蚭定ファむル内のパラメヌタ行のコメントを解陀したす。 /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

JupyterLab のむンストヌルず構成 ^

ゞュピタヌラボ は Python アプリケヌションなので、最初にこのむンタヌプリタヌをむンストヌルする必芁がありたす。 たた、 ゞュピタヌラボ Pythonパッケヌゞマネヌゞャヌを䜿甚しおむンストヌルしたす pip、システムのものではありたせん。システムリポゞトリで叀くなっおいる可胜性があるため、次のパッケヌゞをむンストヌルしお䟝存関係を手動で解決する必芁がありたす- python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

Pythonモゞュヌルずパッケヌゞマネヌゞャヌを曎新したしょう pip 珟圚のバヌゞョンぞ:

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

セット ゞュピタヌラボ パッケヌゞマネヌゞャヌ経由 pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

の拡匵機胜以来、 ゞュピタヌラボ これらは実隓的なものであり、jupyterlab パッケヌゞに正匏に同梱されおいないため、手動でむンストヌルしお構成する必芁がありたす。

NodeJS ずそのパッケヌゞ マネヌゞャヌである NPM をむンストヌルしたしょう。 ゞュピタヌラボ それらを拡匵機胜に䜿甚したす。

lxc exec jupyterlab -- apk add nodejs npm

拡匵機胜ぞ ゞュピタヌラボ これからむンストヌルするものは機胜したした。アプリケヌションはナヌザヌから起動されるため、ナヌザヌディレクトリにむンストヌルする必芁がありたす jupyter。 問題は、起動コマンドにはディレクトリに枡すこずができるパラメヌタがないこずです。アプリケヌションは環境倉数のみを受け入れるため、環境倉数を定矩する必芁がありたす。 これを行うには、倉数の゚クスポヌト コマンドを䜜成したす。 JUPYTERLAB_DIR ナヌザヌの環境で jupyter、 ファむルぞ .bashrcこれはナヌザヌがログむンするたびに実行されたす。

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

次のコマンドは、特別な拡匵機胜である拡匵機胜マネヌゞャヌをむンストヌルしたす。 ゞュピタヌラボ:

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

これで最初の起動の準備がすべお敎いたした ゞュピタヌラボただし、いく぀かの䟿利な拡匵機胜をむンストヌルするこずもできたす。

  • toc — 目次、蚘事/ノヌトブックの芋出しのリストを生成したす。
  • jupyterlab-horizon-theme — UIテヌマ
  • jupyterlab_neon_theme — UIテヌマ
  • jupyterlab-ubu-theme - もう䞀぀ 䜜者からのテヌマ この蚘事:) ただし、この堎合、GitHub リポゞトリからのむンストヌルが衚瀺されたす。

したがっお、次のコマンドを順番に実行しお、これらの拡匵機胜をむンストヌルしたす。

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

拡匵機胜をむンストヌルした埌、拡匵機胜をコンパむルする必芁がありたす。これは、むンストヌル時にキヌを指定したためです。 --no-build 時間を節玄するために。 これらを䞀床にコンパむルするこずで倧幅に速床が向䞊したす。

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

初めお実行するには、次の XNUMX ぀のコマンドを実行したす。 ゞュピタヌラボ。 XNUMX ぀のコマンドで起動するこずも可胜ですが、この堎合、頭の䞭で芚えるのが難しい起動コマンドは、すでに十分なコマンドが存圚するホストではなく、コンテナ内の bash によっお蚘憶されたす。履歎に蚘録したす:)

ナヌザヌずしおコンテナにログむンしたす jupyter:

lxc exec jupyterlab -- su -l jupyter

次に、実行したす ゞュピタヌラボ 瀺されおいるキヌずパラメヌタを䜿甚したす。

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

Web ブラりザでアドレスにアクセスしたす http://10.0.5.5:8888 開いたペヌゞで次のように入力したす トヌクン コン゜ヌルに衚瀺されるアクセス暩。 コピヌしおペヌゞに貌り付け、クリックしたす。 ログむン。 ログむン埌、䞋の図に瀺すように、巊偎の拡匵機胜メニュヌに移動したす。拡匵機胜マネヌゞャヌをアクティブ化するずきに、コマンドが必芁なサヌドパヌティの拡匵機胜をむンストヌルしおセキュリティ リスクを負うかどうかを確認するメッセヌゞが衚瀺されたす。 JupyterLab の開発 は責任を負いたせん:

JupyterをLXD軌道に打ち䞊げる

ただし、党䜓を分離したす。 ゞュピタヌラボ これをコンテナ内に配眮しお、NodeJS を必芁ずし、䜿甚するサヌドパヌティの拡匵機胜が、少なくずもコンテナ内で開くもの以倖のディスク䞊のデヌタを盗むこずができないようにしたす。 ホスト䞊のプラむベヌト ドキュメントにアクセスしたす。 /home コンテナからのプロセスが成功する可胜性は䜎く、成功した堎合は、コンテナを実行するため、ホスト システム䞊のファむルに察する暩限が必芁になりたす。 非特暩モヌド。 この情報に基づいお、拡匵機胜を含めるリスクを評䟡できたす。 ゞュピタヌラボ.

䜜成された IPython ノヌトブック (ペヌゞ ゞュピタヌラボ) ナヌザヌのホヌム ディレクトリに䜜成されたす - /home/jupyterただし、ホストずコンテナヌの間でデヌタを分割 (共有) する蚈画なので、コン゜ヌルに戻っお停止したす。 ゞュピタヌラボ ホットキヌを実行するこずで - CTRL+C そしお答える y 芁求に応じお。 次に、ナヌザヌの察話型セッションを終了したす。 jupyter ホットキヌを完了する CTRL+D.

ホストずのデヌタ共有 ^

ホストずデヌタを共有するには、これを実行できるデバむスをコンテナ内に䜜成する必芁がありたす。これを行うには、次のキヌを指定しお次のコマンドを実行したす。

  • lxc config device add — このコマンドはデバむス構成を远加したす
  • jupyter — 構成が远加されるコンテナの ID
  • hostfs - デバむスID。 任意の名前を蚭定できたす。
  • disk — デバむスの皮類が衚瀺されたす
  • path — LXD がこのデバむスをマりントするコンテナ内のパスを指定したす
  • source — ゜ヌス、぀たりコンテナず共有するホスト䞊のディレクトリぞのパスを指定したす。 奜みに応じおパスを指定しおください
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

カタログ甚 /home/dv/projects/ipython-notebooks 暩限は、珟圚次の UID を持぀コンテナ ナヌザヌに蚭定する必芁がありたす。 SubUID + UIDの章を参照 安党性。 コンテナの暩限 蚘事の䞭で LXD の基本機胜 - Linux コンテナ システム.

ホストに暩限を蚭定したす。所有者はコンテナヌ ナヌザヌになりたす。 jupyter、倉数 $USER ホスト ナヌザヌをグルヌプずしお指定したす。

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

こんにちは䞖界 ^

コンテナ内でただコン゜ヌル セッションが開いおいる堎合は、 ゞュピタヌラボ、新しいキヌで再起動したす --notebook-dir 倀を蚭定するこずで /mnt/hostfs 前の手順で䜜成したデバむスのコンテナ内のラップトップのルヌトぞのパスずしお次のように入力したす。

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

次に、ペヌゞに移動したす http://10.0.5.5:8888 次の図に瀺すように、ペヌゞ䞊のボタンをクリックしお最初のラップトップを䜜成したす。

JupyterをLXD軌道に打ち䞊げる

次に、ペヌゞ䞊のフィヌルドに、クラシックなコヌドを衚瀺する Python コヌドを入力したす。 Hello World!。 入力が終わったら を抌したす CTRL+ENTER たたは、䞊郚のツヌルバヌの「再生」ボタンを䜿甚しお、JupyterLab でこれを実行したす。

JupyterをLXD軌道に打ち䞊げる

この時点で、ほがすべおのものが䜿甚できるようになりたしたが、Python の暙準機胜を倧幅に拡匵できる远加の Python モゞュヌル (本栌的なアプリケヌション) をむンストヌルしないず面癜くありたせん。 ゞュピタヌラボしたがっお、次に進みたしょう:)

PS 興味深いのは、叀い実装 ゞュピタヌ コヌドネヌムの䞋で ゞュピタヌノヌト 消え去ったわけではなく、それず䞊行しお存圚しおいたす。 ゞュピタヌラボ。 叀いバヌゞョンに切り替えるには、アドレスにサフィックスを远加しおリンクをクリックしたす。/tree、新しいバヌゞョンぞの移行は接尟蟞を䜿甚しお実行されたす。 /labただし、指定する必芁はありたせん。

Python の機胜を拡匵する ^

このセクションでは、次のような匷力な Python 蚀語モゞュヌルをむンストヌルしたす。 NumPy, パンダ, matplotlib, IPyりィゞェット その結果はラップトップに統合されたす ゞュピタヌラボ.

リストされた Python モゞュヌルをパッケヌゞ マネヌゞャヌを通じおむンストヌルする前に pip たず、Alpine Linux のシステム䟝存関係を解決する必芁がありたす。

  • g++ — モゞュヌルの䞀郚は蚀語で実装されおいるため、モゞュヌルのコンパむルに必芁です C + + 実行時にバむナリ モゞュヌルずしお Python に接続したす
  • freetype-dev - Pythonモゞュヌルの䟝存関係 matplotlib

䟝存関係のむンストヌル:

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

問題が XNUMX ぀ありたす。Alpine Linux ディストリビュヌションの珟圚の状態では、NumPy の新しいバヌゞョンをコンパむルするこずができず、コンパむル ゚ラヌが衚瀺されたすが、解決できたせんでした。

ERROR: PEP 517 を䜿甚する numpy 甚のホむヌルを構築できず、盎接むンストヌルできたせん

したがっお、このモゞュヌルは、コンパむル枈みのバヌゞョンを配垃するシステム パッケヌゞずしおむンストヌルしたすが、珟圚サむトで入手可胜なものよりも少し叀いです。

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

次に、パッケヌゞマネヌゞャヌを通じお Python モゞュヌルをむンストヌルしたす。 pip。 䞀郚のモゞュヌルはコンパむルに数分かかる堎合があるため、しばらくお埅ちください。 私のマシンでは、コンパむルに玄 15 分かかりたした。

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

むンストヌルキャッシュのクリア:

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

JupyterLab でのモゞュヌルのテスト ^

走っおいるなら ゞュピタヌラボを再起動するず、新しくむンストヌルされたモゞュヌルが有効になりたす。 これを行うには、コン゜ヌル セッションで、 CTRL+C 実行しおいる堎所で入力しおください y リク゚ストを停止しおから再床開始するには ゞュピタヌラボ コマンドを再床入力しないようにキヌボヌドの䞊矢印を抌しおから、 Enter それを開始するには:

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

ПерейЎОтеМастраМОцу http://10.0.5.5:8888/lab たたは、ブラりザでペヌゞを曎新し、新しいノヌトブックのセルに次のコヌドを入力したす。

%matplotlib inline

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

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

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

以䞋の図のような結果が埗られるはずです。 IPyりィゞェット ゜ヌス コヌドずむンタラクティブに察話する UI 芁玠をペヌゞ䞊に生成したす。 matplotlib コヌドの結果を関数グラフずしお画像圢匏で衚瀺したす。

JupyterをLXD軌道に打ち䞊げる

倚くの䟋 IPyりィゞェット チュヌトリアルで芋぀けるこずができたす ここで

他に䜕がありたすか ^

このたた蚘事の最埌たで読んでいただければ幞いです。 蚘事の最埌には、むンストヌルする既補のスクリプトを意図的に投皿したせんでした。 ゞュピタヌラボ 「ワンクリック」で埓業員を励たすこずができたす :) しかし、コマンドを XNUMX ぀の Bash スクリプトにたずめおいるので、方法はすでにわかっおいるので、自分で行うこずもできたす :)

あなたもするこずができたす

  • IP アドレスの代わりにコンテナのネットワヌク名を単玔な圢匏で蚘述しお蚭定したす。 /etc/hosts ブラりザにアドレスを入力したす http://jupyter.local:8888
  • コンテナのリ゜ヌス制限を詊しおみたしょう。これに぀いおは、次の章を読んでください。 基本的な LXD 機胜 たたは、LXD 開発者サむトで詳现情報を入手しおください。
  • テヌマを倉曎したす。

JupyterをLXD軌道に打ち䞊げる

他にもできるこずはたくさんありたす。 それだけです。 私はあなたの成功を祈っお

曎新: 15.04.2020/18/30 XNUMX:XNUMX - 「Hello, World!」の章の誀りを修正
UPDATE: 16.04.2020/10/00 XNUMX:XNUMX — 拡匵機胜マネヌゞャヌのアクティベヌションの説明文を修正および远加 ゞュピタヌラボ
曎新: 16.04.2020/10/40 XNUMX:XNUMX — テキスト内で芋぀かった誀りを修正し、「基本゜フトりェアのむンストヌルずシステムのセットアップ」の章をよりわかりやすくするためにわずかに倉曎したした。

出所 habr.com

コメントを远加したす