How to Use the “Other” Image Option in JupyterHub
The “Other” image option in JupyterHub lets you run a custom computing environment, including your preferred libraries, packages, and tools by using a Docker image hosted on a public registry.
Prerequisites: Make Your Image JupyterHub-Compatible¶
To work with Nautilus JupyterHub (which uses DockerSpawner), your image must:
Use Python 3.12+
Include the
notebookpackageMatch the JupyterHub version (e.g., 4.x for Nautilus)
Either:
Include a
CMDthat runsjupyterhub-singleuser, orLet DockerSpawner override the command at runtime
Example: Building a Custom Image Based on Jupyter’s Base¶
You can start from a trusted Jupyter base image like scipy-notebook, and layer your own libraries on top.
Example Dockerfile:
FROM quay.io/jupyter/scipy-notebook:2023-10-23
ARG JUPYTERHUB_VERSION=4.3.5
RUN pip3 install --no-cache \
jupyterhub==$JUPYTERHUB_VERSIONThis base image already includes a working entrypoint that launches the notebook server.
Build and Push Your Image¶
Follow the official Docker guide to push your image to a registry like Docker Hub.
1. Login to your registry
$ docker login2. Build and tag your image
$ docker build -t jhub-student:1.0 .3. Push to Docker Hub
$ docker push jhub-student:1.04. Verify (optional)
$ docker pull docker.io/yourusername/jhub-student:1.0Supported Docker Image URL Formats¶
You’ll need to paste your image’s full URL into the “Other” image field in the JupyterHub Server Options.
Here are valid formats:
jhub-studentjhub-student:1.0docker.io/yourusername/jhub-student:1.0ghcr.io/yourorg/jhub-custom:latest
Create a Server with a Custom Image¶
Go to the Create Server page
Adjust any hardware resources (CPUs, RAM, GPUs) as needed
Click the dropdown under “Notebook Container Image”

Select “Other” from the list

Paste your Docker image URL (e.g.,
docker.io/yourusername/jhub-student:1.0)Click “Start Server”

Your custom environment will launch in JupyterHub using the Docker image you provided.