podman-volume-create - Create a new volume
podman volume create [options] [name]
Creates an empty volume and prepares it to be used by containers. The volume can be created with a specific name, if a name is not given a random name is generated. You can add metadata to the volume by using the --label flag and driver options can be set using the --opt flag.
Specify the volume driver name (default local). There are two drivers supported by Podman itself: local and image.
The local driver uses a directory on disk as the backend by default, but can also use the mount(8) command to mount a filesystem as the volume if --opt is specified.
The image driver uses an image as the backing store of for the volume. An overlay filesystem is created, which allows changes to the volume to be committed as a new layer on top of the image.
Using a value other than local or image, Podman attempts to create the volume using a volume plugin with the given name. Such plugins must be defined in the volume_plugins section of the containers.conf(5) configuration file.
Print usage statement
Don’t fail if the named volume already exists, instead just print the name. Note that the new options are not applied to the existing volume.
Set metadata for a volume (e.g., --label mykey=value).
Set driver specific options. For the default driver, local, this allows a volume to be configured to mount a filesystem on the host.
local driver the following options are supported:
typeoption sets the type of the filesystem to be mounted, and is equivalent to the
-tflag to mount(8).
deviceoption sets the device to be mounted, and is equivalent to the
deviceargument to mount(8).
copyoption enables copying files from the container image path where the mount is created to the newly created volume on the first run.
copyis the default.
o option sets options for the mount, and is equivalent to the filesystem
-o) passed to mount(8) with the following exceptions:
gidoptions to set the UID and GID of the created volume that are not normally supported by mount(8).
ooption supports the
sizeoption to set the maximum size of the created volume, the
inodesoption to set the maximum number of inodes for the volume, and
noquotato completely disable quota support even for tracking of disk usage. The
sizeoption is supported on the “tmpfs” and “xfs[note]” file systems. The
inodesoption is supported on the “xfs[note]” file systems. Note: xfs filesystems must be mounted with the
prjquotaflag described in the xfs_quota(8) man page. Podman will throw an error if they’re not.
ooption supports using volume options other than the UID/GID options with the local driver and requires root privileges.
ooptions supports the
timeoutoption which allows users to set a driver specific timeout in seconds before volume creation fails. For example, --opt=o=timeout=10 sets a driver timeout of 10 seconds.
Note Do not confuse the
--opt,-o create option with the
-o mount option. For example, with
podman volume create, use
For the image driver, the only supported option is
image, which specifies the image the volume is based on.
This option is mandatory when using the image driver.
When not using the local and image drivers, the given options are passed directly to the volume plugin. In this case, supported options are dictated by the plugin in question, not Podman.
Create empty volume.
$ podman volume create
Create empty named volume.
$ podman volume create myvol
Create empty named volume with specified label.
$ podman volume create --label foo=bar myvol
Create tmpfs named volume with specified size and mount options.
# podman volume create --opt device=tmpfs --opt type=tmpfs --opt o=size=2M,nodev,noexec myvol
Create tmpfs named volume testvol with specified options.
# podman volume create --opt device=tmpfs --opt type=tmpfs --opt o=uid=1000,gid=1000 testvol
Create image named volume using the specified local image in containers/storage.
# podman volume create --driver image --opt image=fedora:latest fedoraVol
podman volume create uses
XFS project quota controls for controlling the size and the number of inodes of builtin volumes. The directory used to store the volumes must be an
XFS file system and be mounted with the
Example /etc/fstab entry:
/dev/podman/podman-var /var xfs defaults,x-systemd.device-timeout=0,pquota 1 2
Podman generates project IDs for each builtin volume, but these project IDs need to be unique for the XFS file system. These project IDs by default are generated randomly, with a potential for overlap with other quotas on the same file system.
The xfs_quota tool can be used to assign a project ID to the storage driver directory, e.g.:
echo 100000:/var/lib/containers/storage/overlay >> /etc/projects
echo 200000:/var/lib/containers/storage/volumes >> /etc/projects
echo storage:100000 >> /etc/projid
echo volumes:200000 >> /etc/projid
xfs_quota -x -c 'project -s storage volumes' /<xfs mount point>
In the example above we are configuring the overlay storage driver for newly created containers as well as volumes to use project IDs with a start offset. All containers are assigned larger project IDs (e.g. >= 100000). All volume assigned project IDs larger project IDs starting with 200000. This prevents xfs_quota management conflicts with containers/storage.