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 …

  • How to manage/rotate/delete mesos logs
  • How to persist data using postgres docker image?
  • docker Mule-server curl: (56) Recv failure: Connection reset by peer
  • Proxy Error in nova docker installation
  • Run Docker PHP-apache: Forbidden You don't have permission to access / on this server
  • how to configure docker to use apache and php in separate containers

    And there is no way to change the password. The only way is to create or update the config file 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  6cbc8d829e4a:/.jupyter/

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

  • Exposing Docker application to host
  • Run multiple services inside one docker container [closed]
  • What is the special gitlab-ci-token user?
  • Testing multiple docker images with RSpec
  • CoreOS Fleet, link redundant Docker container
  • Kubernetes on Fedora 21 Pod Stays Pending
  • 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 /.jupyter/
    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.