JupyterLab via Docker
JupyterLab
Python-Skripte bequem ausprobieren in einer netten Weboberfläche - das geht ganz nett mit JupyterLab.
Python macht allerdings nicht die beste Figur, wenn man Pakete global installiert, auch wollte ich nicht alles per Hand installieren. Also mal Docker ausprobiert. Nettes Konzept: Man kann ganz schnell was komplexes nutzen ohne es zu "installieren", aber wenn man dann einen solchen Container einfach nur beendet, ist normalerweise alles auch wieder weg, was man dann im Container gemacht hat. Das ist erstmal die Idee von Docker, immer alles ganz frisch. Möchte man das Sachen auch erhalten bleiben, in diesem Fall die Jupyter Notebooks (und einige Einstellungen), muss man etwas in die Tiefe gehen und geziehlt Verzeichnisse im Container auf lokale Verzeichnisse mappen. Ich lege das dabei gleich in einen Ordner, der mit meiner privaten Seafile-Cloud verbunden ist.
Jupyter Geschmacksrichtungen fertig für Docker
Ne ganze Menge kann man sich zum Python in der Jupyter-Umgebung hinzufügen, wenn man viele Toolkits nutzen möchte. Man kann alles einzeln installieren oder einfach einen großen Container nehmen, wo schon vieles drin ist - unter diesen Jupyter Docker Stacks kann man sich was raussuchen - ich hab mich für jupyter/datascience-notebook entschieden und den Tag "latest" angegeben - vermutlich kriege ich dann immer die neuste Version. Wenn man das nicht will, kann man statt "...:latest" einen fixen Tag wie z.B. "quay.io/jupyter/datascience-notebook:2025-05-19" angeben.
Startskript machen für unixoide Betriebssysteme (Linux, MacOs)
Damit ich die Sache möglichst einfach ans laufen bekomme, und auch noch nach einiger Zeit Docker-Abstinenz, habe ich mir dieses Start-Skript basteln lassen: Kopiert das, passt im Editor das Verzeichnis an wo die Notebooks lokal gespeichert werden, wählt ggf noch Port und Geschmacksrichtung aus, dann abspeichern. Ein "chmod +x start_jupyter.sh" macht es ausführbar. Docker an sich sollte installiert sein (ich hab einfach Docker Desktop installiert), alles was für Jupyter benötigt wird, wird automatisch beim ersten Start dieses Skriptes heruntergeladen. Beim Start lasse ich mir automatisch den Browser öffnen (hab hier Firefox gewählt, könnt ihr unten im Skript ändern) mit dem Link zum Jupyter-Notebook.
Zum runterfahren beende ich Jupyter im Browser via File - Shutdown.
Hier das Skript:
#!/bin/bash # === Konfiguration === # Hier den gewünschten Host-Pfad eintragen (z.B. /Users/deinname/jupyterlab) HOST_DIR="/Users/xxx/Seafile/zeugs/Docker/jupy_datascience" PORT=8888 IMAGE="quay.io/jupyter/datascience-notebook:latest" # === Verzeichnisse anlegen, falls sie nicht existieren === mkdir -p "$HOST_DIR/work" mkdir -p "$HOST_DIR/jupyter_config" mkdir -p "$HOST_DIR/jupyter_data" # === Docker-Container starten (im Hintergrund) === CONTAINER_ID=$(docker run -d \ -p $PORT:8888 \ -v "$HOST_DIR/work":/home/jovyan/work \ -v "$HOST_DIR/jupyter_config":/home/jovyan/.jupyter \ -v "$HOST_DIR/jupyter_data":/home/jovyan/.local/share/jupyter \ $IMAGE ) echo "Container gestartet mit ID: $CONTAINER_ID" echo "Warte auf JupyterLab-URL..." # === Warten, bis die Jupyter-URL im Container-Log erscheint === for i in {1..30} do # Suche nach der URL mit Token im Log URL=$(docker logs $CONTAINER_ID 2>&1 | grep -o "http://127.0.0.1:8888[^ ]*token=[a-z0-9A-Z\-]*" | head -n 1) if [ ! -z "$URL" ]; then # Ersetze 127.0.0.1:8888 durch localhost:$PORT für den Zugriff vom Host OPEN_URL=$(echo "$URL" | sed "s|127.0.0.1:8888|localhost:$PORT|") echo "Öffne JupyterLab: $OPEN_URL" #open -a "Google Chrome" "$OPEN_URL" open -a "Firefox" "$OPEN_URL" exit 0 fi sleep 2 done echo "Konnte die JupyterLab-URL nicht finden. Bitte prüfe die Container-Logs mit:" echo "docker logs $CONTAINER_ID" exit 1