Octave în Docker#
Acest miniarticol vă va fi de folos pentru a configura corect platforma Docker pe care se vor lucra laboratoarele practice de Metode Numerice.
Laborator: Metode Numerice (2023-2024)
1. Crearea imaginii#
Vom crea o imagine scriindu-ne propriul Dockerfile. Pentru aceasta, vom crea un fișier numit chiar Dockerfile
în care vom trece următoarele reguli:
ARG BASE_CONTAINER=jupyter/minimal-notebook
FROM $BASE_CONTAINER
USER root
# Install octave
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -yq dist-upgrade \
&& apt-get install -yq --no-install-recommends \
octave \
&& apt update && apt install -yq gnuplot-qt \
fonts-freefont-otf ghostscript \
&& rm -rf /var/lib/apt/lists/*
USER $NB_UID
# Install extra packages
RUN conda install --quiet --yes \
'octave_kernel' && \
conda clean -tipy && \
fix-permissions $CONDA_DIR && \
fix-permissions /home/$NB_USER
USER $NB_UID
Pe scurt:
-
Pornim de la container-ul
jupyter/minimal-notebook
pentru a avea o instanță funcțională deJupyter
-
Instalăm
Octave
și uneltele necesare pentru a putea crea ploturi; -
Configurăm kernelul de
Octave
pentruJupyter
.
Comanda#
După ce a fost creat fișierul Dockerfile
într-un folder oarecare (să zicem că va avea calea /path/to/Dockerfile
), putem crea imaginea noastră rulând din terminal (echivalent, Command Prompt - cmd.exe
- pentru Windows):
docker build -t new-nm-octave /path/to/Dockerfile
Astfel, se va crea imaginea denumită new-nm-octave.
2. Crearea unui container#
După ce ați creat imaginea, o putem folosi pentru a crea containere după chipul și asemănarea sa. Astfel, vom rula:
docker run --name new-octave-container -p 8888:8888 new-nm-octave
Comanda poate fi înțeleasă astfel:
-
Se creează (
run
) un container denumit new-octave-container (--name
)... -
...pornind de la imaginea new-nm-octave...
-
...și se face port forwarding (
-p PORT_HOST:PORT_CONTAINER
) astfel încât să putem accesa portul 8888 (PORT_CONTAINER
) din afara containerului la adresa 8888 (PORT_HOST
).
Accesarea containerului#
Containerul poate fi acum pornit și oprit în orice moment folosind docker start new-octave-container
, respectiv docker stop new-octave-container
.
3. Accesarea 127.0.0.1:8888#
Teoretic, puteți în acest moment să accesați din browser 127.0.0.1:8888
, însă nu și practic. În realitate, Jupyter se folosește de token-uri unice pentru fiecare utilizator. Acest token apare în logul de pe ecran ce se formează atunci când vă creați containerul.
Dacă însă nu l-ați notat atunci, puteți folosi, pe Linux, următoarea comandă pentru a găsi adresa corectă pe care să o accesați:
docker logs new-octave-container 2>&1 >/dev/null | grep 'http://127.0.0.1:8888/lab?token' | tail -n1
Dacă folosiți un sistem de operare Windows, mutați-vă pe un sistem superior puteți să căutați manual în log, rulând simplu docker logs new-octave-container