Pernahkah anda bereksperimen dengan kod atau utiliti sistem di Linux tanpa perlu risau tentang sistem asas dan meruntuhkan segala-galanya sekiranya berlaku ralat dalam kod yang sepatutnya dijalankan dengan keistimewaan root?
Tetapi bagaimana pula dengan hakikat bahawa katakan anda perlu menguji atau menjalankan keseluruhan kluster pelbagai perkhidmatan mikro pada satu mesin? Seratus malah seribu?
Dengan mesin maya yang diuruskan oleh hypervisor, masalah sedemikian boleh dan akan diselesaikan, tetapi pada kos berapa? Sebagai contoh, bekas dalam LXD berdasarkan pengedaran Alpine Linux menggunakan sahaja 7.60MB
RAM, dan di mana partition root menduduki selepas permulaan 9.5MB
! Bagaimanakah anda menyukainya, Elon Musk? Saya cadangkan anda menyemak keupayaan asas LXD - sistem kontena dalam Linux
Selepas menjadi jelas secara umum apa itu bekas LXD, mari kita pergi lebih jauh dan fikirkan, bagaimana jika terdapat platform penuai sedemikian di mana anda boleh menjalankan kod untuk hos dengan selamat, menjana graf, memautkan widget UI- secara dinamik (secara interaktif) dengan kod anda, tambah kod dengan teks dengan blackjack... pemformatan? Semacam blog interaktif? Wah... saya mahu! nak! π
Lihat di bawah kucing di mana kita akan melancarkan dalam bekas makmal jupyter - antara muka pengguna generasi seterusnya dan bukannya Buku Nota Jupyter yang sudah lapuk, dan kami juga akan memasang modul Python seperti numpy, Pandas, Matplotlib, IPyWidgets yang akan membolehkan anda melakukan semua yang disenaraikan di atas dan menyimpan semuanya dalam fail khas - komputer riba IPython.
Navigasi
- Pelan berlepas orbit
- Pemasangan dan konfigurasi sistem asas
- Memasang perisian asas dan menyediakan sistem
- Memasang dan mengkonfigurasi JupyterLab
- Berkongsi data dengan hos
- Hai dunia!
- Memperluaskan keupayaan Python
- Menguji modul dalam JupyterLab
- Apa lagi?
Pelan berlepas orbit ^
Mari kita gariskan pelan tindakan ringkas untuk memudahkan kita melaksanakan skim di atas:
- Mari pasang dan lancarkan bekas berdasarkan kit pengedaran Alpine Linux. Kami akan menggunakan pengedaran ini kerana ia bertujuan untuk minimalism dan akan memasang hanya perisian yang paling diperlukan di dalamnya, tiada apa-apa yang berlebihan.
- Mari tambahkan cakera maya tambahan dalam bekas dan beri nama -
hostfs
dan lekapkannya ke sistem fail akar. Cakera ini akan membolehkan anda menggunakan fail pada hos daripada direktori yang diberikan di dalam bekas. Oleh itu, data kami akan bebas daripada bekas. Jika bekas dipadamkan, data akan kekal pada hos. Selain itu, skim ini berguna untuk berkongsi data yang sama antara banyak bekas tanpa menggunakan mekanisme rangkaian standard pengedaran kontena. - Mari pasang Bash, sudo, perpustakaan yang diperlukan, tambah dan konfigurasi pengguna sistem
- Mari pasang Python, modul dan susun kebergantungan binari untuknya
- Mari pasang dan lancarkan makmal jupyter, sesuaikan penampilan, pasang sambungan untuknya.
Dalam artikel ini kami akan mulakan dengan melancarkan bekas, kami tidak akan mempertimbangkan untuk memasang dan mengkonfigurasi LXD, anda boleh menemui semua ini dalam artikel lain - Ciri asas LXD - sistem kontena Linux.
Pemasangan dan konfigurasi sistem asas ^
Kami mencipta bekas dengan arahan di mana kami menentukan imej - alpine3
, pengecam untuk bekas - jupyterlab
dan, jika perlu, profil konfigurasi:
lxc init alpine3 jupyterlab --profile=default --profile=hddroot
Di sini saya menggunakan profil konfigurasi hddroot
yang menentukan untuk mencipta bekas dengan partition akar masuk Kolam Storan terletak pada cakera HDD fizikal:
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
Ini memberi saya peluang untuk bereksperimen dengan bekas pada cakera HDD, menyimpan sumber cakera SSD, yang juga tersedia dalam sistem saya π yang mana saya telah mencipta profil konfigurasi berasingan ssdroot
.
Selepas bekas dibuat, ia berada dalam keadaan STOPPED
, jadi kita perlu memulakannya dengan menjalankan sistem init di dalamnya:
lxc start jupyterlab
Mari paparkan senarai bekas dalam LXD menggunakan kekunci -c
yang menunjukkan yang mana cpaparan olumns:
lxc list -c ns4b
+------------+---------+-------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool |
+------------+---------+-------------------+--------------+
Semasa membuat bekas, alamat IP dipilih secara rawak, kerana kami menggunakan profil konfigurasi default
yang telah dikonfigurasikan sebelum ini dalam artikel Ciri asas LXD - sistem kontena Linux.
Kami akan menukar alamat IP ini kepada alamat yang lebih mudah diingati dengan mencipta antara muka rangkaian pada tahap kontena, dan bukan pada tahap profil konfigurasi kerana ia kini dalam konfigurasi semasa. Anda tidak perlu melakukan ini, anda boleh melangkaunya.
Mencipta antara muka rangkaian eth0
yang kami pautkan ke suis (jambatan rangkaian) lxdbr0
di mana kami mendayakan NAT mengikut artikel sebelumnya dan bekas itu kini akan mempunyai akses kepada Internet, dan kami juga menetapkan alamat IP statik kepada antara muka - 10.0.5.5
:
lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Selepas menambah peranti, bekas mesti dibut semula:
lxc restart jupyterlab
Menyemak status bekas:
lxc list -c ns4b
+------------+---------+------------------+--------------+
| NAME | STATE | IPV4 | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0) | hddpool |
+------------+---------+------------------+--------------+
Memasang perisian asas dan menyediakan sistem ^
Untuk mentadbir bekas kami, anda perlu memasang perisian berikut:
Pakej
Penerangan Produk
menampar
Cangkang GNU Bourne Again
bash-completion
Penyiapan boleh atur cara untuk shell bash
sudo
Beri pengguna tertentu keupayaan untuk menjalankan beberapa arahan sebagai root
bayang-bayang
Suite alat pengurusan kata laluan dan akaun dengan sokongan untuk fail bayangan dan PAM
tzdata
Sumber untuk zon waktu dan data masa penjimatan siang
nano
Klon editor Pico dengan penambahan
Selain itu, anda boleh memasang sokongan dalam halaman manusia sistem dengan memasang pakej berikut β man man-pages mdocml-apropos less
lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano
Mari lihat arahan dan kunci yang kami gunakan:
lxc
β Hubungi pelanggan LXDexec
- Kaedah klien LXD yang menjalankan arahan dalam bekasjupyterlab
β ID kontena--
β Kunci khas yang menentukan untuk tidak mentafsir kunci selanjutnya sebagai kunci untuklxc
dan hantar baki rentetan seperti ke bekasapk
β Pengurus pakej pengedaran Alpine Linuxadd
β Kaedah pengurus pakej yang memasang pakej yang ditentukan selepas arahan
Seterusnya, kami akan menetapkan zon waktu dalam sistem Europe/Moscow
:
lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Selepas memasang zon waktu, pakej tzdata
tidak lagi diperlukan dalam sistem, ia akan mengambil ruang, jadi mari padamkannya:
lxc exec jupyterlab -- apk del tzdata
Menyemak zon waktu:
lxc exec jupyterlab -- date
Wed Apr 15 10:49:56 MSK 2020
Untuk tidak menghabiskan banyak masa menyediakan Bash untuk pengguna baharu dalam bekas, dalam langkah berikut kami akan menyalin fail skel siap sedia daripada sistem hos kepadanya. Ini akan membolehkan anda mempercantikkan Bash dalam bekas secara interaktif. Sistem hos saya ialah Manjaro Linux dan fail sedang disalin /etc/skel/.bash_profile
, /etc/skel/.bashrc
, /etc/skel/.dir_colors
pada dasarnya ia sesuai untuk Alpine Linux dan tidak menyebabkan masalah kritikal, tetapi anda mungkin mempunyai pengedaran yang berbeza dan anda perlu memikirkan secara bebas jika terdapat ralat semasa menjalankan Bash dalam bekas.
Salin fail skel ke bekas. kunci --create-dirs
akan mencipta direktori yang diperlukan jika ia tidak wujud:
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
Untuk pengguna akar sedia ada, salin fail skel yang baru disalin ke dalam bekas ke direktori utama:
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 memasang shell sistem untuk pengguna /bin/sh
, kami akan menggantikannya dengan root
pengguna dalam Bash:
lxc exec jupyterlab -- usermod --shell=/bin/bash root
Itu root
pengguna bukan tanpa kata laluan, dia perlu menetapkan kata laluan. Perintah berikut akan menjana dan menetapkan kata laluan rawak baharu untuknya, yang akan anda lihat pada skrin konsol selepas pelaksanaannya:
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
Juga, mari buat pengguna sistem baharu - jupyter
yang akan kami konfigurasikan kemudian makmal jupyter:
lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter
Mari jana dan tetapkan kata laluan untuknya:
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
Seterusnya, kami akan melaksanakan dua arahan, yang pertama akan membuat kumpulan sistem sudo
, dan yang kedua akan menambah pengguna kepadanya jupyter
:
lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter
Mari lihat kumpulan mana pengguna itu tergolong jupyter
:
lxc exec jupyterlab -- id -Gn jupyter
jupyter sudo
Semuanya ok, mari kita teruskan.
Benarkan semua pengguna yang menjadi ahli kumpulan sudo
gunakan arahan sudo
. Untuk melakukan ini, jalankan skrip berikut, di mana sed
membatalkan ulasan baris parameter dalam fail konfigurasi /etc/sudoers
:
lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"
Memasang dan mengkonfigurasi JupyterLab ^
makmal jupyter ialah aplikasi Python, jadi kita mesti memasang penterjemah ini terlebih dahulu. Juga, makmal jupyter kami akan memasang menggunakan pengurus pakej Python pip
, dan bukan sistem satu, kerana ia mungkin sudah lapuk dalam repositori sistem dan oleh itu, kita perlu menyelesaikan kebergantungan secara manual untuknya dengan memasang pakej berikut β python3 python3-dev gcc libc-dev zeromq-dev
:
lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev
Mari kemas kini modul python dan pengurus pakej pip
kepada versi semasa:
lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel
Tetapkan makmal jupyter melalui pengurus pakej pip
:
lxc exec jupyterlab -- python3 -m pip install jupyterlab
Sejak sambungan dalam makmal jupyter adalah percubaan dan tidak dihantar secara rasmi dengan pakej jupyterlab, jadi kami perlu memasang dan mengkonfigurasinya secara manual.
Mari pasang NodeJS dan pengurus pakej untuknya - NPM, sejak makmal jupyter menggunakannya untuk sambungannya:
lxc exec jupyterlab -- apk add nodejs npm
Kepada sambungan untuk makmal jupyter yang kami akan pasang berfungsi, ia perlu dipasang dalam direktori pengguna kerana aplikasi akan dilancarkan daripada pengguna jupyter
. Masalahnya ialah tiada parameter dalam arahan pelancaran yang boleh dihantar ke direktori; aplikasi hanya menerima pembolehubah persekitaran dan oleh itu kita mesti menentukannya. Untuk melakukan ini, kami akan menulis perintah eksport pembolehubah JUPYTERLAB_DIR
dalam persekitaran pengguna jupyter
, untuk memfailkan .bashrc
yang dilaksanakan setiap kali pengguna log masuk:
lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"
Perintah seterusnya akan memasang sambungan khas - pengurus sambungan masuk makmal 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"
Kini semuanya sudah sedia untuk pelancaran pertama makmal jupyter, tetapi kami masih boleh memasang beberapa sambungan berguna:
toc
β Jadual Kandungan, menghasilkan senarai tajuk dalam artikel/buku notajupyterlab-horizon-theme
β Tema UIjupyterlab_neon_theme
β Tema UIjupyterlab-ubu-theme
- Yang lagi satu tema daripada pengarang artikel ini :) Tetapi dalam kes ini, pemasangan daripada repositori GitHub akan ditunjukkan
Jadi, jalankan arahan berikut secara berurutan untuk memasang sambungan ini:
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"
Selepas memasang sambungan, kami mesti menyusunnya, kerana sebelum ini, semasa pemasangan, kami menentukan kuncinya --no-build
untuk menjimatkan masa. Sekarang kami akan mempercepatkan dengan ketara dengan menyusunnya bersama-sama sekali gus:
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"
Sekarang jalankan dua arahan berikut untuk menjalankannya buat kali pertama makmal jupyter. Ia mungkin untuk melancarkannya dengan satu arahan, tetapi dalam kes ini, arahan pelancaran, yang sukar diingati dalam fikiran anda, akan diingati oleh bash dalam bekas, dan bukan pada hos, di mana sudah terdapat arahan yang mencukupi untuk mencatatnya dalam sejarah :)
Log masuk ke bekas sebagai pengguna jupyter
:
lxc exec jupyterlab -- su -l jupyter
Seterusnya, lari makmal jupyter dengan kunci dan parameter seperti yang ditunjukkan:
[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser
Pergi ke alamat dalam pelayar web anda http://10.0.5.5:8888 dan pada halaman yang terbuka masukkan token akses yang anda akan lihat dalam konsol. Salin dan tampal pada halaman, kemudian klik Log Masuk. Selepas log masuk, pergi ke menu sambungan di sebelah kiri, seperti yang ditunjukkan dalam rajah di bawah, di mana anda akan digesa, apabila mengaktifkan pengurus sambungan, untuk mengambil risiko keselamatan dengan memasang sambungan daripada pihak ketiga yang arahannya pembangunan JupyterLab tidak bertanggungjawab:
Walau bagaimanapun, kami mengasingkan keseluruhannya makmal jupyter dan letakkannya dalam bekas supaya sambungan pihak ketiga yang memerlukan dan menggunakan NodeJS tidak boleh sekurang-kurangnya mencuri data pada cakera selain daripada yang kami buka di dalam bekas. Dapatkan dokumen peribadi anda pada hos masuk /home
proses daripada bekas tidak mungkin berjaya, dan jika ia berjaya, maka anda perlu mempunyai keistimewaan pada fail pada sistem hos, kerana kami menjalankan kontena dalam mod tidak bernasib baik. Berdasarkan maklumat ini, anda boleh menilai risiko memasukkan sambungan dalam makmal jupyter.
Mencipta buku nota IPython (halaman dalam makmal jupyter) kini akan dibuat dalam direktori rumah pengguna - /home/jupyter
, tetapi rancangan kami adalah untuk memisahkan data (kongsi) antara hos dan bekas, jadi kembali ke konsol dan berhenti makmal jupyter dengan melaksanakan hotkey - CTRL+C
dan menjawab y
atas permintaan. Kemudian tamatkan sesi interaktif pengguna jupyter
melengkapkan hotkey CTRL+D
.
Berkongsi data dengan hos ^
Untuk berkongsi data dengan hos, anda perlu mencipta peranti dalam bekas yang membolehkan anda melakukan ini dan untuk melakukan ini, jalankan arahan berikut di mana kami menentukan kunci berikut:
lxc config device add
β Perintah menambah konfigurasi perantijupyter
β ID bekas yang konfigurasi ditambahhostfs
β ID peranti. Anda boleh menetapkan sebarang nama.disk
β Jenis peranti ditunjukkanpath
β Menentukan laluan dalam bekas yang LXD akan melekapkan peranti inisource
β Tentukan sumber, laluan ke direktori pada hos yang anda ingin kongsi dengan bekas. Tentukan laluan mengikut keutamaan anda
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks
Untuk katalog /home/dv/projects/ipython-notebooks
kebenaran mesti ditetapkan kepada pengguna kontena yang pada masa ini mempunyai UID bersamaan dengan SubUID + UID
, lihat bab Keselamatan. Keistimewaan Kontena dalam artikel Ciri asas LXD - sistem kontena Linux.
Tetapkan kebenaran pada hos, di mana pemiliknya akan menjadi pengguna kontena jupyter
, dan pembolehubah $USER
akan menentukan pengguna hos anda sebagai kumpulan:
sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks
Hai dunia! ^
Jika anda masih mempunyai sesi konsol terbuka dalam bekas dengan makmal jupyter, kemudian mulakan semula dengan kunci baharu --notebook-dir
dengan menetapkan nilai /mnt/hostfs
sebagai laluan ke akar komputer riba dalam bekas untuk peranti yang kami buat dalam langkah sebelumnya:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Kemudian pergi ke halaman http://10.0.5.5:8888 dan buat komputer riba pertama anda dengan mengklik butang pada halaman seperti yang ditunjukkan dalam gambar di bawah:
Kemudian, dalam medan pada halaman, masukkan kod Python yang akan memaparkan klasik Hello World!
. Apabila anda telah selesai memasukkan, tekan CTRL+ENTER
atau butang "main" pada bar alat di bahagian atas untuk meminta JupyterLab melakukan ini:
Pada ketika ini, hampir semuanya sedia untuk digunakan, tetapi tidak menarik jika kita tidak memasang modul Python tambahan (aplikasi penuh) yang boleh mengembangkan keupayaan standard Python dengan ketara dalam makmal jupyter, oleh itu, mari kita teruskan :)
PS Perkara yang menarik ialah pelaksanaan lama Musytari di bawah nama kod Notebook Jupyter tidak hilang dan ia wujud selari dengan makmal jupyter. Untuk beralih kepada versi lama, ikut pautan menambah akhiran dalam alamat/tree
, dan peralihan kepada versi baharu dijalankan dengan akhiran /lab
, tetapi ia tidak perlu dinyatakan:
- Buku Nota Jupyter - http://10.0.5.5:8888/tree
- Makmal Jupyter - http://10.0.5.5:8888/lab
Memperluaskan keupayaan Python ^
Dalam bahagian ini, kami akan memasang modul bahasa Python yang berkuasa seperti numpy, Pandas, Matplotlib, IPyWidgets yang hasilnya diintegrasikan ke dalam komputer riba makmal jupyter.
Sebelum memasang modul Python yang disenaraikan melalui pengurus pakej pip
kita mesti terlebih dahulu menyelesaikan kebergantungan sistem dalam Alpine Linux:
g++
β Diperlukan untuk menyusun modul, kerana sebahagian daripadanya dilaksanakan dalam bahasa C + + dan sambungkan ke Python semasa runtime sebagai modul binarifreetype-dev
- pergantungan untuk modul Python Matplotlib
Memasang kebergantungan:
lxc exec jupyterlab -- apk add g++ freetype-dev
Terdapat satu masalah: dalam keadaan semasa pengedaran Linux Alpine, ia tidak akan mungkin untuk menyusun versi baharu NumPy; ralat kompilasi akan muncul yang tidak dapat saya selesaikan:
RALAT: Tidak dapat membina roda untuk numpy yang menggunakan PEP 517 dan tidak boleh dipasang terus
Oleh itu, kami akan memasang modul ini sebagai pakej sistem yang mengedarkan versi yang telah disusun, tetapi lebih tua sedikit daripada yang tersedia pada masa ini di tapak:
lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev
Seterusnya, pasang modul Python melalui pengurus pakej pip
. Harap bersabar kerana beberapa modul akan disusun dan mungkin mengambil masa beberapa minit. Pada mesin saya, penyusunan mengambil masa ~15 minit:
lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib
Membersihkan cache pemasangan:
lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*
Menguji modul dalam JupyterLab ^
Jika anda sedang berlari makmal jupyter, mulakan semula supaya modul yang baru dipasang diaktifkan. Untuk melakukan ini, dalam sesi konsol, klik CTRL+C
di mana anda menjalankannya dan masuk y
untuk menghentikan permintaan dan kemudian mulakan semula makmal jupyter dengan menekan anak panah ke atas pada papan kekunci supaya tidak memasukkan arahan lagi dan kemudian Enter
untuk memulakannya:
jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs
Pergi ke halaman http://10.0.5.5:8888/lab atau muat semula halaman dalam penyemak imbas anda, dan kemudian masukkan kod berikut dalam sel buku nota baharu:
%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
Anda sepatutnya mendapat keputusan seperti dalam gambar di bawah, di mana IPyWidgets menjana elemen UI pada halaman yang berinteraksi secara interaktif dengan kod sumber, dan juga Matplotlib memaparkan hasil kod dalam bentuk gambar sebagai graf fungsi:
Banyak contoh IPyWidgets anda boleh menemuinya dalam tutorial di sini
Apa lagi? ^
Syabas jika anda kekal dan sampai ke penghujung artikel. Saya sengaja tidak menyiarkan skrip siap pada akhir artikel yang akan dipasang makmal jupyter dalam "satu klik" untuk menggalakkan pekerja :) Tetapi anda boleh melakukannya sendiri, kerana anda sudah tahu caranya, setelah mengumpulkan arahan ke dalam satu skrip Bash :)
Anda juga boleh:
- Tetapkan nama rangkaian untuk bekas dan bukannya alamat IP dengan menulisnya dalam yang ringkas
/etc/hosts
dan taip alamat dalam penyemak imbas http://jupyter.local:8888 - Main-main dengan had sumber untuk bekas, untuk ini baca bab dalam keupayaan asas LXD atau dapatkan maklumat lanjut di tapak pembangun LXD.
- Tukar tema:
Dan banyak lagi yang boleh anda lakukan! Itu sahaja. Semoga anda berjaya!
KEMASKINI: 15.04.2020/18/30 XNUMX:XNUMX - Ralat diperbetulkan dalam bab βHello, World!β
KEMASKINI: 16.04.2020/10/00 XNUMX:XNUMX β Membetulkan dan menambah teks dalam perihalan pengaktifan pengurus sambungan makmal jupyter
KEMASKINI: 16.04.2020/10/40 XNUMX:XNUMX β Membetulkan ralat yang ditemui dalam teks dan diubah sedikit untuk lebih baik bab "Memasang perisian asas dan menyediakan sistem"
Sumber: www.habr.com