上面简单介绍了什么是数据卷,以及数据卷和绑定挂载的区别。在 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
1cbe65f784c4bb2f774e63c612f62e99d1316b27975ebda62f7040d46b964d1aPodman 默认使用 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 设置数据卷权限