云网牛站
所在位置:首页 > Linux云服务器 > 在Fedora Linux系统上用Docker Compose和Podman编排容器

在Fedora Linux系统上用Docker Compose和Podman编排容器

2021-07-15 10:40:33作者:区小凡稿源:云网牛站

本文介绍使用Docker Compose和Podman在Fedora Linux系统上编排容器的方法,内容有:Podman和Docker Compose、所需软件、设置Podman套接字、使用Docker Compose运行示例项目、使用Rootless Podman运行Docker Compose。

 

前言

Docker Compose是开发人员用于在本地或生产中编排容器的开源工具。参考在Fedora 29/Fedora 28上安装Docker Compose的方法

Podman是Docker CLI的强大替代品,最近吸引了很多开发人员。然而,Podman用户面临着挑战。Docker Compose预计只能与Docker守护进程一起使用。因此,Podman用户必须使用Docker Compose的其他替代方案,例如使用Podman Compose运行在Podman pod内的Compose文件中定义的服务。另一种方法是手动运行应用程序的不同容器,然后使用podman generate生成一个Kubernetes文件,稍后使用podman play重新运行。

 

Podman和Docker Compose

前面提到的两种Docker Compose替代方案都有其局限性。至少他们需要你知道的不仅仅是容器和Docker基础知识。好消息是Podman从3.0版开始增加了对Docker Compose的支持,所以您现在可以使用Podman后端运行传统的docker-compose.yml文件。Podman通过为docker-compose设置一个UNIX套接字来进行交互,类似于Docker守护进程。在本文中,我将向您展示如何将Docker Compose与rootful和rootless Podman一起使用。

 

所需软件

在您的系统上安装以下软件包以使用Podman运行Docker Compose:

podman:管理容器的工具。

docker-compose:编排容器的工具。

podman-docker:安装一个名为docker的脚本,该脚本使用Podman模拟docker CLI。还链接Docker CLI手册页和podman。

使用dnf安装上述软件包:

sudo dnf install -y podman podman-docker docker-compose

 

设置Podman套接字

设置Podman套接字以便Docker Compose工作:

sudo systemctl enable podman.socket

sudo systemctl start podman.socket

sudo systemctl status podman.socket

这将设置一个Unix套接字以与Docker Compose通信并将其符号链接到/var/run/docker.sock。要测试您是否可以与套接字通信,请运行以下curl命令:

sudo curl -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping

如果上述命令的输出正常,则表示您的设置成功。

 

使用Docker Compose运行示例项目

现在,您可以通过转到项目文件夹并运行sudo docker-compose up来开始编排项目。例如,我将使用我创建的示例WordPress项目中的docker-compose.yml作为本文的演示。您可以在https://github.com/djnotes/wp-compose-sample找到它。克隆系统上的存储库,并从目录中启动docker-compose:

sudo docker-compose up

如果一切顺利,您将看到docker-compose调出compose YAML文件中定义的服务。创建容器后,通过http://localhost:8080访问新的WordPress实例。要停止项目,您可以在执行docker-compose up的终端中按Ctrl+C。要删除容器,请执行:

sudo docker-compose down

 

使用Rootless Podman运行Docker Compose

上面显示的设置在root-ful模式下使用Podman。请注意大多数使用的命令前面的sudo关键字。通常,您不需要以root身份运行您的项目。因此,可以选择以普通用户身份运行docker-compose非常方便。从3.2.0版本开始,Podman支持Docker-Compose和rootless Podman。但是,设置更改如下:

systemctl --user enable podman.socket

systemctl --user start podman.socket

systemctl --user status podman.socket

export DOCKER_HOST=///run/user/$UID/podman/podman.sock

请注意,当以非root用户身份启动podman套接字时,将在/run/user/$UID/podman/podman.sock中创建用户级套接字,其中$UID指的是非root用户的用户ID。我们需要将DOCKER_HOST环境变量设置为该套接字,以便Docker Compose可以与正确的套接字通信。您可以将环境变量添加到您的~/.bash_profile以使其在系统重新启动后保持不变。在root-ful模式下,套接字在/run/podman/podman.sock中创建,它被符号链接到/var/run/docker.sock(docker-compose二进制文件预期的默认套接字)。所以,我们不需要设置DOCKER_HOST变量。

现在,在无根模式下,我们可以简单地在项目根文件夹中运行命令docker-compose up而没有“sudo”。这将打开我们在Docker Compose上运行的WordPress站点,并带有Podman后端:

在Fedora Linux系统上用Docker Compose和Podman编排容器

以上就是使用Docker Compose和Podman后端运行的WordPress实例。

 

相关主题

在Fedora操作系统上将pod与Podman一起使用

精选文章
热门文章