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

Docker Compose对Docker Swarm和Docker Stack有什么好处?,docker,docker-compose,docker-swarm,linux-containers,Docker,Docker Compose,Docker Swarm,Linux Containers,从我所读到的内容来看,Docker Compose似乎是一种在单个主机上创建多个容器的工具,而Docker Swarm则是一种可以做完全相同的事情的工具,但在Docker Stack的帮助下,在多个主机上有更多的控制。我阅读了教程,也遇到了以下问题: 我得出的结论是,如果可以使用Docker Swarm和Docker Stack,那么就没有理由使用Docker Compose。他们甚至可以使用相同的docker-compose.yml Docker compose似乎先于swarm和stack

从我所读到的内容来看,Docker Compose似乎是一种在单个主机上创建多个容器的工具,而Docker Swarm则是一种可以做完全相同的事情的工具,但在Docker Stack的帮助下,在多个主机上有更多的控制。我阅读了教程,也遇到了以下问题:

我得出的结论是,如果可以使用Docker Swarm和Docker Stack,那么就没有理由使用Docker Compose。他们甚至可以使用相同的docker-compose.yml

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

Docker compose似乎先于swarm和stack,swarm+stack的新解决方案可能会使compose过时,但由于遗留的原因,它仍然存在。这种想法正确吗

简言之,是的。Compose比Swarm更重要(它起源于名为
fig
)的第三方实用程序)。更糟糕的是,甚至有两种不同的群集,旧群集(一种是单独的工具)和群集模式(现在内置在
docker
二进制文件中)

它似乎正在演变为Docker内置的服务和部署概念。但我猜Docker Compose和Swarm模式部署的东西会共存一段时间

知道Docker Compose基础是一个名为
libcompose
()的库也是有益的,其他第三方实用程序利用它来支持部署的
Docker Compose.yml
文件格式(请参见Rancher和
Rancher Compose
)。我想他们会努力继续支持
libcompose

我不清楚Docker Swarm部署工具是否实际使用了
libcompose
。在我粗略的搜索中,Swarm模式似乎没有实现
libcompose
,而是做自己的事情。我不确定这与Docker Compose和
libcompose
的未来有何关系。根据我的发现,按照您认为合适的方式进行解释…

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

因此,在我们的场景中,您将使用Docker Compose来实现-#2*imk_。您将定义一个spec文件,在该文件中,您将定义如何为每个组件(db、app和web层)构建容器。您还可以指定它们之间的交互方式。每一个和许多其他事物的多少实例

*现在您需要启动具有web层、应用层和db层的应用程序堆栈


Docker Swarm是一种服务器端功能,使您能够:

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

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

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


查看官方文档,网址为:&

docker stack deploy-c中有几个键尚不受支持,尤其是
build
,因此您必须预构建映像。而且
docker stack deploy
需要部署一个Swarm,即使它只是本地节点。这就是说,
docker stack deploy-c
使用compose file语法支持几乎所有内容,并支持
deploy
键。如果您使用的不仅仅是“玩具”或示例容器,那么您会发现compose比stack更轻(启动时间更快),并且需要的内存更少。当然,它也是一个单独的安装,我相信它是基于python的。只要有可能,我会选择Stack——它是内置的,可能会得到更好的支持和更新的功能。