See the CUDA-enabled JupyterLab Julia docker stack for GPU accelerated docker images. |
---|
Multi-arch (linux/amd64
, linux/arm64/v8
) docker images:
glcr.b-data.ch/jupyterlab/julia/base
glcr.b-data.ch/jupyterlab/julia/ver
(1.5.4 ≤ version < 1.7.3)
glcr.b-data.ch/jupyterlab/julia/pubtools
Images considered stable for Julia versions ≥ 1.7.3.
👉 The current state may eventually be backported to versions ≥
1.5.4.
🔬 Check out jupyterlab/julia/pubtools
at https://demo.jupyter.b-data.ch.
Build chain
base → pubtools
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.
- Julia: A high-level, high-performance dynamic language for technical computing.
- 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.
ℹ️ pubtools image - TinyTeX: A lightweight, cross-platform, portable, and easy-to-maintain
LaTeX distribution based on TeX Live.
ℹ️ pubtools 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
- Julia
- Jupyter
- LaTeX Workshop
ℹ️ pubtools image - Path Intellisense
- Project Manager
- Python
- Quarto
ℹ️ pubtools image - YAML
Subtags
{JULIA_VERSION,latest}-root
: Container runs asroot
{JULIA_VERSION,latest}-devtools
: Includes the requirements according to{JULIA_VERSION,latest}-devtools-root
: The combination of both{JULIA_VERSION,latest}-docker
: Includesdocker-ce-cli
docker-buildx-plugin
docker-compose-plugin
docker-scan-plugin
{JULIA_VERSION,latest}-docker-root
: The combination of both{JULIA_VERSION,latest}-devtools-docker
: The combination of both{JULIA_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 JULIA_VERSION=1.8.5 \
-t jupyterlab/julia/base \
-f latest.Dockerfile .
version:
cd base && docker build \
-t jupyterlab/julia/base:MAJOR.MINOR.PATCH \
-f MAJOR.MINOR.PATCH.Dockerfile .
For MAJOR.MINOR.PATCH
≥ 1.7.3
.
Create an empty directory using docker:
docker run --rm \
-v "${PWD}/jupyterlab-jovyan":/dummy \
alpine chown 1000:100 /dummy
It 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/julia/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
Creating a home directory 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
ℹ️ Since Julia v1.5.4 (2021-03-11) - Base image: Debian instead of Ubuntu
- IDE: code-server next to JupyterLab
- Just Python – no Conda / Mamba
See Notes for tweaks, settings, etc.
PRs accepted.
This project follows the Contributor Covenant Code of Conduct.
MIT © 2020 b-data GmbH
Footnotes
-
The only exception is the use case described at Jupyter Docker Stacks > Quick Start > Example 2. ↩