The -v
flag in Docker is used to specify a volume to mount into a Docker container. A volume in Docker is a way to share data between a container and the host machine, or between containers. This allows you to persist data, share files, or communicate between containers.
The basic syntax for using the -v
flag is:
docker run -v <host_path>:<container_path> ...
<host_path>
is the path to the directory or file on the host machine that you want to make available inside the container.<container_path>
is the path inside the container where you want to mount the volume.
Here’s an example:
Let’s say you have a simple Node.js application in a directory on your host machine, and you want to run it in a Docker container. You can use the -v
flag to mount your local directory into the container, so any changes you make on your host will be reflected in the container, and vice versa.
docker run -v /path/to/your/app:/app my-node-app
In this example:
/path/to/your/app
is the path on your host machine where your Node.js application code resides./app
is the path inside the container where you want to mount the volume.my-node-app
is the name of the Docker image you want to run.
Now, any changes you make to the code in /path/to/your/app
on your host machine will be immediately visible inside the running Docker container at /app
. This is useful for development and debugging purposes.
You can also use named volumes for more advanced use cases and data persistence in Docker. The -v
flag is a powerful feature that enables data sharing and persistence between containers and the host.