介绍
在本挑战中,你将学习如何将 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。 - 必须使用
loginctl为labex用户启用驻留功能。
示例
完成挑战后,你应该能够通过运行 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 及类似系统上部署高可用容器化应用的基础,为传统方法提供了一个稳健的替代方案。



