本文介绍在Linux系统中安装和使用Podman Compose管理容器的方法,以Fedora发行版为例说明,内容有:什么是Podman Compose、安装Podman Compose的方法、使用Podman Compose启动WordPress网站的示例、控制pod和容器。
前言 容器可以让您打包应用程序及其依赖项,并在任何地方运行。从2013年Docker开始,容器已使软件开发人员的工作变得更加轻松。Docker的缺点之一是它有一个以root用户身份运行的中央守护程序,这具有安全隐患,但这是Podman派上用场的地方。Podman是无守护程序容器引擎,用于以root或无根模式在Linux系统上开发、管理和运行OCI容器。
什么是Podman Compose? 如果您曾经使用过Docker,那么您也有可能了解Docker Compose,它是用于编排几个可能相互依赖的容器的工具。 简单的说,Podman Compose是一个项目,其目标是用作Docker Compose的替代产品,而无需在docker-compose.yaml文件中进行任何更改。 Podman Compose背后的基本思想是,它选择docker-compose.yaml文件中定义的服务,并为每个服务创建一个容器。Docker Compose和Podman Compose之间的主要区别是Podman Compose将容器添加到整个项目的单个pod中,并且所有容器共享同一网络。它甚至在创建容器时都使用‐‐add-host标志,以与Docker Compose相同的方式命名容器。 参考:在CentOS 7、Fedora 30/29/28上安装Podman的方法、在Fedora操作系统上将pod与Podman一起使用。
安装Podman Compose的方法 Podman Compose的安装非常的简单,请看如下说明: 1、如果使用的是Fedora 31或更高版本,可从存储库安装: sudo dnf install podman-compose 2、可从PyPI安装最新的稳定版本: pip3 install podman-compose 注:通过--user可以在没有root用户的情况下安装在普通用户家中。 3、如果要安装最新的开发版本,请使用以下命令: pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz 确保还安装了Podman,因为您也将需要它,在Fedora系统上,要安装Podman,请使用以下命令: sudo dnf install podman
示例:使用Podman Compose启动WordPress网站 假设您的docker-compose.yaml文件位于名为wpsite的文件夹中。WordPress网站的典型docker-compose.yaml(或docker-compose.yml)如下所示: version: "3.8" services: web: image: wordpress restart: always volumes: - wordpress:/var/www/html ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: magazine WORDPRESS_DB_NAME: magazine WORDPRESS_DB_PASSWORD: 1maGazine! WORDPRESS_TABLE_PREFIX: cz WORDPRESS_DEBUG: 0 depends_on: - db networks: - wpnet db: image: mariadb:10.5 restart: always ports: - 6603:3306 volumes: - wpdbvol:/var/lib/mysql environment: MYSQL_DATABASE: magazine MYSQL_USER: magazine MYSQL_PASSWORD: 1maGazine! MYSQL_ROOT_PASSWORD: 1maGazine! networks: - wpnet volumes: wordpress: {} wpdbvol: {} networks: wpnet: {} 如果您来自Docker,那么您可以通过运行docker-compose启动这些服务。Docker Compose将创建两个名为wpsite_web_1和wpsite_db_1的容器,并将它们附加到名为wpsite_wpnet的网络上。 现在,查看在项目目录中运行podman-compose时发生的情况。首先,创建一个Pod,以发出命令的目录命名。接下来,它将查找YAML文件中定义的所有命名卷,并创建不存在的卷。然后,为YAML文件的services部分中列出的每个服务创建一个容器,并将其添加到容器中。 容器的命名与Docker Compose相似。例如,对于您的Web服务,将创建一个名为wpsite_web_1的容器。Podman Compose还将localhost别名添加到每个命名容器。然后,尽管容器不在Docker网络中,但它们仍可以按名称相互解析。为此,请使用选项–add-host。例如,–add-host web:localhost。 请注意,docker-compose.yaml包含从主机8080端口到Web服务的容器80端口的端口转发。您现在应该可以使用地址http://localhost:8080从浏览器访问您的新WordPress实例:
控制pod和容器 要查看正在运行的容器,请使用podman ps,它会显示Web和数据库容器以及Pod中的基础设施容器,大致如下图:
您还可以验证Podman已为此项目创建了一个窗格,该窗格以您在其中发出命令的文件夹命名:
要停止容器,请在另一个命令窗口中输入以下命令: podman-compose down 您也可以通过停止并卸下pod来做到这一点。这实际上将停止并删除所有容器,然后删除包含的容器。因此,可以使用以下命令实现相同的目的: podman pod stop podname podman pod rm podname 请注意,这不会删除您在docker-compose.yaml中定义的卷。因此,WordPress网站的状态已保存,您可以通过运行以下命令将其取回: podman-compose up
结论 通过以上操作,可以得出一个结论:如果您是Podman迷并且在Podman上进行容器工作,则可以使用Podman Compose在开发和生产中管理容器。
相关主题 |