https://docs.docker.com/engine/tutorials/dockervolumes/
Data volumes are designed to persist data, independent of the container’s life cycle. Docker therefore never automatically delete volumes when you remove a container, nor will it “garbage collect” volumes that are no longer referenced by a container. A Docker data volume persists after a container is deleted.
Volumes types:
/var/lib/docker/volumes for storage/var/lib/docker/volumesMove volume between discs:
rsync -aqxP jenkins1_jenkins_homeSNAP/ /mnt/NVMe/@jenkins1_jenkins_home
Sometimes 3rd party script or compose depends on named volumes, but we want to put particular named volume on different (faster) drive.
from cmdline:
docker volume create -d local -o type=none -o o=bind -o device=/mnt/ssd/pgsql pgsql-data
od compose file:
volumes: pgsql-data: driver: local driver_opts: type: none o: bind device: /mnt/ssd/pgsql
https://github.com/anybox/buttervolume
Volume destination inside container must be a absolute path.
Run shell with mounted volume from another docker:
docker run --rm -i --volumes-from dbdata busybox ash
docker run --rm -i --volumes-from dbdata debian:jessie-slim /bin/bash
Single file can be mounted as volume:
docker run --rm -it -v ~/.bash_history:/root/.bash_history debian:jessie-slim bash /bin/bash
Create named volume and share it between multiple containers:
docker run -d -P -v my-named-volume:/opt --name test1 debian:jessie-slim bash docker run -d -P -v my-named-volume:/opt --name test2 debian:jessie-slim bash docker run -d -P -v my-named-volume:/opt --name test3 debian:jessie-slim bash
To protect data from being deleted with volume use local-persist plugin: https://github.com/CWSpear/local-persist
Find orphaned volumes
docker volume ls -f dangling=true docker volume rm <volume name>
Transfer volume to another host https://www.guidodiepen.nl/2016/05/transfer-docker-data-volume-to-another-host/
https://github.com/gdiepen/docker-convenience-scripts/blob/master/docker_get_data_volume_info.sh