How does version pinning work for jupyter docker stacks images

I have a question on whether I correctly understand how version pinning works for upyter docker stacks images.

The jupyter-docker-stacks docs state that:

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).

When I refer to jupyter/scipy-notebook:7c45ec67c8e7, this uses minimal-notebook as a base image (ARG BASE_CONTAINER=jupyter/minimal-notebook). Will the version pinning of scipy-notebook pin the versions of all bases as well? I’d assume so, asking to be sure.

So I assume that when I use jupyter/scipy-notebook:7c45ec67c8e7 as a base, that will work – but not if one downloads the Dockerfile from that github commit and tries to build the image again. Because the Dockerfile does not specify the BASE’s SHA.

My questions was triggered by a discussion on whether you should or whether you * have to* specify the SHA of a Docker image for when using it as a build specification for Binder.

1 Like