In Docker, Volumes are a mechanism used to store data generated by the container, this mechanism can help you restore your data in case of a container failure or unwanted shut down of the container.
The way they work is by specifying a path on the host where the container can persist its data and there are different ways to mount a volume

1 - Using Docker run


        docker run -v path_host:/path_container image-name
    

Example :


        docker run -v ~/backup:/var/www/html my_app
    

2 - Using Docker compose
In the docker-compose.yml file, a typical volume setup might look like this:


        mysql:
          image: mysql:5.7
          container_name: mysql
          ports:
            - 3306:3306
          volumes:
            - "./backup/mysql:/var/lib/mysql/"
    

In this example, we create a MySQL container with a volume to back up the database.
Notice the colon : That separates two paths.
- The left side of the colon represents your local folder as a relative path.
- The right side represents a folder in your Docker container.