| See the CUDA-enabled JupyterLab Python docker stack for GPU accelerated docker images. |
|---|
Multi-arch (linux/amd64, linux/arm64/v8) docker images:
Images considered stable for Python versions ≥ 3.10.5.
🔬 Check out jupyterlab/python/scipy at https://demo.jupyter.b-data.ch.
Build chain
base → scipy
Features
- JupyterLab: A web-based interactive development environment for Jupyter
notebooks, code, and data. The images include
- code-server: VS Code in the browser without MS branding/telemetry/licensing.
- Git: A distributed version-control system for tracking changes in source code.
- Git LFS: A Git extension for versioning large files.
- Pandoc: A universal markup converter.
- Python: An interpreted, object-oriented, high-level programming language with dynamic semantics.
- Quarto: A scientific and technical publishing system built on Pandoc.
ℹ️ scipy image, amd64 only - TinyTeX: A lightweight, cross-platform, portable, and easy-to-maintain
LaTeX distribution based on TeX Live.
ℹ️ scipy image - Zsh: A shell designed for interactive use, although it is also a powerful scripting language.
👉 See the Version Matrix for detailed information.
The following extensions are pre-installed for code-server:
- .gitignore Generator
- Git Graph
- GitLab Workflow
- GitLens — Git supercharged
- Excel Viewer
- Jupyter
- LaTeX Workshop
ℹ️ scipy image - Path Intellisense
- Project Manager
- Python
- Quarto
ℹ️ scipy image, amd64 only - YAML
Subtags
{PYTHON_VERSION,latest}-root: Container runs asroot{PYTHON_VERSION,latest}-devtools: Includes the requirements according to{PYTHON_VERSION,latest}-devtools-root: The combination of both{PYTHON_VERSION,latest}-docker: Includesdocker-ce-clidocker-buildx-plugindocker-compose-plugindocker-scan-plugin
{PYTHON_VERSION,latest}-docker-root: The combination of both{PYTHON_VERSION,latest}-devtools-docker: The combination of both{PYTHON_VERSION,latest}-devtools-docker-root: The combination of all three
This projects requires an installation of docker.
To install docker, follow the instructions for your platform:
- Install Docker Engine | Docker Documentation > Supported platforms
- Post-installation steps for Linux
latest:
cd base && docker build \
--build-arg PYTHON_VERSION=3.11.3 \
-t jupyterlab/python/base \
-f latest.Dockerfile .version:
cd base && docker build \
-t jupyterlab/python/base:MAJOR.MINOR.PATCH \
-f MAJOR.MINOR.PATCH.Dockerfile .For MAJOR.MINOR.PATCH ≥ 3.10.5.
Create an empty directory:
mkdir jupyterlab-jovyan
sudo chown 1000:100 jupyterlab-jovyanIt will be bind mounted as the JupyterLab user's home directory and automatically populated on first run.
| ❗ Always mount the user's entire home directory. Mounting a subfolder prevents the container from starting.1 |
|---|
self built:
docker run -it --rm \
-p 8888:8888 \
-u root \
-v "${PWD}/jupyterlab-jovyan":/home/jovyan \
-e NB_UID=$(id -u) \
-e NB_GID=$(id -g) \
-e CHOWN_HOME=yes \
-e CHOWN_HOME_OPTS='-R' \
jupyterlab/python/base[:MAJOR.MINOR.PATCH]from the project's GitLab Container Registries:
docker run -it --rm \
-p 8888:8888 \
-u root \
-v "${PWD}/jupyterlab-jovyan":/home/jovyan \
-e NB_UID=$(id -u) \
-e NB_GID=$(id -g) \
-e CHOWN_HOME=yes \
-e CHOWN_HOME_OPTS='-R' \
IMAGE[:MAJOR[.MINOR[.PATCH]]]IMAGE being one of
The use of the -v flag in the command mounts the empty directory on the host
(${PWD}/jupyterlab-jovyan in the command) as /home/jovyan in the container.
-e NB_UID=$(id -u) -e NB_GID=$(id -g) instructs the startup script to switch
the user ID and the primary group ID of ${NB_USER} to the user and group ID of
the one executing the command.
-e CHOWN_HOME=yes -e CHOWN_HOME_OPTS='-R' instructs the startup script to
recursively change the ${NB_USER} home directory owner and group to the
current value of ${NB_UID} and ${NB_GID}.
ℹ️ This is only required for the first run.
The server logs appear in the terminal.
Using Docker Desktop
sudo chown 1000:100 jupyterlab-jovyan might not be required. Also
docker run -it --rm \
-p 8888:8888 \
-v "${PWD}/jupyterlab-jovyan":/home/jovyan \
IMAGE[:MAJOR[.MINOR[.PATCH]]]might be sufficient.
What makes this project different:
- Multi-arch:
linux/amd64,linux/arm64/v8 - Base image: Debian instead of Ubuntu
- IDE: code-server next to JupyterLab
- Just Python – no Conda / Mamba
PRs accepted.
This project follows the Contributor Covenant Code of Conduct.
MIT © 2022 b-data GmbH
Footnotes
-
The only exception is the use case described at Jupyter Docker Stacks > Quick Start > Example 2. ↩