podman-compose 有前途吗?

news2025/8/3 4:15:52

在这里插入图片描述

文章目录

    • 1. 前言
    • 2. Docker Compose 和 Podman Compose 的历史
    • 3. 未来
    • 4. 观点
    • 5. 安装
      • 5.1 pip3 安装
      • 5.2 python 安装
      • 5.3 dnf 安装
    • 6. 示例

1. 前言

虽然 Kubernetes 已经发展成为容器编排的主导者,但人们仍然对管理较小规模的容器(通常是单个系统)有浓厚的兴趣。对于这些情况,多年来的首选工具一直是 Docker Compose。

在Podman 项目中,我们经常被问到有关 Docker Compose 的问题。Podman 是否支持 Docker Compose?Docker Compose v2 怎么样?什么是 Podman Compose,我应该使用它而不是 Docker Compose?这样对吗?

2. Docker Compose 和 Podman Compose 的历史

Docker Compose始于 2014 年,是一个基于YAML定义管理容器组的项目。这个 YAML 后来被赋予了正式的规范,即Compose 规范。该规范定义了一种结构化语言,使您可以轻松地在一台机器上运行多个容器。

这种多个容器的单一文件定义是直接从命令行运行这些容器的替代方法。

Docker Compose 是用 Python 编写的,并使用其 REST API与 Docker 守护进程通信。当 Podman 于 2018 年发布时,我们完全专注于与 Docker 命令行界面 (CLI) 的兼容性,并没有包括对 API 的支持。因此,Podman 最初无法与 Docker Compose 一起使用。许多人想使用 Podman 并保留他们现有的 Compose YAML 文件,因此一个名为Podman Compose的社区项目如雨后春笋般涌现。Podman Compose 处理 Compose 规范并将其转换为 Podman CLI 命令。

但是,Podman Compose 并不完美,因为它实现了 Docker Compose 的一部分功能。许多用户希望继续使用 Docker Compose 和其他直接连接到 Docker API 的工具。为了满足我们的社区和客户,Podman 在 2019 年添加了一个与 Docker 兼容的 API,但支持 Docker Compose 需要额外的工作,这发生在 2020 年。

Docker Compose 项目也没有闲着。2021 年,Docker Compose 项目公布了该工具在 Go 中的完全重写,称为 Docker Compose v2.0(较早的版本,v1.x 版本通常称为docker-compose,而 v2.x 称为docker compose)。重写需要额外的努力才能与 Podman 一起工作,于 2022 年推出 Podman v4.1(尽管对 Buildkit API 的支持仍在等待中)。

这仍然没有回答大多数人的问题:我应该使用 Podman Compose 还是 Docker Compose?这两个项目都不隶属于 Podman(Podman Compose 是一个社区项目,不由 Podman 团队直接维护)。两者都支持与 Podman 一起使用,并且 Podman 团队将修复 Podman 中阻止它们使用的任何错误(尽管工具本身的错误需要在那里修复)。

Podman Compose 更好地与 Podman 集成(因为它是为与 Podman 一起工作而设计的)并且可以更好地利用无根容器和 pod。然而,Docker Compose 是更有特色的选项,是 Compose 的参考实现。因此,您应该使用的答案是“视情况而定”。

Podman Compose 是更原生、更轻量级的解决方案。Podman Compose 直接执行 Podman 命令,而不是与 Podman 的 API 套接字通信。这消除了运行 Podman 服务来提供 API 的需要,节省了资源。因为它使用了 Podman 的常规命令行和 fork-exec 模型,所以更容易在系统上进行跟踪和管理。例如,Podman Compose 可以通过 systemd 单元文件轻松管理。

Docker Compose 具有更多功能。它与 Docker 和 Podman 兼容,因此更加通用。此外,它比 Podman Compose 拥有更多的用户,经过更广泛的测试,并且可能更稳定。

鉴于有充分的理由同时使用两者,Podman 致力于支持 Docker ComposePodman Compose,包括 Docker Compose 的两个主要版本。

3. 未来

Podman 团队并不专注于 Compose YAML。相反,我们正在努力开发podman generate kubepodman play kube,它允许Kubernetes YAML 以类似于 Compose 的方式直接与 Podman 一起使用。有了这些工具,我们就有了与更广泛的 Kubernetes 生态系统集成的优势。例如,在 Podman 上运行的容器podman play kube可以很容易地移动到 OpenShift (Kubernetes) 集群上,或者开发人员可以在他们的笔记本电脑上运行一个在 Kubernetes 中行为不端的 pod,以使用podman play kube.

我们认为 Podman 和 Kubernetes 之间的这种集成是一个强大的组合,这也是我们正在努力的方向。同时,我们认识到大多数人现在都在使用 Compose,并将继续使用多年。但是,我们希望用户选择转换为podman play kube,也许使用诸如From Docker Compose to Kubernetes with Podman 之类的指南。在可预见的未来,我们将支持 Docker Compose 和 Podman Compose with Podman。

4. 观点

  1. Red Hat 通常推荐Kubernetes YAML而不是Compose,我们正在努力制定一个路线图,通过使用 podman-play/generate-kube 功能(图像构建、应用程序拆卸)创建和使用 Kubernetes YAML 来提供越来越多类似 Compose 的功能、intiContainers 以及对 Kubernetes 原语的扩展支持)
  2. 如果你仍然想使用 Compose,Red Hat/RHEL 在 podman-composedocker-compose 之间是中立的
  3. Red Hat/RHEL 不提供 podman-compose 或 docker-compose,它是 BYO。
  4. 对于任何组合工具,红帽建议无根运行。这是一篇较旧的文章,它解释了为什么以 root 身份运行是不好的:为什么我们不允许非 root 用户在 CentOS、Fedora 或 RHEL 中运行 Docker
  5. podman-compose 实用程序是 GitHub 上 github.com/containers 项目的一部分,并与 Podman 紧密结合。它是第一个无根工作的组合工具。它与 Podman CLI 交互,部分原因是它是在 API 之前开发的,但更重要的是,因为 fork/exec 模型提供了一些优于使用基于 REST 的 API 的优势。例如,假设您正在容器中编译 Linux 内核。使用 fork/exec 模型,您可以使用本地目录中的所有数据,但使用 API,您必须跨套接字复制上下文目录才能进行构建。podman-compose 社区测试了 podman-compose,但似乎没有CI /CD。
  6. docker-compose 1.X 工具是 Docker 提供的 Python 脚本,更符合 Docker 项目,但完全适用于 Podman socket/API。Podman社区确实有针对 docker-compose 无根和有根的上游 CI/CD 测试。下游 RHEL 产品确实有 docker-compose 测试以确保没有回归。
  7. docker-compose 2.X 工具是 Docker 提供的 Golang 二进制文件,更符合 Docker 项目。今天,docker-compose 2.X 二进制文件不能与 Podman 套接字/API 一起使用,但团队正在研究如何让它工作。新的 docker-compose 2.X 实用程序扩展了对 Docker API 的扩展,并利用了作为 BuildKit 一部分的新 API 调用,因此还有一些工作要做。

貌似podman-compose不值得我们深入的探究。不过我们可以尝试简单的试玩。

参考:Should I Use Docker Compose Or Podman Compose With Podman?

5. 安装

5.1 pip3 安装

sudo -H pip3 install --upgrade pip

在这里插入图片描述

pip3 install podman-compose

在这里插入图片描述
仅为当前用户安装,请添加--user标志:

pip3 install podman-compose --user

GitHub 上提供了 Podman Compose 的最新开发版本。奥,最新 版本还是2021年的,看来确实没人在更新它了,使用以下命令安装它:

sudo pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

在这里插入图片描述

5.2 python 安装

sudo curl -o /usr/local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py
chmod +x /usr/local/bin/podman-compose

5.3 dnf 安装

sudo dnf install podman-compose

6. 示例

  1. compose.yml文件创建一个目录并转到该目录。
mkdir plex-test && cd plex-test
  1. 创建compose.yml。
nano compose.yml

编写

services:
  plex:
    image: docker.io/linuxserver/plex
    container_name: plex
    network_mode: host
    environment:
      - VERSION=podman
    restart: always
    volumes:
      - ${PLEX_MEDIA_PATH}:/media/
  1. 启动
podman-compose up &

当用户发出podman-compose up命令时,Podman Compose 会执行一系列任务:

  • 创建一个名称与当前目录名称相对应的 pod。
  • 检查compose.yml中指定的卷是否存在并创建缺少的卷。
  • 为compose.yml中定义的每个服务创建一个容器。
  • 将容器添加到 pod
  1. 检查部署
podman pod ls

在这里插入图片描述
6. 访问:http://localhost:32400/web,浏览器会将您重定向到 Plex 登录页面。
在这里插入图片描述

参考:

  • Podman Compose - Managing Containers
  • containers/podman-compose
  • How to Install Podman on RHEL/CentOS 7/8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7—安装mysql

文章目录1.1 卸载MariaDB1.2 官网下载包文件1.3 解压安装包1.4 安装相关的Mysql服务1.5 开启Mysql服务1.1 卸载MariaDB 由于centOS7中默认安装了MariaDB,需要先进行卸载 rpm -qa | grep -i mariadb #查找本地mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.aarch64 #这个…

nuxt 如何生成sitemap.xml 动静态站点地图

前言 sitemap.xml的作用是将我们网站的所有页面都被SEO(浏览器搜索引擎)收录,我们网站的内容更容易被用户搜到,同时增加我们的网站的知名度,排名更靠前。简言之就是用技术做网站推广,所以对于网站推广sitem…

JVM【类加载与GC垃圾回收机制】

JVM【类加载与GC垃圾回收机制】🍎一.JVM🍒1.1JVM简介🍒1.2JVM执行流程🍎二.JVM运行时数据区🍒2.1 程序计数器(线程私有)🍒2.2 栈(线程私有)🍒2.3 堆(线程共享)🍒2.4 方法区(线程共享…

Matlab图像处理基础(part 1)

目录 0. 概要 1. 图像表示 Image Representation 1.1 图像格式 Image format 1.2 图像分辨率 resolution of image 1.3 图像的编码 1.4 Matlab图像加载、显示和保存 1.5 Image Information 1.6 图像格式转换 1.7 其它类型的像素 1.8 像素数值格式 1.9 图像数据的访问…

vue实现防抖函数、节流函数,全局使用【输入框、按钮】

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【vue实现防抖函数、节流函数,全局使用…

第一章《初学者问题大集合》第4节:Java程序是如何执行的

想要学好Java编程,就必须先弄清楚Java程序是如何执行的。首先来解释一个最基本的概念:什么是程序?把你想让计算机做的事情用编程语言一条条列出,这个由多条编程语言所组成的“代码序列”就是程序。 那么Java程序又是如何运行的呢?这个过程如图1-1所示。 图1-1 Java程序运…

C语言小游戏之三子棋(井字棋)(1.5w字超详细讲解)

hello,csdn的伙伴们,大家好,我们已经学习到了分支与循环,函数,数组这三大块知识,那么我们现在就可以尝试综合运用前面所学的知识,来完成一个简单的小游戏-----三子棋(井字棋&#xf…

Allegro DFM Ravel Rule工具使用指导书

Allegro DFM Ravel Rule工具使用指导书 Allegro任何一个版本都支持DFM Ravel Rule检查,即便是166的版本 打开后的界面如下所示 可以检查项目 测试点,阻焊,走线,丝印,过孔,milling,装配,outline相关的DFM检查 可以让违反规则的设计处以DRC的形式报出来 避免加工问题 …

基于数字孪生打造智慧园区运营平台,助力园区数字化转型

在各行各业数字化转型的浪潮中,园区也在经历数字化转型发展,从传统园区向智慧园区不断演进。传统园区缺乏系统性规划,基于单点功能建设,存在系统孤立、管理粗放且服务不足等问题,难以满足人们日益增长的多样化需求。在…

第四章. Pandas进阶—数据合并

第四章. Pandas进阶 4.6 数据合并 数据合并主要使用的是Merge方法和Concat方法 1.数据合并(merge函数) 1).语法: pandas.merge(right,how‘inner’, on“None”, left_on“None”, right_on“None”, left_indexFalse, right_indexFalse... )参数说明: right&…

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖,溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等。在水中有很好的溶解性 中文名称:甘露糖-马来酰亚胺 英文名称:mannose-MAL 别称:…

【LeetCode 每日一题】53. 最大子数组和

01 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 02 示例 示例1: 输入:nums [-2,1,-3,4,-1,2,1,-5…

从 React 源码彻底搞懂 Ref 的全部 api

ref 是 React 里常用的特性,我们会用它来拿到 dom 的引用。 它一般是这么用的: 函数组件里用 useRef: import React, { useRef, useEffect } from "react";export default function App() {const inputRef useRef();useEffect(…

几乎涵盖了近半年90%的Java面试题,可以肝起来了

前言 很多人在问:八股文还有必要背吗? 近半年来大家听到的、用到的不少,带来的争议也不断。 有人奉为面试神器,全文背诵。有人觉得八股文铺天盖地实际作用不大,还害人不浅… 我觉得不是背不背八股文的问题&#xff0c…

【机器学习并行计算】2 parameter server参数服务器

使用ps实现异步梯度下降。 14年提出的。 异步 vs 同步 可以看出异步运行效率非常高。 异步梯度下降的流程 ps架构流程 worker: 首先从参数服务器拉取最新的参数;然后用自己节点上的数据计算梯度;最后把梯度推给参数服务器参数服务器&#xf…

最快速的文件传输软件,解析镭速文件传输软件

想到每天都需要进行文件传输,就会烦躁,要是有一夸最快速的文件传输软件的话,这样就可以节省大量的时间了,那么针对于用户的这一个需求,我们来介绍一下镭速的文件传输软件,看是否是那么快,快到你…

无监督端到端框架:IVIF

VIF-Net: An Unsupervised Framework for Infrared and Visible Image Fusion ( VIF-Net: 红外和可见光图像融合的无监督框架) (本文理解上的难易程度:易) 在本文中,我们提出了一种用于红外和可见图像融合…

css 动画实现节流效果

今天在做节流操作时,无意间看到可以用css动画去实现节流效果,然后一顿操作发现果然可以,记录一下 CSS pointer-events 属性 一、 用css中的pointer-events(指针事件)、animation(动画)以及:act…

WordPress做缓存Memcached Is Your Friend+Batcache

宝塔面板有两个地方有Memcached,一个是在软件商店的运行环境里面,一个是在php扩展里面,我们先安装PHP扩展中的Memcached ,然后wp后台搜索Memcached Is Your Friend安装插件。WordPress做缓存很给力。缓存命中率保持在 90%以上的WordPress 本地缓存加速方案。 默认我们看到命…

E-Payment Integrator Delphi Edition

E-Payment Integrator Delphi Edition 通过为组件提供处理信用卡和电子支票交易的直观界面,减轻了集成电子支付支持的复杂性。开发人员无需学习复杂的套接字编程或安全实现。通过使用电子支付集成器,开发人员能够针对当前支持的任何支付网关进行定位和开…