云网牛站
所在位置:首页 > Linux云服务器 > 在Linux系统中安装和使用Podman Compose管理容器

在Linux系统中安装和使用Podman Compose管理容器

2021-01-30 10:46:53作者:曼画月稿源:云网牛站

本文介绍在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实例:

在Linux系统中安装和使用Podman Compose管理容器

 

控制pod和容器

要查看正在运行的容器,请使用podman ps,它会显示Web和数据库容器以及Pod中的基础设施容器,大致如下图:

在Linux系统中安装和使用Podman Compose管理容器

您还可以验证Podman已为此项目创建了一个窗格,该窗格以您在其中发出命令的文件夹命名:

在Linux系统中安装和使用Podman Compose管理容器

要停止容器,请在另一个命令窗口中输入以下命令:

podman-compose down

您也可以通过停止并卸下pod来做到这一点。这实际上将停止并删除所有容器,然后删除包含的容器。因此,可以使用以下命令实现相同的目的:

podman pod stop podname

podman pod rm podname

请注意,这不会删除您在docker-compose.yaml中定义的卷。因此,WordPress网站的状态已保存,您可以通过运行以下命令将其取回:

podman-compose up

 

结论

通过以上操作,可以得出一个结论:如果您是Podman迷并且在Podman上进行容器工作,则可以使用Podman Compose在开发和生产中管理容器。

 

相关主题

将Docker/Podman容器作为系统服务运行

精选文章
热门文章