instruction: Create a Dockerfile for fundamentals
output: ```dockerfile
  from the host to port 8888 on the container.start-notebook.py --NotebookApp.token='my-token': Sets an access token
  rather than using a random token.For more details, see the Jupyter Server Options and the
  docker run CLI reference.If this is the first time you are running the image, Docker will download and
  run it. The amount of time it takes to download the image will vary depending on
  your network connection.After the image downloads and runs, you can access the container. To access the
  container, in a web browser navigate to
  localhost:8889/lab?token=my-token.To stop the container, in the terminal press ctrl+c.To access an existing notebook on your system, you can use a
  bind mount. Open a terminal and
  change directory to where your existing notebook is. Then,
  run the following command based on your operating system.
  Mac / Linux
  
  Windows (Command Prompt)
  
  Windows (PowerShell)
  
  Windows (Git Bash)
  
  $ docker run --rm -p 8889:8888 -v "$(pwd):/home/jovyan/work" quay.io/jupyter/base-notebook start-notebook.py --NotebookApp.token='my-token'
  
  $ docker run --rm -p 8889:8888 -v "%cd%":/home/jovyan/work quay.io/jupyter/base-notebook start-notebook.py --NotebookApp.token='my-token'
  
  $ docker run --rm -p 8889:8888 -v "$(pwd):/home/jovyan/work" quay.io/jupyter/base-notebook start-notebook.py --NotebookApp.token='my-token'
  
  $ docker run --rm -p 8889:8888 -v "/$(pwd):/home/jovyan/work" quay.io/jupyter/base-notebook start-notebook.py --NotebookApp.token='my-token'
  The -v option tells Docker to mount your current working directory to
  /home/jovyan/work inside the container. By default, the Jupyter image's root
  directory is /home/jovyan and you can only access or save notebooks to that
  directory in the container.Now you can access localhost:8889/lab?token=my-token and open notebooks contained in the bind mounted directory.To stop the container, in the terminal press ctrl+c.Docker also has volumes, which are the preferred mechanism for persisting
  data generated by and used by Docker containers. While bind mounts are dependent
  on the directory structure and OS of the host machine, volumes are completely
  managed by Docker.Save and access notebooksWhen you remove a container, all data in that container is deleted. To save
  notebooks outside of the container, you can use a
  volume.Run a JupyterLab container with a volumeTo start the container with a volume, open a terminal and run the following command
  
  $ docker run --rm -p 8889:8888 -v jupyter-data:/home/jovyan/work quay.io/jupyter/base-notebook start-notebook.py --NotebookApp.token='my-token'
  The -v option tells Docker to create a volume named jupyter-data and mount it in the container at /home/jovyan/work.To access the container, in a web browser navigate to
  localhost:8889/lab?token=my-token.
  Notebooks can now be saved to the volume and will accessible even when
  the container is deleted.Save a notebook to the volumeFor this example, you'll use the Iris Dataset example
  ```