Podman:将 docker-compose 文件转换为 systemd 单元文件的方法

Podman:将 docker-compose 文件转换为 systemd 单元文件的方法

我正在从 docker 迁移到 podman(不会直接使用 kubernetes,因为那样肯定会有点过度)。

现在,许多优雅的配置都可以作为 docker-compose 设置 - 但是 docker-compose 依赖于 docker 守护进程来启动(并保持运行)相互依赖的容器。

podman 实现这一点的方法是让 systemd 单元文件相互依赖,并让 systemd 进行监控、启动(和关闭)。

现在,手动将 docker-compose 设置转换为单元文件容易出错,而且有点繁琐。

是否有已知的合理 docker-compose 兼容读取器来源,我可以设置它来生成 systemd 单元文件?

答案1

2024 年 4 月 11 日更新

命令行工具podlet 从 podman 命令或组合文件生成 podman quadlet 文件。

该命令podman generate systemd已弃用。Podman 开发团队现在建议改用 quadlet 文件(请参阅podman-systemd.unit(5)/usr/libexec/podman/quadlet)。这些文件将通过 中描述的方法自动转换为 systemd 服务单元systemd.generator(7)

旧答案

Podman 3.0(2021 年 2 月发布)引入了对该标准的支持docker-compose。Podman 现在对 Docker REST API 的支持已经足够好,能够满足 docker-compose 的需求。

虽然我还没有测试过,但我希望以下方法可以将 docker-compose YAML 转换为 systemd 服务文件:

  1. 启动 docker-compose
export DOCKER_HOST=unix:///some/path/podman.sock
docker-compose up -d

(我又写了一篇Stackoverflow 答案详细信息)

  1. 尝试识别 docker-compose 启动的 Podman 容器的名称:
podman container list
  1. 从这些容器生成 systemd 服务文件
podman generate systemd --new --files --name containername

(见手册页

文章使用 Podman 从 Docker Compose 转换到 Kubernetes讨论相关主题:如何转换Docker 撰写 YAMLKubernetes YAML

相关内容