Skip to main content

Command Palette

Search for a command to run...

Docker Volume VS Bind Mount

Published
3 min read
Docker Volume VS Bind Mount

Docker includes important components such as volumes and bind mounts that enhance its functionality. Bind mounts, in particular, allow you to mount a file or directory from your host computer directly into your container, enabling you to access it via its absolute path. This feature is beneficial because Docker operates autonomously, meaning it does not depend on the host computer's operating system or its directory structure. By utilizing bind mounts, you can create a more flexible and efficient development environment.

Docker volumes

Volumes are a powerful solution for preserving data in your Docker containers, especially when it's important to keep that data intact after shutting them down. They play a crucial role in ensuring that vital information remains accessible during periods when your containers are not running.Docker takes on the responsibility of managing these volumes, which means you benefit from a system that operates independently of your local folder structure and the operating system of your host machine. When you create a volume, Docker sets up a new directory in its designated storage space on your host. This directory serves as a reliable storage location for your data.

Advantages of Docker volume

  • Manage Docker volumes using the Docker API or Docker CLI commands.

  • Docker volumes can utilize external storage like cloud services or network-attached storage for flexibility and scalability.

  • Docker Desktop volumes work much better than bind mounts on Windows and Mac computers.

Getting started using volumes

The volume command in Docker is essential for managing persistent storage for your containers. Here’s how to get started :

1️⃣ Create a Volume

docker volume create my_volume

2️⃣ List Volumes

docker volume ls

3️⃣ Inspect a Volume

docker volume inspect my_volume

4️⃣ Use a Volume in a Container

docker run -d --name my_container -v my_volume:/data nginx

5️⃣ Remove a Volume

docker volume rm my_volume

6️⃣ Remove All Unused Volumes

docker volume prune

Bind mounts

Bind mounts have been a powerful feature of Docker since its inception, allowing for effective data persistence. With bind mounts, you can easily link a file or directory from your host machine to your container. This process is straightforward, as you can reference the mount directly via its absolute path.One of the advantages of bind mounts is that the file or directory does not need to exist on your Docker host beforehand. If it is absent, Docker will create it when needed, offering flexibility in managing your storage. However, it’s important to note that bind mounts are dependent on the host machine's filesystem structure, requiring you to explicitly define a path for where the storage should be placed.

Advantages of Bind mount

  • Docker simplifies the process of managing tools and dependencies by allowing you to bundle them together with a single Docker Run command.

  • Bind mounts are commonly utilized in local development environments. One advantage is that not all build environments and tools need to be installed on the developer's workstation.

  • You can access a file or directory on your host system by using its absolute path, which mounts directly to your container.

Getting started using bind mounts

You can access a file or directory on your host system by using its absolute path, which directly mounts to your container.

1️⃣ Run a Container with a Bind Mount

docker run -d --name my_container -v /path/on/host:/path/in/container nginx

2️⃣ Inspect the Mount

docker inspect my_container

3️⃣ Using --mount Instead of -v

docker run -d --name my_container
--mount type=bind,source=/path/on/host,target=/path/in/container
nginx

4️⃣ Read-Only and Read-Write Modes

-v /host/path:/container/path:rw

-v /host/path:/container/path:ro

--mount type=bind,source=/host/path,target=/container/path,readonly

5️⃣ Clean Up

docker stop my_container

docker rm my_container