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

Mar*_*ler 5 systemd docker-compose podman

我正在从 docker 迁移到 podman(不直接迁移到 kubernetes,因为在这一点上这肯定是矫枉过正的)。

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

podman 的做法是让 systemd 单元文件相互依赖,并让 systemd 进行监控和启动(和关闭)。

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

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

Eri*_*und 2

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
Run Code Online (Sandbox Code Playgroud)

(我写了另一个Stackoverflow 答案,其中包含更多详细信息)

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

(参见手册页

使用 Podman 从 Docker Compose 到 Kubernetes一文讨论了相关主题:如何将Docker Compose YAML转换 为Kubernetes YAML