In this tutorial, How to use Docker volume command to details for Data volumes. There are three main use cases for Docker data volumes:
- Keep data around when a container is removed
- To share data between the host filesystem and the Docker container
- To share data with other Docker containers
Docker volume create
The syntax docker volume commands as below:
$ docker volume create [--option] NAME_VOLUME
Related docker volume command:
- docker volume create: Create a volume docker volume inspect: Display detailed information on one or more volumes
- docker volume ls: List volumes docker volume prune: Remove all unused volumes docker
- volume rm: Remove one or more volumes
How to create a new volume and configure the container
$ docker volume create DATA $ docker run -d -v DATA:/world centos ls /world
How to inspect container ID with docker inspect command
$ sudo docker inspect a04ae7b6cc17
For example, the output as below
"Mounts": [ { "Name": "0ed908df33e1790711933ad6b463fd2a88199802c5cf2b1beb5001b81bc27750", "Source": "/var/lib/docker/volumes/0ed908df33e1790711933ad6b463fd2a88199802c5cf2b1beb5001b81bc27750/_data", "Destination": "/var/www/html", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" },
To use docker inspect display Source and Destination for container ID
$ sudo docker inspect -f '{{ .Mounts}}' a04ae7b6cc17 | awk '{ print "Source:"$2 "\t " "Destination:"$3}'
The output below:
Source:/var/lib/docker/volumes/0ed908df33e1790711933ad6b463fd2a88199802c5cf2b1beb5001b81bc27750/_data Destination:/var/www/html
How to use docker volume ls to list all volume for container
$ sudo docker volume ls
The output as below
[sudo] password for huupv: DRIVER VOLUME NAME local 0ed908df33e1790711933ad6b463fd2a88199802c5cf2b1beb5001b81bc27750 local 1d4c9030aea8554335b281d554a27422773f067f77ead5663e9b52f85d64ff6f local 387a0f11796f6d6d254abbbdf523410a42ed004dc5879c59ae45f5c922038441 local 85621d725c9cee6444ab83162123000dd18bdd9a0a974a3cbe05b60d0175bc33 local bbaaa1ea0d348d1e66ae6f606396502d895db8f6f2cd6f1cc9ca34605da3cf3c local devopsroles local e1f8e62ec711164a363bbc9bc53a0868e093dc7e4983fb327fe5f77b4e48d965 local wordpress_db-data local wordpress_nginx-data local wordpress_php-data local wordpress_wp-data
How to use docker inspect exploit for container ID a04ae7b6cc17
$ sudo docker inspect -f '{{ (index .Mounts 0).Source }}' a04ae7b6cc17
The output Mounts source container ID a04ae7b6cc17
/var/lib/docker/volumes/0ed908df33e1790711933ad6b463fd2a88199802c5cf2b1beb5001b81bc27750/_data
Other dockers inspect command Mounts source container ID a04ae7b6cc17
$ sudo docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/www/html" }}{{ .Source }}{{ end }}{{ end }}' a04ae7b6cc17
How to create a Docker Volume Using a Dockerfile
$ vim Dockerfile
The content as below
# Create a volume VOLUME /dockerfilevolume
Next, build an image named dockerfile-volumetest from this Dockerfile with the command:
$ sudo docker build -t dockerfile-volumetest .
Then launch a container named “my-dockerfile-test” from this image with the command:
$ sudo docker run --name my-dockerfile-test -it dockerfile-volumetest /bin/bash
Detach from the container with Ctrl-p + Ctrl-q and return to the host machine’s command prompt.
Sharing Volumes Between Containers
Sharing a Volume on the Host
$ sudo mkdir /webdata $ sudo docker run -it --name webapp -v /webdata:/var/www/html nginx /bin/bash
Using a Container as a Shared Data Volume
$ sudo docker run -it -v /shared-data --name data-storage centos /bin/bash $ echo "Hello from the data-storage container." >> /shared-data/data-storage-hello.txt $ sudo docker run -it --name app --volumes-from data-storage python /bin/bash
Mounting a Volume as Read-Only
$ docker run -v /directory:/path:ro $ sudo docker volume create --name limited-access $ sudo docker run -it --name allowed-to-write -v limited-access:/data centos /bin/bash
Conclusion
Thought the article, help you to details for data volume. Docker volume command helps useful to determine for containers. The update about docker volume command later.