配置 Podman 容器作为 systemd 用户服务自动启动

Red Hat Enterprise LinuxBeginner
立即练习

介绍

在本挑战中,你将学习如何将 Podman 容器配置为作为 systemd 用户服务自动启动。在 Red Hat Enterprise Linux (RHEL) 环境中,这是一种常用且推荐的做法,用以确保你的容器化应用在系统引导后能够自动运行并可用。通过完成本次挑战,你将获得使用 podman 管理容器生命周期并将其与系统的 systemd 初始化进程集成的实战经验,这也是系统管理员的一项核心能力。

将容器配置为作为 systemd 服务自动启动

在本挑战中,你将配置一个容器,使其作为 systemd 服务自动启动。这对于确保容器化应用始终保持运行并可访问非常有用。

任务

你的目标是在 Podman 容器中运行一个 Nginx Web 服务器,并将其配置为在系统启动时自动启动。

  • 基于 nginx:latest 镜像创建并运行一个 podman 容器。
  • 为该容器生成一个 systemd 用户服务文件。
  • labex 用户启用该服务,使其自动启动。
  • labex 用户启用驻留(Lingering)功能,以确保即使在没有活动登录会话的情况下,服务也能在开机时启动。
  • 验证容器是否正在运行且 Nginx 服务可以访问。

要求

  • 必须使用 podman 执行所有容器管理任务。
  • 容器镜像必须使用 docker.io/library/nginx:latest
  • 容器名称必须为 my-nginx
  • 容器必须将主机的 8080 端口映射到容器的 80 端口。
  • 必须使用 podman generate systemd 生成 systemd 服务文件。
  • 生成的服务文件必须放置在 ~/.config/systemd/user/container-my-nginx.service
  • 必须使用 loginctllabex 用户启用驻留功能。

示例

完成挑战后,你应该能够通过运行 curl http://localhost:8080 访问 Nginx 欢迎页面。输出结果应如下所示:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
✨ 查看解决方案并练习

总结

在本挑战中,你学习了如何使用 podman 创建容器,并生成 systemd 用户服务来管理其生命周期。你配置了服务的自动启动,并启用了驻留功能以确保其在系统引导时加载。这一流程是在 RHEL 及类似系统上部署高可用容器化应用的基础,为传统方法提供了一个稳健的替代方案。