| # volume create | |
| <!---MARKER_GEN_START--> | |
| Create a volume | |
| ### Options | |
| | Name | Type | Default | Description | | |
| |:------------------------------|:---------|:---------|:-----------------------------------------------------------------------| | |
| | `--availability` | `string` | `active` | Cluster Volume availability (`active`, `pause`, `drain`) | | |
| | `-d`, `--driver` | `string` | `local` | Specify volume driver name | | |
| | `--group` | `string` | | Cluster Volume group (cluster volumes) | | |
| | `--label` | `list` | | Set metadata for a volume | | |
| | `--limit-bytes` | `bytes` | `0` | Minimum size of the Cluster Volume in bytes | | |
| | [`-o`](#opt), [`--opt`](#opt) | `map` | `map[]` | Set driver specific options | | |
| | `--required-bytes` | `bytes` | `0` | Maximum size of the Cluster Volume in bytes | | |
| | `--scope` | `string` | `single` | Cluster Volume access scope (`single`, `multi`) | | |
| | `--secret` | `map` | `map[]` | Cluster Volume secrets | | |
| | `--sharing` | `string` | `none` | Cluster Volume access sharing (`none`, `readonly`, `onewriter`, `all`) | | |
| | `--topology-preferred` | `list` | | A topology that the Cluster Volume would be preferred in | | |
| | `--topology-required` | `list` | | A topology that the Cluster Volume must be accessible from | | |
| | `--type` | `string` | `block` | Cluster Volume access type (`mount`, `block`) | | |
| <!---MARKER_GEN_END--> | |
| ## Description | |
| Creates a new volume that containers can consume and store data in. If a name is | |
| not specified, Docker generates a random name. | |
| ## Examples | |
| Create a volume and then configure the container to use it: | |
| ```console | |
| $ docker volume create hello | |
| hello | |
| $ docker run -d -v hello:/world busybox ls /world | |
| ``` | |
| The mount is created inside the container's `/world` directory. Docker doesn't | |
| support relative paths for mount points inside the container. | |
| Multiple containers can use the same volume. This is useful if two containers | |
| need access to shared data. For example, if one container writes and the other | |
| reads the data. | |
| Volume names must be unique among drivers. This means you can't use the same | |
| volume name with two different drivers. Attempting to create two volumes with | |
| the same name results in an error: | |
| ```console | |
| A volume named "hello" already exists with the "some-other" driver. Choose a different volume name. | |
| ``` | |
| If you specify a volume name already in use on the current driver, Docker | |
| assumes you want to reuse the existing volume and doesn't return an error. | |
| ### <a name="opt"></a> Driver-specific options (-o, --opt) | |
| Some volume drivers may take options to customize the volume creation. Use the | |
| `-o` or `--opt` flags to pass driver options: | |
| ```console | |
| $ docker volume create --driver fake \ | |
| --opt tardis=blue \ | |
| --opt timey=wimey \ | |
| foo | |
| ``` | |
| These options are passed directly to the volume driver. Options for | |
| different volume drivers may do different things (or nothing at all). | |
| The built-in `local` driver accepts no options on Windows. On Linux and with | |
| Docker Desktop, the `local` driver accepts options similar to the Linux `mount` | |
| command. You can provide multiple options by passing the `--opt` flag multiple | |
| times. Some `mount` options (such as the `o` option) can take a comma-separated | |
| list of options. Complete list of available mount options can be found | |
| [here](https://man7.org/linux/man-pages/man8/mount.8.html). | |
| For example, the following creates a `tmpfs` volume called `foo` with a size of | |
| 100 megabyte and `uid` of 1000. | |
| ```console | |
| $ docker volume create --driver local \ | |
| --opt type=tmpfs \ | |
| --opt device=tmpfs \ | |
| --opt o=size=100m,uid=1000 \ | |
| foo | |
| ``` | |
| Another example that uses `btrfs`: | |
| ```console | |
| $ docker volume create --driver local \ | |
| --opt type=btrfs \ | |
| --opt device=/dev/sda2 \ | |
| foo | |
| ``` | |
| Another example that uses `nfs` to mount the `/path/to/dir` in `rw` mode from | |
| `192.168.1.1`: | |
| ```console | |
| $ docker volume create --driver local \ | |
| --opt type=nfs \ | |
| --opt o=addr=192.168.1.1,rw \ | |
| --opt device=:/path/to/dir \ | |
| foo | |
| ``` | |
| ## Related commands | |
| * [volume inspect](volume_inspect.md) | |
| * [volume ls](volume_ls.md) | |
| * [volume rm](volume_rm.md) | |
| * [volume prune](volume_prune.md) | |
| * [Understand Data Volumes](https://docs.docker.com/storage/volumes/) |