跳至内容

简介

Podman 是一个与 Docker 兼容的替代容器运行时,与 Docker 不同的是,它包含在 Rocky Linux 存储库中,并且可以将容器作为 systemd 服务运行。

安装 Podman

使用 dnf 实用程序安装 Podman

dnf install podman

添加容器

让我们以运行 Nextcloud 自托管云平台为例

podman run -d -p 8080:80 nextcloud

您将收到一个提示,选择要从中下载容器的容器注册表。在我们的示例中,我们将使用 docker.io/library/nextcloud:latest

下载 Nextcloud 容器后,它将运行。

在您的网络浏览器中输入 **ip_address:8080**(假设您在 firewalld 中打开了端口)并设置 Nextcloud

Nextcloud in container

将容器作为 systemd 服务运行

使用 quadlet

从 4.4 版本开始,Podman 附带了 Quadlet,一个 systemd 生成器,可以为无根和有根 systemd 服务生成单元文件。

有根服务的 Quadlet 文件可以放置在

  • /etc/containers/systemd/
  • /usr/share/containers/systemd/

而无根文件可以放置在以下任一位置:

  • $XDG_CONFIG_HOME/containers/systemd/~/.config/containers/systemd/
  • /etc/containers/systemd/users/$(UID)
  • /etc/containers/systemd/users/

虽然支持单个容器、Pod、镜像、网络、卷和 kube 文件,但让我们专注于我们的 Nextcloud 示例。使用以下内容创建一个新文件 ~/.config/containers/systemd/nextcloud.cotainer

[Container]
Image=nextcloud
PublishPort=8080:80

许多其他选项可用。

要运行生成器并让 systemd 知道有新服务运行,请运行

systemctl --user daemon-reload

现在运行您的服务,请运行

systemctl --user start nextcloud.service

注意

如果您在有根服务的目录中创建了文件,请省略 --user 标志。

要让容器在系统启动或用户登录时自动运行,您可以在 nextcloud.container 文件中添加另一个部分

[Install]
WantedBy=default.target

由于生成的 service 文件被认为是临时的,因此无法通过 systemd 启用它们。为了减轻这种影响,生成器在生成期间手动应用安装。这也有效地启用了这些 service 文件。

其他文件类型也受支持:pod、volume、network、image 和 kube。Pod 例如,可以用来对容器进行分组 - 生成的 systemd service 及其依赖项(在容器之前创建 pod)会由 systemd 自动管理。

使用 podman generate systemd

Podman 还提供 generate systemd 子命令。它可以用来生成 systemd service 文件。

警告

generate systemd 现在已弃用,不会再添加新功能。建议使用 Quadlet。

现在让我们用 Nextcloud 来做。运行

podman ps

您将获得运行容器的列表

04f7553f431a  docker.io/library/nextcloud:latest  apache2-foregroun...  5 minutes ago  Up 5 minutes  0.0.0.0:8080->80/tcp  compassionate_meninsky

如上所示,我们的容器名称是 compassionate_meninsky

要为 Nextcloud 容器制作一个 systemd service 并将其在重启时启用,请运行以下命令:

podman generate systemd --name compassionate_meninsky > /usr/lib/systemd/system/nextcloud.service
systemctl enable nextcloud

用您的容器的分配名称替换 compassionate_meninsky

当您的系统重新启动时,Nextcloud 将在 Podman 中重新启动。

作者:Neel Chauhan

贡献者:Steven Spencer、Ganna Zhyrnova、Christian Steinert