Adding config file in docker run command

This docker command works as expected:

docker run -i -t -p 7778:8888 continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"

It starts miniconda with python 3 version installed. The problem is that it generates a random password to access jupyter when I go to …

  • Loopback handle connection issues (and startup crashes)
  • How can I run `gcloud preview app setup-managed-vms` without this error?
  • Local development with docker - do I need 2 Dockerfiles?
  • Docker web terminal
  • Limit number of processes started inside docker container
  • How to test HTML pages served by docker with Windows vitrualbox guest?
  • http://somesite.com:7778

    And there is no way to change the password. The only way is to create or update the config file jupyter_notebook_config.py found in home directory (sub-folder: ~/.jupyter)
    How do I save this file on host and mount it using -v parameter?

    I can do this manually if I follow these 3 steps:

    1) Login to ipython docker container

    docker exec -it 6cbc bash
    

    2) Run the following command…

    jupyter notebook --generate-config
    

    3) Copy the config file to the container using a command something like this…

    docker cp ipython_kernel_config.py  6cbc8d829e4a:/.jupyter/jupyter_notebook_config.py
    

    I am looking for a way to merge these 3 steps into the docker run command.

  • Rancher Performance (Docker in Docker?)
  • openerp-server: error: no such option: -p
  • “java.net.NoRouteToHostException: No route to host” between two Docker Containers
  • Can I run windows containers using docker-toolbox on windows 7?
  • /home/web/.gem/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:152:in `getaddrinfo': getaddrinfo: Name or service not known (SocketError)
  • Docker volume access from host
  • One Solution collect form web for “Adding config file in docker run command”

    Have you tried adding a volume mount to the run command?

    Something like this.

    docker run -i -t -v /tmp/.jupyter:/.jupyter/ -p 7778:8888 continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"
    

    This assumes you have a /tmp/.jupyter directory, and feel free to change to something else.

    Also, this is a messy command, any reason why you don’t create your own image using a Dockerfile? Here is a rough example, haven’t tested so probably some typos and syntax errors, you but get the idea.

    FROM continuumio/miniconda3
    RUN /opt/conda/bin/conda install jupyter -y --quiet
    RUN mkdir /opt/notebooks
    # COPY in your custom config 
    COPY ipython_kernel_config.py /.jupyter/jupyter_notebook_config.py
    EXPOSE 8888
    # RUN the notebook
    CMD ["/opt/conda/bin/jupyter", "notebook", "--notebook-dir=/opt/notebooks", "--ip='*'", "--port=8888", "--no-browser", "--allow-root"]
    

    To build and run you would do something like this.

    docker build -t myminiconda3 .
    docker run -it -p 7778:8888 myminiconda3
    

    you can even mount in your local files if you want.

    docker run -it -v `pwd`:/mycode -p 7778:8888 myminiconda3
    

    And even run as a daemon

    docker run -d -v `pwd`:/mycode -p 7778:8888 myminiconda3
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.