容器很棒,允许您将应用程序及其依赖项打包并在任何地方运行。从2013年的Docker开始,容器让软件开发人员的生活变得更加轻松。Docker的一个缺点是它有一个以root身份运行的中央守护进程,这会带来安全隐患。但这就是Podman的用武之地。Podman是一个无守护进程的容器引擎,用于在Linux系统上以根模式或无根模式开发、管理和运行OCI容器。以下是一些您可以用来了解更多关于Podman的文章:使用Podman以非根用户身份运行Linux容器在Fedora上使用Podman的Pod在Fedora中使用具有功能的Podman这是一种用于编排可能相互依赖的多个容器的工具。要了解有关DockerCompose的更多信息,请参阅其文档。什么是PodmanCompose?PodmanCompose项目旨在替代DockerCompose,而无需对docker-compose.yaml文件进行任何修改。由于PodmanCompose适用于podpod,因此很高兴看到“pod”的最新定义。“podpod”(例如鲸鱼荚或豌豆荚)是一组一个或多个容器,具有共享存储/网络资源,以及如何运行容器的规范。Pods-KubernetesDocumentation(LCTT译注:容器技术领域使用了很多航海的比喻,pod这个词的意思是“pods”,在航海领域就是“pods”的意思——都是指容纳多个物品的容器。通常不是翻译过来,考虑上下文,可以翻译成“pod”。)PodmanCompose的基本思想是选择docker-compose.yaml文件中定义的服务,并为每个服务创建一个容器。DockerCompose和PodmanCompose之间的一个主要区别是PodmanCompose将整个项目的容器添加到一个pod中,并且所有容器共享同一个网络。正如您在示例中看到的,在创建容器时使用--add-host标志,它甚至以与DockerCompose相同的方式命名容器。可以在项目页面上找到安装PodmanCompose的完整安装说明,它有几种方法。要安装最新的开发版本,请使用以下命令:pip3installhttps://github.com/containers/podman-compose/archive/devel.tar.gz确保您还安装了Podman,因为您也需要它。在Fedora上,使用以下命令安装Podman:sudodnfinstallpodman示例:使用PodmanCompose启动WordPress网站假设您的docker-compose.yaml文件位于名为wpsite的文件夹中。WordPress站点的典型docker-compose.yaml(或docker-compose.yml)文件如下所示:version:"3.8"services:web:image:wordpressrestart:alwaysvolumes:-wordpress:/var/www/html端口:-8080:80环境:WORDPRESS_DB_HOST:dbWORDPRESS_DB_USER:杂志WORDPRESS_DB_NAME:杂志WORDPRESS_DB_PASSWORD:1maGazine!WORDPRESS_TABLE_PREFIX:czWORDPRESS_DEBUG:0depends_on:-dbnetworks:-wpnetdb:image:mariadb:10.5restart:alwaysports:-6603:3306volumes:-wpdbvol:/var/lib/mysql环境:MYSQL_DATABASE:杂志MYSQL_USER:杂志MYSQL_PASSWORD:1maGazine!MYSQL_ROOT_PASSWORD:1maGazine!networks:-wpnetvolumes:wordpress:{}wpdbvol:{}networks:wpnet:{}了解Docker,你就会知道你可以运行docker-composeup来启动这些服务。DockerCompose将创建两个名为wpsite_web_1和wpsite_db_1的容器,并将它们连接到名为wpsite_wpnet的网络。现在,看看在项目目录中运行podman-composeup时会发生什么。首先,创建一个以执行命令的目录命名的pod。接下来,它会查找YAML文件中定义的任何名称的卷,如果不存在则创建它们。然后,为YAML文件的服务部分中列出的每个服务创建一个容器,并将其添加到容器中。容器的命名类似于DockerCompose。例如,为您的Web服务创建一个名为wpsite_web_1的容器。PodmanCompose还会为每个命名容器添加一个本地主机别名。之后,容器仍然可以通过名称相互解析,尽管它们不像Docker那样位于桥接网络上。为此,请使用选项-add-host。例如,-add-hostweb:localhost。请注意,docker-compose.yaml包含从主机端口8080到容器端口80的Web服务的端口转发。您现在应该能够通过浏览器在http://localhost:8080访问您的新WordPress实例。WordPressDashboard控制pod和容器要查看正在运行的容器,请使用podmanps,它可以显示web和数据库容器以及pod中的基础设施容器。CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESa364a8d7cec7docker.io/library/wordpress:latestapache2-foregroun...2小时前Up2小时前0.0.0.0:8080->80/tcp,0.0.0.0:6603->3306/tcpwpsite_web_1c447024aa104docker.io/library/mariadb:10.5mysqld2小时前Up2小时前0.0.0.0:8080->80/tcp,0.0.0.0:6603->3306/tcpwpsite_db_112b1e3418.e3ek8/pause:3.2您还可以验证Podman是否已为此项目创建了一个pod,该pod以您从中执行命令的文件夹命名。PODIDNAMESTATUSCREATEDINFRAID#OFCONTAINERS8a08a3a7773ewpsiteDegraded2hoursago12b1e3418e3e3要停止容器,请在另一个命令窗口中输入以下命令:podman-composedown您也可以通过停止和删除pod来完成此操作。这实质上是在删除包含的pod之前停止并删除所有容器。因此,可以使用这些命令实现相同的目的:podmanpodstoppodnamepodmanpodrmpodname请注意,这不会删除您在docker-compose.yaml中定义的卷。因此,您的WordPress站点的状态将被保留,您可以通过运行此命令来恢复它。podman-composeup总而言之,如果您是Podman粉丝并使用Podman进行容器工作,则可以使用PodmanCompose来管理您的开发和生产容器。
