将持久存储附加到容器

26 篇文章 0 订阅
20 篇文章 3 订阅

主要内容

  1. 持久存储部署容器

本次使用案例用到的命令

命令说明
skopeo用于在容器镜像仓库和容器运行时之间进行镜像传输和操作的命令行工具

Skopeo 是一个用于在容器镜像仓库和容器运行时之间进行镜像传输和操作的命令行工具。它提供了一种简单的方法来检查、复制和删除容器镜像,而无需运行容器。

其中,skopeo inspect 命令用于检查容器镜像的详细信息。它可以提供容器镜像的元数据、配置、标签和层信息等。使用 skopeo inspect 命令可以帮助您了解容器镜像的特性和内容。
以下是使用skopeo inspect 命令的示例:

skopeo inspect docker://nginx

上述命令将检查名为 nginx 的 Docker 容器镜像的详细信息。它会返回一个包含容器镜像元数据的 JSON 格式输出,其中包括镜像的名称、标签、大小、创建时间、操作系统等信息。
Skopeo 还支持其他类型的容器镜像仓库,如 OCI 镜像仓库和 Docker 镜像存储库。您可以根据需要使用适当的 URL 格式指定镜像仓库的位置。
通过使用 skopeo inspect 命令,您可以更好地了解容器镜像的内容,并根据需要进行进一步的操作,如复制镜像、删除镜像等。


预备知识
在容器化环境中,为了实现持久化存储,可以使用挂载卷(Volume)的方式将容器中的数据存储到主机上的永久存储位置。以下是相关概念的详细介绍:

  1. 准备永久存储位置:在主机上准备一个目录或文件系统,用于存储容器中的数据。这个位置可以是主机上的任何目录或文件系统,例如 /var/data/mnt/storage。确保该位置具有足够的磁盘空间,并且容器用户(通常是 root 或具有适当权限的用户)具有对该位置的读写权限。

  2. 从容器主机提供持久存储:通过挂载卷的方式,将主机上的永久存储位置提供给容器使用。这样,容器中的数据将存储在主机上的指定位置,即使容器停止运行或重新创建,数据也会保留下来。通过挂载卷,容器可以访问主机上的文件系统,进行读写操作。

  3. 准备主机目录:在主机上创建一个目录,用于挂载卷。这个目录将作为容器中数据的存储位置。可以使用 mkdir 命令创建目录,例如:

mkdir /var/data
  1. 挂载卷:在运行容器时,使用 -v--volume 选项来指定挂载卷。该选项的语法为 主机目录:容器目录,表示将主机上的目录挂载到容器中的指定目录。例如,要将主机上的 /var/data 目录挂载到容器的 /data 目录,可以运行以下命令:
podman run -d -v /var/data:/data --name my_container nginx

这样,容器中的 /data 目录将指向主机上的 /var/data 目录,容器中的数据将存储在主机上的 /var/data 目录中。

当您在容器中挂载卷时,容器将能够访问和操作主机上的永久存储位置。这为您提供了以下一些优势和灵活性:

  1. 数据持久性:容器中的数据将存储在主机上的永久存储位置中,即使容器停止运行或重新创建,数据也会保留下来。这确保了数据的持久性和可靠性。

  2. 数据共享:通过挂载卷,多个容器可以共享相同的数据。这对于共享配置文件、共享数据库文件或共享其他需要在多个容器之间共享的数据非常有用。

  3. 数据备份和恢复:由于数据存储在主机上的永久存储位置中,您可以轻松地对数据进行备份和恢复。您可以使用主机上的备份工具和流程来处理数据的备份和恢复操作。

  4. 数据迁移:如果您需要迁移容器,挂载卷使得迁移过程更加简单。您只需将挂载卷从一个主机复制到另一个主机,并在新主机上使用相同的挂载路径来挂载卷。这样,容器将能够访问其之前存储在挂载卷中的数据。

  5. 主机和容器之间的数据共享:通过挂载卷,可以在主机和容器之间共享数据。这使得主机上的工具和脚本可以方便地访问和处理容器中的数据,从而简化了一些操作和管理任务。

需要注意的是,挂载卷的使用也有一些限制和注意事项。例如,如果主机上的永久存储位置发生故障或被删除,容器将无法访问其数据。此外,挂载卷的权限和访问控制也需要谨慎处理,以确保数据的安全性和保密性。

总之,通过挂载卷,您可以在容器化环境中实现持久化存储,并为容器提供对主机上永久存储位置的访问和操作能力。这为应用程序的数据持久性、共享和备份提供了方便和灵活的解决方案。


一.将持久存储附加到容器

  1. 持久存储部署容器

1.创建/home/student/webcontent/html/目录,然后创建index.html测试页。部署Web服务器容器时,您将使用此目录作为持久存储。

代码如下(示例):
mkdir -p ~/webcontent/html
echo "Hello World"> /webcontent/html/index.html
ls -d webcontent/html/

2.创建具有持久存储的Apache HTTP Server容器实例。

代码如下(示例):
podman login registry.lab.example.com
podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-98
podman ps

在这里插入图片描述

创建名为myweb的分离容器实例。将本地主机上的端口8080重定向至容器端口8080。将~/webcontent目录从主机挂载到容器中的/var/www目录。为卷挂载选项添加:Z后缀,指示podman命令重新标记目录及其内容。使用registry.lab.example.com/rhel8/httpd-24:1-98镜像。

在这里插入图片描述
在这里插入图片描述

3.使用skopeo inspect命令获取registry.lab.example.com/rhel8/httpd-24镜像详情信息,并检索该版本的标签。

代码如下(示例):
skopeo inspect docker://registry.lab.example.com/rhel8/httpd-24

在这里插入图片描述

4.停止并删除myweb容器,然后使用1-105镜像标签启动新的容器。确认持久存储中Web内容未发生更改。

代码如下(示例):
podman stop myweb
podman rm myweb
podman run -d --name myweb -p 8080:8080 -v /webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-105
podman ps
curl http://localhost:8080/
exit

在这里插入图片描述


总结

以上是今天要讲的内容,学到了将持久存储附加到容器。
此外,还可参考:
运行基本容器
查找并管理容器镜像
执行高级容器管理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值