# Volumes vs Bind Mounts — Docker

Source: https://www.geekswithgeeks.com/en/docker/docker-volumes-vs-bind-mounts

> Two ways to persist and share data outside a container's lifecycle.

## Two mechanisms

A **volume** is storage managed entirely by Docker (best for production data). A **bind mount** maps a specific folder from your host machine into the container — great for local development.

## A practical example

Give a database a named volume so its data survives container removal; bind-mount your source code so edits show up live.

```bash
docker volume create pgdata
docker run -d --name db -v pgdata:/var/lib/postgresql/data postgres:16

# bind mount for live-editing source code
docker run -d -v $(pwd)/src:/app/src my-app:1.0
```
