Dieser Artikel beschreibt das Vorgehen, wie man sein eigenes Jupyter Notebook mit eigenen Abhängigkeiten bauen kann.
Des Weiteren wird auch ein lokales Verzeichnis zur Datenhaltung eingebunden.
admin@docker# mkdir -p ~/docker/jupyter
admin@docker# mkdir -p ~/docker/jupyter/data admin@docker# cd ~/docker/jupyter
admin@docker# vi Dockerfile
FROM python:latest WORKDIR /data RUN --mount=type=bind,source=requirements.txt,target=/tmp/requirements.txt \ pip install --no-cache-dir -r /tmp/requirements.txt EXPOSE 8888 ENV NAME="Jupyter World" CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
admin@docker# vi requirements.txt
jupyter numpy scipy
admin@docker# sudo docker build -t notebook:v0.1 .
admin@docker# sudo docker images | grep notebook notebook v0.1 7dbd372643f5 2 hours ago 1.48GB
admin@docker# sudo docker run --name notebook -v ./data:/data -p 8888:8888 notebook:v0.1
admin@docker# sudo docker ps -f name=notebook CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80a988b80262 notebook:v0.1 "jupyter notebook --…" 37 minutes ago Up 37 minutes 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp notebook
http://127.0.0.1:8888/tree?token=302f35ec799a314d946d529f87aec87b0ff224c71e3e9c4b
Sollte dieses Setup nicht auf dem lokalen Rechner ausgeführt worden sein, muss die URL entsprechend angepasst werden,
e.g: http://raspi64-04:8888/tree?token=302f35ec799a314d946d529f87aec87b0ff224c71e3e9c4b
admin@docker# sudo docker exec -it notebook /bin/bash root@80a988b80262:/data# jupyter notebook password Enter password: Verify password: [JupyterPasswordApp] Wrote hashed password to /root/.jupyter/jupyter_server_config.json
admin@docker# sudo docker cp notebook:/root/.jupyter/jupyter_server_config.json . Successfully copied 2.05kB to /home/stefan/docker/jupyter/.
admin@docker# ll drwxr-xr-x 2 admin admin 4096 18. Mär 17:06 data -rw-r--r-- 1 admin admin 302 18. Mär 17:07 Dockerfile -rw------- 1 admin admin 162 18. Mär 17:52 jupyter_server_config.json -rw-r--r-- 1 admin admin 21 18. Mär 17:08 requirements.txt
FROM python:latest WORKDIR /data RUN --mount=type=bind,source=requirements.txt,target=/tmp/requirements.txt \ pip install --no-cache-dir -r /tmp/requirements.txt ### DIESE ZEILE EINFÜGEN ### COPY jupyter_server_config.json /root/.jupyter/ EXPOSE 8888 ENV NAME="Jupyter World" CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
admin@docker# sudo docker stop notebook admin@docker# sudo docker rm notebook
admin@docker# sudo docker build -t notebook:v0.2 .
admin@docker# sudo docker run --name notebook -v ./data:/data -p 8888:8888 notebook:v0.2
Auch hier gilt wieder, dass die URL evtl. angepasst werden muss