持久存储附加到容器 管理容器及服务

文章介绍了如何通过podman在容器中实现持久存储,通过挂载主机目录并配置SELinux上下文。同时,讲解了如何创建systemd用户单元文件,以使容器在服务器启动时自动启动和停止,以及如何管理这些服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将持久存储附加到容器

准备永久存储位置

容器中的存储具有临时性,这意味着移除容器后,其内容会丢失。

从容器主机提供持久存储

为容器提供永久存储的一种简单方式是使用容器主机上的目录来存储数据。podman可以在正在运行的容器内挂载主机目录。容器化应用将这些主机目录视为容器存储的一部分,就像常规应用将远程网络卷视为主机文件系统的一部分一样。移动容器时,系统不会回收容器主机目录的内容。新容器可以挂载它以访问数据。

准备主机目录

准备主机目录时,必须对其进行配置,以便容器内的进程可以访问它。目录配置涉及:

  • 配置目录的所有权和权限
  • 设置适当的SELinux上下文

容器内的应用所使用的用户账户必须具有主机目录的访问权限,确保在主机目录上设置正确的权限,以便应用可以访问它。

挂载卷

创建和配置主机目录后,将此目录挂载到容器。

添加--volume或-v选项到podman run命令,并指定主机目录路径和容器存储路径,其中用冒号:分隔:--volume host_dir:container_dir:Z

借助Z选项,podman会SELinux container_file_t上下问类型应用到主机目录。

管理容器及服务

在服务器启动时自动启动容器

通过rootless容器创建systemd用户单元文件,用systemctl命令来管理。

以普通用户身份运行systemd服务

除了管理系统服务,systemd还可以管理用户服务。借助systemd用户服务,用户可以为自己的服务创建单元文件,使用systemctl 命令管理这些服务,无需root访问权限。

loginctl enable-linger强制已启动用的服务在服务器启动时启动,在服务器关闭期间停止

loginctl show-user username查看当前用户的状态

创建和管理systemd用户服务

创建~/.config/systemd/user/目录来存储单元文件。

控制新用户服务使用systemctl命令和--user选项

创建systemd单元文件

podman generate systemd --name containername --files --new

上述命令使用容器作为模型来创建配置文件,创建文件后必须删除容器,因为systemd最初期望容器不存在。

--name指定容器名称

--files指示podman在当前目录中生成单元文件,若未使用,podman将z在其标准输出中显示此文件

--new指示podman将systemd服务配置为在服务启动时创建容器,在服务停止时删除容器。

使用systemd启动和停止容器

systemctl --user start container-name     #启动

systemctl --user stop container-name      #停止

systemctl --user status container-name    #获取状态

将容器配置为在主机启动时启动

loginctl enable-linger

systemctl --user enable container-name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值