How it works

How it works

The JupyterHub app is run as a container (like any other DANIAN App). The hub app manages user login and creates a separate container for each user's notebooks. The notebook container is created from the c.DockerSpawner.image setting (see the other FAQ in this section on how to customize this). Each notebook container is run with a configurable memory limit based on c.Spawner.mem_limit. The advantage of this approach is that you can control how much compute/memory is allocated to each user and a notebook cannot bring down the whole server.

If you change the notebook image or any configuration, the notebook containers have to be "recreated". To help with this, the /app/code/remove_notebook_containers.py script can be run. Note that this only removes the containers but not the data of user's notebooks itself.