Docker Compose对Docker Swarm和Docker Stack有什么好处?

时间:2017-05-09 16:22:04

标签: docker docker-compose docker-swarm linux-containers

从我读到的内容看来,Docker-Compose是一个在单个主机上创建多个容器的工具,而Docker Swarm是一个可以完全相同但具有更多控制权的工具,在Docker的帮助下可以在多个主机上完成堆。我浏览了这个教程并且也遇到了这个帖子:

docker-compose.yml vs docker-stack.yml what difference?

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

似乎Docker-compose出现在swarm和堆栈之前,可能是swarm + stack的新解决方案使得compose过时了,但它仍然是遗留原因。这个想法是否正确?如果没有,Docker-Compose在开发或生产环境方面对Docker Swarm和Docker Stack有什么好处?

2 个答案:

答案 0 :(得分:8)

  

似乎Docker-compose出现在swarm和堆栈之前,可能是swarm + stack的新解决方案使得compose过时了,但它仍然是遗留原因。这种想法是否正确?

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

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

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

我不清楚Docker Swarm部署内容是否实际使用libcompose。在我粗略的搜索中,Swarm模式似乎实现libcompose并做自己的事情。我不确定这与Docker Compose和libcompose的未来有何关系。你认为合适的解释......

答案 1 :(得分:3)

从我发现的内容:What's the difference between Docker Swarm, Docker Compose and Docker Networks?

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

  

因此,在我们的场景中,您将使用Docker Compose来实现 - #2 *¹。您将定义一个spec文件,您可以在其中定义容器必须为每个组件构建的方式 - db,app和web tier。您还可以指定它们如何相互作用。每个和许多其他事情的实例数。

     

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

           

Compose is a tool for defining and running multi-container Docker applications.

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

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

      

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

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

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