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

 
 
 

Languages

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