Skip to content

(GPU accelerated) Multi-arch (linux/amd64, linux/arm64/v8) docker images. Please submit Pull Requests to the GitLab repository. Mirror of

License

Notifications You must be signed in to change notification settings

empowerai/jupyterlab-python-docker-stack

 
 

Repository files navigation

minimal-readme compliant Project Status: Active – The project has reached a stable, usable state and is being actively developed. Donate using Liberapay

See the CUDA-enabled JupyterLab Python docker stack for GPU accelerated docker images.

JupyterLab Python docker stack

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:

Subtags

  • {PYTHON_VERSION,latest}-root: Container runs as root
  • {PYTHON_VERSION,latest}-devtools: Includes the requirements according to
  • {PYTHON_VERSION,latest}-devtools-root: The combination of both
  • {PYTHON_VERSION,latest}-docker: Includes
    • docker-ce-cli
    • docker-buildx-plugin
    • docker-compose-plugin
    • docker-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

Table of Contents

Prerequisites

This projects requires an installation of docker.

Install

To install docker, follow the instructions for your platform:

Usage

Build image (base)

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.PATCH3.10.5.

Create home directory

Create an empty directory:

mkdir jupyterlab-jovyan
sudo chown 1000:100 jupyterlab-jovyan

It will be bind mounted as the JupyterLab user's home directory and automatically populated on first run.

Run container

❗ 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.

Similar project

What makes this project different:

  1. Multi-arch: linux/amd64, linux/arm64/v8
  2. Base image: Debian instead of Ubuntu
  3. IDE: code-server next to JupyterLab
  4. Just Python – no Conda / Mamba

Contributing

PRs accepted.

This project follows the Contributor Covenant Code of Conduct.

License

MIT © 2022 b-data GmbH

Footnotes

  1. The only exception is the use case described at Jupyter Docker Stacks > Quick Start > Example 2.

About

(GPU accelerated) Multi-arch (linux/amd64, linux/arm64/v8) docker images. Please submit Pull Requests to the GitLab repository. Mirror of

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dockerfile 62.0%
  • Shell 35.4%
  • Python 1.9%
  • CSS 0.7%