Selecting an Image

Using one of the Jupyter Docker Stacks requires two choices:

  1. Which Docker image you wish to use
  2. How you wish to start Docker containers from that image

This section provides details about the first.

Core Stacks

The Jupyter team maintains a set of Docker image definitions in the https://github.com/jupyter/docker-stacks GitHub repository. The following sections describe these images including their contents, relationships, and versioning strategy.

jupyter/base-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/base-notebook is a small image supporting the options common across all core stacks. It is the basis for all other stacks.

  • Minimally-functional Jupyter Notebook server (e.g., no pandoc for saving notebooks as PDFs)
  • Miniconda Python 3.x in /opt/conda
  • No preinstalled scientific computing packages
  • Unprivileged user jovyan (uid=1000, configurable, see options) in group users (gid=100) with ownership over the /home/jovyan and /opt/conda paths
  • tini as the container entrypoint and a start-notebook.sh script as the default command
  • A start-singleuser.sh script useful for launching containers in JupyterHub
  • A start.sh script useful for running alternative commands in the container (e.g. ipython, jupyter kernelgateway, jupyter lab)
  • Options for a self-signed HTTPS certificate and passwordless sudo

jupyter/minimal-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/minimal-notebook adds command line tools useful when working in Jupyter applications.

jupyter/r-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/r-notebook includes popular packages from the R ecosystem.

jupyter/scipy-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/scipy-notebook includes popular packages from the scientific Python ecosystem.

jupyter/tensorflow-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/tensorflow-notebook includes popular Python deep learning libraries.

  • Everything in jupyter/scipy-notebook and its ancestor images
  • tensorflow and keras machine learning libraries

jupyter/datascience-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/datascience-notebook includes libraries for data analysis from the Julia, Python, and R communities.

  • Everything in the jupyter/scipy-notebook and jupyter/r-notebook images, and their ancestor images
  • The Julia compiler and base environment
  • IJulia to support Julia code in Jupyter notebooks
  • HDF5, Gadfly, and RDatasets packages

jupyter/pyspark-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/pyspark-notebook includes Python support for Apache Spark, optionally on Mesos.

  • Everything in jupyter/scipy-notebook and its ancestor images
  • Apache Spark with Hadoop binaries
  • Mesos client libraries

jupyter/all-spark-notebook

Source on GitHub | Dockerfile commit history | Docker Hub image tags

jupyter/all-spark-notebook includes Python, R, and Scala support for Apache Spark, optionally on Mesos.

Image Relationships

The following diagram depicts the build dependency tree of the core images. (i.e., the FROM statements in their Dockerfiles). Any given image inherits the complete content of all ancestor images pointing to it.

Image inheritance diagram

Builds

Pull requests to the jupyter/docker-stacks repository trigger builds of all images on Travis CI. These images are for testing purposes only and are not saved for use. When pull requests merge to master, all images rebuild on Docker Cloud and become available to docker pull from Docker Hub.

Versioning

The latest tag in each Docker Hub repository tracks the master branch HEAD reference on GitHub. latest is a moving target, by definition, and will have backward-incompatible changes regularly.

Every image on Docker Hub also receives a 12-character tag which corresponds with the git commit SHA that triggered the image build. You can inspect the state of the jupyter/docker-stacks repository for that commit to review the definition of the image (e.g., images with tag 7c45ec67c8e7 were built from https://github.com/jupyter/docker-stacks/tree/7c45ec67c8e7).

You must refer to git-SHA image tags when stability and reproducibility are important in your work. (e.g. FROM jupyter/scipy-notebook:7c45ec67c8e7, docker run -it --rm jupyter/scipy-notebook:7c45ec67c8e7). You should only use latest when a one-off container instance is acceptable (e.g., you want to briefly try a new library in a notebook).

Community Stacks

The core stacks are just a tiny sample of what’s possible when combining Jupyter with other technologies. We encourage members of the Jupyter community to create their own stacks based on the core images and link them below.

Nothing here yet! You can be the first!

See the contributing guide for information about how to create your own Jupyter Docker Stack.