乐趣区

关于容器服务:如何让Podman容器作为系统服务运行

家喻户晓,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 服务胜利主动启动。

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)
退出移动版