当前位置:首页 > RockyLinux > 正文

RockyLinux容器存储管理(Docker存储卷与数据持久化完整教程)

在使用 RockyLinux 运行容器时,如何有效管理容器中的数据是一个关键问题。默认情况下,容器内的文件系统是临时的——一旦容器被删除,所有数据也会随之消失。为了解决这个问题,我们需要使用 Docker 存储卷(Volumes) 或绑定挂载(Bind Mounts)来实现 容器数据持久化。本教程将手把手教你如何在 RockyLinux 上进行容器存储管理,即使是初学者也能轻松上手。

RockyLinux容器存储管理(Docker存储卷与数据持久化完整教程) RockyLinux容器存储管理  Docker存储卷 容器数据持久化 Rocky Linux容器教程 第1张

一、为什么需要容器存储管理?

容器本身是无状态的,这意味着每次重启或重建容器,其内部文件系统都会重置。如果你正在运行数据库、Web 应用或任何需要保存用户数据的服务,就必须将数据存储在容器外部。这就是 RockyLinux容器存储管理 的核心目的:确保数据安全、可迁移、可备份。

二、Docker 存储方式简介

Docker 提供了三种主要的数据存储方式:

  • Volume(存储卷):由 Docker 管理,存储在宿主机特定目录(通常为 /var/lib/docker/volumes/),推荐用于生产环境。
  • Bind Mount(绑定挂载):将宿主机任意目录挂载到容器中,适合开发调试。
  • tmpfs Mount:仅适用于 Linux,数据保存在内存中,容器停止后自动清除(不适用于持久化)。

三、在 RockyLinux 上使用 Volume 实现数据持久化

下面我们将通过一个 MySQL 容器示例,演示如何使用 Volume 保存数据库文件。

步骤 1:安装 Docker(如果尚未安装)

sudo dnf install -y dockersudo systemctl start dockersudo systemctl enable docker

步骤 2:创建命名 Volume

docker volume create mysql_data

该命令会创建一个名为 mysql_data 的 Volume,Docker 会自动将其存放在 /var/lib/docker/volumes/mysql_data/_data 目录下。

步骤 3:运行容器并挂载 Volume

docker run -d \  --name my-mysql \  -e MYSQL_ROOT_PASSWORD=my-secret-pw \  -v mysql_data:/var/lib/mysql \  mysql:8.0

这里我们使用 -v mysql_data:/var/lib/mysql 将 Volume 挂载到容器内的 MySQL 数据目录。即使容器被删除,数据仍保留在 Volume 中。

步骤 4:验证数据持久化

你可以先在数据库中创建一张表,然后删除容器再重新运行一个新容器挂载同一个 Volume,你会发现数据依然存在。

四、使用 Bind Mount 挂载本地目录

如果你希望直接使用宿主机上的某个目录(例如 /home/user/myapp/data),可以使用 Bind Mount:

mkdir -p /home/rocky/mysql-datadocker run -d \  --name my-mysql-bind \  -e MYSQL_ROOT_PASSWORD=my-secret-pw \  -v /home/rocky/mysql-data:/var/lib/mysql \  mysql:8.0

这种方式便于直接访问和备份数据,但需注意文件权限问题。

五、常用管理命令

以下是一些常用的存储管理命令:

  • 查看所有 Volume:docker volume ls
  • 查看 Volume 详情:docker volume inspect mysql_data
  • 删除未使用的 Volume:docker volume prune
  • 备份 Volume 数据(通过临时容器):
    docker run --rm -v mysql_data:/volume -v $(pwd):/backup alpine \  tar czf /backup/mysql_data.tar.gz -C /volume .

六、总结

通过本教程,你已经掌握了在 RockyLinux 上进行 容器存储管理 的核心方法。无论是使用 Docker Volume 还是 Bind Mount,都能有效实现 容器数据持久化,保障你的应用数据安全。建议在生产环境中优先使用命名 Volume,开发环境中可灵活使用 Bind Mount。

希望这篇 Rocky Linux容器教程 对你有所帮助!如有疑问,欢迎在评论区交流。