众所周知,podman 是一个开源的无守护进程工具,它提供了构建、运行和管理容器的环境。将容器作为 systemd service 运行意味着当系统重新启动时,容器将自动启动。
在这篇文章中,我们将学习如何在基于 RHEL 的发行版 (如 RHEL 8、CentOS 8 和 Rocky Linux 8) 上使用 podman 将容器作为系统服务运行。
前提条件
- Minimal RHEL based OS Installation.
- Stable Internet Connection
- Sudo User with root privileges
(1) 安装 Podman
要在 RHEL 8 上安装 podman,请运行
$ sudo dnf install @container-tools -y
要在 CentOS 8 / Rocky Linux 8 上安装 podman,请运行
$ sudo dnf install -y podman
要检查 podman 是否安装成功,请尝试使用 podman 下面的命令运行 hello-world 容器。
$ podman -v
podman version 3.3.1
$
$ podman run 'hello-world'
注意:当我们第一次运行 podman 时,它会提示我们选择想要下载容器映像的托管仓库。
输出确认 podman 已成功安装,让我们进入下一步。
(2) 生成 systemd 服务
假设要给 rsyslog 容器生成 systemd 服务,首先使用以下 podman 命令启动 rsyslog 容器
$ podman run -d --name <Container-Name> <Image-Name>
注意: 如果您希望从特定的仓库下载 rsyslog 容器映像,请使用以下语法
$ podman run -d --name container-name <registry-URL>/<image-name>
在这个演示中,我使用了 Red hat 仓库,首先登录仓库
$ podman login registry.access.redhat.com
Username: <Specify-User-Name>
Password: <Enter-Password>
Login Succeeded!
$
现在尝试使用以下 podman 命令运行容器
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog
$ podman ps
现在,为 rsyslog-server 容器创建 systemd 服务,运行以下命令
$ mkdir -p .config/systemd/user
$ cd .config/systemd/user/
$ podman generate systemd --name rsyslog-server --files --new
/home/sysops/.config/systemd/user/container-rsyslog-server.service
$
有关 podman generate systemd 命令的详细信息,请参阅它的帮助页面
$ podman generate systemd --help
(3) 启动和启用容器 Systemd 服务
运行以下命令启动并启用 rsyslog-server 容器的 systemd 服务
$ cd .config/systemd/user/
$ systemctl --user daemon-reload
$ systemctl --user enable container-rsyslog-server.service
$ systemctl --user restart container-rsyslog-server.service
验证 systemd 服务状态和容器状态
$ systemctl --user status container-rsyslog-server.service
$ podman ps
当系统重新启动时,容器将通过它的 systemd 服务自动启动。我们重启一次并验证容器服务。
$ sudo reboot
系统重启后,然后登录系统并验证容器服务
$ podman ps
$ cd .config/systemd/user/
$ systemctl --user status container-rsyslog-server.service
很好,这确认了 rsyslog-server 容器在重启后通过它的 systemd 服务成功自动启动。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。