上面简单介绍了什么是数据卷,以及数据卷和绑定挂载的区别。在 Podman 中,可以通过 podman volume create 命令创建数据卷。数据卷的创建是使用 Podman 持久化数据的第一步,下面我会详细介绍各种创建方式和参数。
输入 podman volume create --help 命令,查看详细命令手册:
C:\Users\Administrator> podman volume create --help 创建一个新的数据卷 说明: 若使用默认驱动("local"),该数据卷将在主机上的容器存储目录下的 volumes 子目录中创建。 用法: podman volume create [选项] [名称] 示例: podman volume create myvol # 创建名为 myvol 的数据卷 podman volume create # 创建随机名称的数据卷 podman volume create --label foo=bar myvol # 创建带标签 foo=bar 的数据卷 myvol # 创建属主 UID 为 4321、GID 为 1234 的数据卷 myvol podman volume create --uid 4321 --gid 1234 myvol 选项: -d, --driver string 指定数据卷驱动名称(默认值为 "local") --gid int 设置数据卷属主的 GID(组ID) --ignore 若数据卷已存在则不报错 -l, --label stringArray 为数据卷设置元数据标签(默认值为空数组) -o, --opt stringArray 设置驱动专属选项(默认值为空数组) --uid int 设置数据卷属主的 UID(用户ID)
后续介绍如何使用该命令去创建数据卷。
最基本的创建命令非常简单,直接指定卷名即可:
# 创建名为 my_volume 的数据卷 podman volume create my_volume # 实例: C:\Users\Administrator> podman volume create my_volume my_volume
如果不指定卷名,Podman 会自动生成一个随机的唯一名称:
# 创建一个随机名称的数据卷 podman volume create # 实例: C:\Users\Administrator> podman volume create 1cbe65f784c4bb2f774e63c612f62e99d1316b27975ebda62f7040d46b964d1a
Podman 默认使用 local 驱动,你也可以指定其他驱动(如 nfs, glusterfs 等):
# 使用 NFS 驱动创建数据卷 podman volume create --driver local \ --opt type=nfs \ --opt o=addr=192.168.1.100,rw \ --opt device=:/nfs/share \ nfs_volume # 实例: C:\Users\Administrator>podman volume create --driver local --opt type=nfs --opt o=addr=192.168.1.100,rw --opt device=:/nfs/share nfs_volume nfs_volume
上面命令创建一个基于 NFS 协议的 Podman 数据卷(命名为 nfs_volume),通过 local 驱动扩展实现将远程 NFS 服务器的共享目录挂载为 Podman 数据卷,容器可直接通过卷名使用该 NFS 共享存储。
NFS 是 Network File System 的缩写,中文名为网络文件系统,是一种基于 TCP/IP 协议的分布式文件共享协议,核心作用是让客户端主机通过网络,像访问本地文件系统一样读写远程服务器上的文件。
在生产环境中,管理的容器较多,书卷也比较多,此时我们可以为数据卷添加标签,方便分类和管理:
# 创建带标签的数据卷 podman volume create \ --label environment=production \ --label app=database \ --label version=1.0 \ db_volume # 实例: C:\Users\Administrator> podman volume create --label environment=production --label app=database --label version=1.0 db_volume db_volume
上面命令创建一个名为 db_volume 的 Podman 数据卷,并为该卷添加三组自定义标签(元数据),用于标识卷的用途、环境、版本等信息,方便后续管理和筛选。
在创建数据卷的时候,我们可以指定数据卷的用户和组权限:
# 创建指定 UID/GID 权限的数据卷 podman volume create \ --opt o=uid=1000,gid=1000 \ user_volume # 实例: C:\Users\Administrator> podman volume create --opt o=uid=1000,gid=1000 user_volume user_volume
上面命令创建一个名为 user_volume 的 Podman 数据卷(默认 local 驱动),并通过挂载选项指定该卷的属主 UID 为 1000、GID 为 1000,解决容器内非 root 用户访问卷时的权限问题(尤其是 rootless 模式下)。
Podman 数据卷创建的关键点:
基础创建:使用 podman volume create [NAME] 即可创建基本数据卷
高级配置:通过 --driver, --opt, --label 等参数可以实现复杂配置
权限管理:可以通过 --opt o=uid=xxx,gid=xxx 设置数据卷权限