跳到主要内容

podman volume create - 创建新的卷

摘要

podman volume create [选项][*名称*]

描述

创建一个空的卷并准备供容器使用。可以指定一个具体的名称来创建卷,如果不指定名称,则会生成一个随机名称。可以使用 --label 标志为卷添加元数据,使用 --opt 标志设置驱动选项。

选项

--driver, -d=驱动名称

指定卷的驱动名称(默认为 local)。 Podman 本身支持两种驱动:localimage

local 驱动默认使用磁盘上的一个目录作为后端,但如果指定了 --opt,则也可以使用 mount(8) 命令来挂载一个文件系统作为卷。

image 驱动使用镜像作为卷的存储后端。会创建一个覆盖文件系统,允许对卷的更改被提交为镜像上的新层。

如果使用了除 localimage 以外的值,Podman 会尝试使用具有给定名称的卷插件来创建卷。这样的插件必须在 containers.conf(5) 配置文件的 volume_plugins 部分中定义。

--help

显示使用说明

--ignore

如果已存在具有指定名称的卷,则不报错,而是只打印名称。请注意,新选项不会应用于现有的卷。

--label, -l=标签

为卷设置元数据(例如,--label mykey=value)。

示例

创建一个新的卷

podman volume create myvolume

该命令将创建一个名为 myvolume 的新卷。如果没有指定名称,Podman 会生成一个随机名称。

使用特定驱动创建卷

podman volume create --driver image myimagevolume

该命令将使用 image 驱动创建一个名为 myimagevolume 的新卷。

带有标签的卷创建

podman volume create --label mykey=myvalue mylabeledvolume

该命令将创建一个带有标签 mykey=myvalue 的名为 mylabeledvolume 的新卷。

忽略已存在的卷

podman volume create --ignore myexistingvolume

如果已存在名为 myexistingvolume 的卷,该命令将不会报错,而是仅打印卷的名称。

--opt, -o=选项

设置驱动特定的选项。 对于默认的驱动 local,这允许配置卷以挂载主机上的文件系统。

对于 local 驱动,支持以下选项:typedeviceo 以及 [no]copy

  • type 选项设置要挂载的文件系统类型,相当于 mount(8)-t 标志。
  • device 选项设置要挂载的设备,相当于 mount(8)device 参数。
  • copy 选项启用从容器镜像中创建挂载的路径复制文件到首次运行时新创建的卷上。copy 是默认值。

o 选项设置挂载的选项,相当于传递给 mount(8) 的文件系统选项(也是 -o),但有以下例外:

  • o 选项支持 uidgid 选项来设置创建的卷的 UID 和 GID,这些通常不被 mount(8) 支持。
  • o 选项支持 size 选项来设置创建的卷的最大大小,inodes 选项来设置卷的最大 inode 数量,以及 noquota 来完全禁用配额支持,即使是为了跟踪磁盘使用情况。size 选项在 "tmpfs" 和 "xfs[注]" 文件系统上受支持。inodes 选项在 "xfs[注]" 文件系统上受支持。注意:xfs 文件系统必须使用 xfs_quota(8) 手册页中描述的 prjquota 标志进行挂载。如果没有,Podman 将抛出错误。
  • o 选项支持使用除 UID/GID 选项以外的卷选项与 local 驱动,并需要 root 权限。
  • o 选项支持 timeout 选项,允许用户设置驱动特定的超时(以秒为单位),在卷创建失败之前。例如,--opt=o=timeout=10 设置驱动超时为 10 秒。

:关于 xfs 文件系统的支持,需要额外注意其挂载选项和配额支持。务必按照相关文档正确配置和使用。

注意 不要将 --opt,-o 创建选项与 -o 挂载选项混淆。例如,使用 podman volume create 时,应该使用 -o=o=uid=1000 而不是 -o=uid=1000

对于 image 驱动,唯一支持的选项是 image,它指定了卷所基于的镜像。当使用 image 驱动时,此选项是必需的。

当不使用 localimage 驱动时,给定的选项将直接传递给卷插件。在这种情况下,支持的选项由相关插件决定,而不是由 Podman 决定。

示例

创建一个空卷。

$ podman volume create

创建一个带名称的空卷。

$ podman volume create myvol

创建一个带指定标签的带名称的空卷。

$ podman volume create --label foo=bar myvol

创建一个具有指定大小和挂载选项的 tmpfs 命名卷。

podman volume create --opt device=tmpfs --opt type=tmpfs --opt o=size=2M,nodev,noexec myvol

创建一个具有指定选项的 tmpfs 命名卷 testvol。

podman volume create --opt device=tmpfs --opt type=tmpfs --opt o=uid=1000,gid=1000 testvol

使用 containers/storage 中的指定本地镜像创建一个基于镜像的命名卷。

podman volume create --driver image --opt image=fedora:latest fedoraVol

在上面的例子中,使用了 bash 命令行提示符 #$ 来表示命令是在 root 用户或普通用户下执行的。在实际使用时,请根据你的用户权限和实际情况选择相应的提示符。如果你不是 root 用户,你可能需要使用 sudo 来执行一些需要特权的命令。

QUOTAS

Podman volume create 使用 XFS project quota controls 来控制内置卷的大小和 inode 数量。用于存储卷的目录必须是 XFS 文件系统,并且需要以 pquota 选项挂载。

示例 /etc/fstab 条目:

/dev/podman/podman-var /var xfs defaults,x-systemd.device-timeout=0,pquota 1 2

Podman 为每个内置卷生成项目 ID,但这些项目 ID 在 XFS 文件系统中需要是唯一的。这些项目 ID 默认是随机生成的,有可能与同一文件系统中其他配额的项目 ID 重叠。

可以使用 xfs_quota 工具为存储驱动程序目录分配项目 ID,例如:

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>

在上面的示例中,我们为新创建的容器使用的 overlay 存储驱动程序以及卷配置项目 ID,并为它们使用了一个起始偏移量。所有容器都被分配了更大的项目 ID(例如 >= 100000)。 所有卷分配的项目 ID 是从 200000 开始的更大的项目 ID。这可以防止 xfs_quota 管理与 containers/storage 之间的冲突。

另请参阅

podman(1), podman-volume(1), podman-volume-rm(1), podman-volume-inspect(1), containers.conf(5), mount(8), xfs_quota(8), projects(5), projid(5)

历史

2020 年 1 月,由 Matthew Heon 更新有关卷插件的信息 2018 年 11 月,最初由 Urvashi Mohnani 整理