VOLUME instruction creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers. The value can be a JSON array,
VOLUME ["/var/log/"], or a plain string with multiple arguments, such as
VOLUME /var/log or
VOLUME /var/log /var/db. For more information/examples and mounting instructions via the Docker client, refer to Share Directories via Volumes documentation.
docker run command initializes the newly created volume with any data that exists at the specified location within the base image. For example, consider the following Dockerfile snippet:
FROM ubuntu RUN mkdir /myvol RUN echo "hello world" > /myvol/greeting VOLUME /myvol
This Dockerfile results in an image that causes docker run, to create a new mount point at /myvol and copy the greeting file into the newly created volume.
Note: If any build steps change the data within the volume after it has been declared, those changes will be discarded.
Note: The list is parsed as a JSON array, which means that you must use double-quotes (“) around words not single-quotes (‘).