12

从我读到的内容看来,Docker-Compose 是一个在单个主机上创建多个容器的工具,而 Docker Swarm 是一个可以做完全相同的事情但在 Docker Stack 的帮助下在多个主机上进行更多控制的工具。我浏览了教程,也遇到了这个线程:

docker-compose.yml vs docker-stack.yml 有什么区别?

我得出的结论是,当您可以将 Docker Swarm 与 Docker Stack 一起使用时,就没有理由使用 Docker-Compose。他们甚至可以使用相同的 docker-compose.yml。

似乎 Docker-compose 出现在 swarm 和 stack 之前,也许 swarm + stack 的新解决方案使 compose 过时了,但由于遗留原因,它仍然存在。这种想法正确吗?如果不是,Docker-Compose 在开发或生产环境方面比 Docker Swarm 和 Docker Stack 有什么好处?

4

2 回答 2

10

似乎 Docker-compose 出现在 swarm 和 stack 之前,也许 swarm + stack 的新解决方案使 compose 过时了,但由于遗留原因,它仍然存在。这种想法正确吗?

简而言之,是的。Compose 出现在所有 Swarm 东西之前(它起源于名为 的 3rd 方实用程序fig)。更糟糕的是,甚至还有两种不同的 Swarm,旧的 Swarm(一个单独的工具)和 Swarm 模式(docker这些天内置在二进制文件中)。

它似乎正在演变成内置于 Docker 中的服务和部署概念。但我猜 Docker Compose 和 Swarm Mode 部署的东西会并存一段时间。

知道 Docker Compose 基础作为一个名为libcompose( https://github.com/docker/libcompose ) 的库也是有益的,其他 3rd 方实用程序利用它来支持docker-compose.yml部署文件格式(参见 Rancher 和rancher-compose作为示例)。我想他们会努力继续支持libcompose.

我不清楚 Docker Swarm 部署的东西是否真的使用libcompose. 在我粗略的搜索中,似乎 Swarm 模式没有实现libcompose并且做了自己的事情。我不确定这与 Docker Compose 和libcompose. 解释你认为合适的...

于 2017-05-09T17:21:33.200 回答
3

根据我的发现:Docker Swarm、Docker Compose 和 Docker Networks 有什么区别?

Docker Compose是一个客户端工具,允许您运行具有多个组件的应用程序堆栈。

因此,在我们的场景中,您将使用 Docker Compose 来实现 - #2*¹。您将定义一个规范文件,您将在其中定义如何为每个组件(数据库、应用程序和 Web 层)构建容器。您还可以指定它们之间的交互方式。每个和许多其他事物的多少实例。

*¹ 现在您需要启动具有 Web 层、应用程序层和数据库层的应用程序堆栈。


Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

Docker Swarm是一项服务器端功能,可让您:

  • swarm 是一个 docker 节点(机器)集群,充当启动多个容器的底层资源。可以跨集群编排和部署服务。

    您可以将多个节点组合为一个集群,然后向该集群发送“docker run”命令(实际上是发送到 Swarm 管理器节点),Swarm 将在其中一个节点上处理调度(启动)该容器。

  • 允许跨所有节点的容器相互通信

查看官方文档:Swarm mode overview & Docker Compose

于 2017-07-11T18:31:13.737 回答