介绍
在本挑战中,你将使用 podman 为容器挂载持久化存储。容器在本质上是临时性的,这意味着容器一旦被删除,其中创建的所有数据都会丢失。为了保存数据,你可以将宿主机系统中的目录挂载到容器内部。这种挂载的目录被称为持久化卷(Persistent Volume),它能确保即使容器被停止、删除或重建,你的数据依然存在。
在本挑战中,你将使用 podman 为容器挂载持久化存储。容器在本质上是临时性的,这意味着容器一旦被删除,其中创建的所有数据都会丢失。为了保存数据,你可以将宿主机系统中的目录挂载到容器内部。这种挂载的目录被称为持久化卷(Persistent Volume),它能确保即使容器被停止、删除或重建,你的数据依然存在。
在本挑战中,你将在宿主机系统上创建一个目录作为持久化卷。随后,你将运行一个新容器并将该持久化卷挂载到其中。最后,你将验证在容器内部写入卷中的数据在容器重启后是否依然存在。
/data 的目录。该目录将作为卷挂载的宿主机路径。nginx 镜像运行一个容器。容器必须命名为 my-nginx-container。/data 目录挂载到容器内部的 /usr/share/nginx/html 目录。/usr/share/nginx/html/my-file.txt 路径创建一个文件,内容必须为 This is a persistent file。完成任务后,你应该能在容器的挂载目录中看到自定义文件以及默认的 Nginx 文件。你也可以检查宿主机的 /data 目录来查看相同的文件。
[labex@host ~]$ podman exec my-nginx-container cat /usr/share/nginx/html/my-file.txt
This is a persistent file
[labex@host ~]$ podman exec my-nginx-container ls /usr/share/nginx/html
my-file.txt
sudo mkdir 命令创建 /data 目录。sudo chown 更改所有权,并使用 sudo chmod 更改权限,以确保容器进程可以向其写入数据。podman run 命令的 -v 或 --volume 选项用于将宿主机目录挂载到容器中。格式为 -v /host/path:/container/path。sudo semanage fcontext -a -t container_file_t "/data(/.*)?" 和 sudo restorecon -R /data 来配置 SELinux 标签。在本挑战中,你学习了如何使用绑定挂载(Bind Mount)为容器提供持久化存储。通过将宿主机系统的目录挂载到容器中,你可以确保应用程序生成的数据即使在容器停止、删除或重启后也能持久存在。这项技术是容器中运行有状态应用的基础。