dockerdockerfile

Docker Error: Jupyter Notebook container is not running after successful build


I have the following Dockerfile:

# set the base image
FROM ubuntu:latest

# set python image
FROM python:3

# run update and setup functions
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y build-essential python-dev-is-python3
RUN apt-get install -y python-is-python3 2to3
RUN pip install pip --upgrade

# run jupyter install
RUN pip install jupyter

# set the working directory
WORKDIR /home/jupyter

# add python libraries
ADD requirements.txt /home/jupyter/

# make notebooks directory
RUN mkdir /home/jupyter/notebooks

# run the requirements.txt to pip install
RUN pip install -r requirements.txt

# run docker container with Jupyter Notebook
CMD ["jupyter", "notebook", "--allow-root", "--no-browser", "--ip 0.0.0.0", "--port 8888", "./notebooks"]

This Dockerfile builds just fine without errors:

PS C:\<local_path>\Docker> docker build --tag notebook .
[+] Building 292.3s (15/15) FINISHED                                                               docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 805B                                                                               0.0s
 => [internal] load metadata for docker.io/library/python:3                                                        0.2s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [stage-1  1/10] FROM docker.io/library/python:3@sha256:785fef11f44b7393c03d77032fd72e56af8b05442b051a15122914  0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 38B                                                                                   0.0s
 => CACHED [stage-1  2/10] RUN apt-get update && apt-get -y upgrade                                                0.0s
 => CACHED [stage-1  3/10] RUN apt-get install -y build-essential python-dev-is-python3                            0.0s
 => CACHED [stage-1  4/10] RUN apt-get install -y python-is-python3 2to3                                           0.0s
 => CACHED [stage-1  5/10] RUN pip install pip --upgrade                                                           0.0s
 => CACHED [stage-1  6/10] RUN pip install jupyter                                                                 0.0s
 => CACHED [stage-1  7/10] WORKDIR /home/jupyter                                                                   0.0s
 => CACHED [stage-1  8/10] ADD requirements.txt /home/jupyter/                                                     0.0s
 => CACHED [stage-1  9/10] RUN mkdir /home/jupyter/notebooks                                                       0.0s
 => [stage-1 10/10] RUN pip install -r requirements.txt                                                          271.3s
 => exporting to image                                                                                            20.7s
 => => exporting layers                                                                                           20.7s
 => => writing image sha256:3a4066929f1f16f0d66749dd13155526c280170e29284032bd6a64bd12f87267                       0.0s
 => => naming to docker.io/library/notebook                                                                        0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/h8u0s757guiu9enx1xqsjvj7k

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview

Then I run the following docker run -p 8888:8888 -v C:/<local_path>:/home/jupyter/notebooks notebook and receive the following error: [C 2024-10-04 02:09:02.474 ServerApp] No such file or directory: /home/jupyter/--ip 0.0.0.0

Am I missing something from my Dockerfile? Any help is appreciated as I feel like it's something simple that I'm missing.

I tried adding EXPOSE 8888 and still received the same error. I also tried using pipx and that failed to build the image in the first place. I reverted back to a Dockerfile (above) that was working a few weeks ago before I updated to Docker v4.34.2.


Solution

  • I took the advice above from David Maze and after a couple iterations this Dockerfile executes as intended:

    # set the base image
    FROM ubuntu:latest
    
    # set python image
    FROM python:3
    
    # run update and setup functions
    RUN apt-get update && apt-get -y upgrade
    RUN apt-get install -y build-essential python-dev-is-python3
    RUN apt-get install -y python-is-python3 2to3
    RUN pip install pip --upgrade
    
    # run jupyter install
    RUN pip install jupyter
    
    # set the working directory
    WORKDIR /home/jupyter
    
    # add python libraries
    ADD requirements.txt /home/jupyter/
    
    # make notebooks directory
    RUN mkdir /home/jupyter/notebooks
    
    # run the requirements.txt to pip install
    RUN pip install -r requirements.txt
    
    # run docker container with Jupyter Notebook
    CMD ["jupyter", "notebook", "--allow-root", "--no-browser", "--ip=0.0.0.0", "--port=8888", "./notebooks"]
    

    The change was --ip 0.0.0.0 to --ip=0.0.0.0 and --port 8888 to --port=8888