Photo by Eric Er on Unsplash

On this page

Containers have a “scratch space” that allows you to store files only temporarily, meaning as long as the container is running. But once the container stopped the data is gone.

Volumes are a way to persist information even after a container got destroyed. A volume is a special type of directory in a container (a mount or alias) which maps back to a folder on the host. That can be done in one of two ways: Using named volumes or bind mounts.

Volumes can be shared and reused among containers.

Create a volume that maps to a default folder location on the host

The following command will create a volume that mounts the container’s /var/www folder to a default folder location at the host system:

# mount host's default location to container's /var/www
docker run -p 8080:3000 -v /var/www node

You can docker inspect to look up the paths that are mounted from the host to the container (Listed under “Mounts”).

Another way to create a Volume is to give your volume a name like todo-db (named volume):

# create named volume
docker volume create todo-db
# run container using named volume (works even without creating named volume before)
docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started

Create a volume that maps to a folder of your choice on the host system

# run container with volume that has host's current working directory pointing to container's /var/www
docker run -p 8080:3000 -v $(pwd):/var/www node

Remove container including volume

To remove a container including its volume run docker rm -v mycontainer.

Start container with volume and run command in container

To run a command in the docker container you first have to specify a working directory with working directory argument (-w), followed by the image name and the command:

docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
node:12-alpine \
sh -c "yarn install && yarn run dev"

Inspect a volume

docker volume inspect todo-db

Search articles

Type a word to search published articles.

Open the search page