Maintaining Files Between Builds

Docker will overwrite files inside the container between builds and resources like databases and cache files may be overwritten. To work around this, it can be useful to create mount points that will reference volumes on the host server (or another server).

docker run --mount type=bind,src=/home/docker,target=/app/database -dp 5000:5000 fnv

Run

Not ideal because it resets whenever you start the container. Need a better way:

sudo docker run -it -p 8888:8888 jupyter/pyspark-notebook jupyter notebook --no-browser --allow-root --ip=0.0.0.0

Then access it from a browser:

http://docker1.bpopp.net:8888

You'll need the token from the docker terminal the first time accessing the notebook.

Get Shell to Container

Get a list of running containers and find the id for your specific container:

[bpopp@p1 pubs]$ sudo docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
e0fd0ef0e5c0        jupyter/all-spark-notebook   "tini -g -- jupyter …"   22 hours ago        Up 22 hours         0.0.0.0:8888->8888/tcp   kind_sanderson

Launch a shell

sudo docker exec -it e0fd0ef0e5c0 /bin/bash

Or as root

sudo docker exec -u root -it e0fd0ef0e5c0 /bin/bash

To install something

 pip install plotnine --proxy http://myproxy.somewhere.com:3128