Is it possible to get different docker image for each user?

#1

I’m using dockerspawner in jupyterhub.
Is it possible to get different docker image for each user?

#2

Yes, if you customize DockerSpawner a bit. The image is self.image and the user is self.user, so you can e.g. try this in jupyterhub_config.py:

def image_for_user(user):
    "Given a user, return the right image"""
    if user.name == "me":
        return "jupyter/scipy-notebook:f646d2b2a3af"
    else:
        return "jupyter/base-notebook:f646d2b2a3af"

from dockerspawner import DockerSpawner

class MyDockerSpawner(DockerSpawner):
    def start(self):
        self.image = image_for_user(self.user)
        return super().start()

c.JupyterHub.spawner_class = MyDockerSpawner

where you put your logic for finding images in image_for_user(). You might want to make it an async method, depending on how you look up this info.

2 Likes
#3

Thank you.
You’ve been a great help!