2

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

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.

1 Answer 1

5

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.