本文介绍使用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后端:
以上就是使用Docker Compose和Podman后端运行的WordPress实例。
相关主题 |