-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/appis the path on your host machine where your Node.js application code resides.
/appis the path inside the container where you want to mount the volume.
my-node-appis 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.