最稳妥可控的方式是将独立磁盘分区挂载到宿主机专用路径(如 /data/mysql)再通过 -v 映射进容器;分三步:准备并格式化磁盘(如 /dev/sdb1 为 ext4)、永久挂载至宿主机、配置权限与 selinux 上下文后启动容器。

准备一块独立磁盘并格式化
先确认新磁盘设备名(如 /dev/sdb),可用 lsblk 或 fdisk -l 查看。不要误操作系统盘。
接着分区并格式化:
- 用
fdisk /dev/sdb创建一个主分区(如/dev/sdb1),保存退出 - 执行
mkfs.ext4 /dev/sdb1格式化为 ext4(稳定通用,推荐) - 创建挂载点:
mkdir -p /data/mysql
将磁盘永久挂载到宿主机指定路径
编辑 /etc/fstab,添加一行(以 ext4 为例):
然后运行 mount -a 测试是否生效,再用 df -h 确认 /data/mysql 已挂载且空间来自 sdb1。
配置权限与 SELinux 上下文
容器内进程(如 MySQL 的 mysql 用户)需要能读写该目录:
- 查清镜像中服务用户的 UID/GID,例如执行
podman exec 容器名 grep mysql /etc/passwd,常见为27:27或999:999 - 设置宿主目录归属:
podman unshare chown 27:27 /data/mysql - 若启用了 SELinux(RHEL/CentOS 默认开启),挂载时必须加
:Z选项,让 Podman 自动设置container_file_t上下文
启动容器并挂载该路径
不再使用临时路径,直接绑定挂载:
podman run -d --name mysql-db \-v /data/mysql:/var/lib/mysql:Z \
-e MYSQL_ROOT_PASSWORD=123 \
registry.lab.example.com/rhel8/mysql
注意:已运行的容器无法追加挂载,必须停用、删除后按新配置重建。删之前建议备份原数据目录内容。











