Docker Compose 比 Docker Swarm 和 Docker Stack 有什么好处?
What benefits does Docker Compose have over Docker Swarm and Docker Stack?
据我所知,Docker-Compose 是一种在单个主机上创建多个容器的工具,而 DockerSwarm 是一种可以做完全相同的事情但具有更多功能的工具在 Docker Stack 的帮助下控制和在多个主机上。我浏览了教程,也遇到了这个线程:
我得出的结论是,当您可以使用 Docker Swarm 和 Docker Stack 时,没有理由使用 Docker-Compose。他们甚至可以使用相同的 docker-compose.yml.
似乎 Docker-compose 出现在 swarm 和 stack 之前,也许 swarm + stack 的新解决方案使 compose 过时了,但由于遗留原因它仍然存在。这种想法对吗?如果不是,Docker-Compose 在开发或生产环境方面比 Docker Swarm 和 Docker Stack 有什么好处?
It seems that Docker-compose came before the swarm and stack and maybe the new solution of swarm + stack makes compose obsolete, but it still remains for legacy reasons. Is this thinking correct?
简而言之,是的。 Compose 出现在所有 Swarm 之前(它起源于名为 fig
的第 3 方实用程序)。更糟糕的是,甚至有两个不同的 Swarm,旧的 Swarm(那个是一个单独的工具)和 Swarm Mode(现在内置在 docker
二进制文件中)。
它似乎正在演变为内置于 Docker 中的服务和部署概念。但我猜 Docker Compose 和 Swarm Mode 部署的东西会并存一段时间。
知道 Docker Compose 基础作为一个名为 libcompose
(https://github.com/docker/libcompose) 的库存在也是有益的,其他第 3 方实用程序利用它来支持 docker-compose.yml
用于部署的文件格式(参见 Rancher 和 rancher-compose
作为示例)。我想他们会努力继续支持 libcompose
.
我不清楚 Docker Swarm 部署的东西是否真的使用 libcompose
。在我的粗略搜索中,Swarm 模式似乎 而不是 实现 libcompose
并且做它自己的事情。我不确定这与 Docker Compose 和 libcompose
的未来有何关系。按您认为合适的方式解释...
根据我的发现:What's the difference between Docker Swarm, Docker Compose and Docker Networks?
Docker Compose 是一个客户端工具,允许您运行 具有多个组件的应用程序堆栈。
So in our scenario you would use Docker Compose to achieve - #2*¹. You will define a spec file where you would define how a container has to built for each of your components - db, app and web tier. You can also specify how will those interact with each other. How many instance of each and many other things.
*¹ Now you have a requirement to start an application stack which has web tier, app tier and db tier.
Compose is a tool for defining and running multi-container Docker applications.
Docker Swarm 是一种服务器端功能,可让您:
Swarm 是一个 docker 节点(机器)集群,充当启动多个容器的底层资源。可以跨 swarm 编排和部署服务。
You can combine multiple nodes as a cluster and then send “docker run” command to this cluster (actually to the Swarm manager node) Swarm will handle scheduling(starting) this container on one of the nodes.
允许跨所有节点的容器相互通信
查看官方文档:Swarm mode overview & Docker Compose
据我所知,Docker-Compose 是一种在单个主机上创建多个容器的工具,而 DockerSwarm 是一种可以做完全相同的事情但具有更多功能的工具在 Docker Stack 的帮助下控制和在多个主机上。我浏览了教程,也遇到了这个线程:
我得出的结论是,当您可以使用 Docker Swarm 和 Docker Stack 时,没有理由使用 Docker-Compose。他们甚至可以使用相同的 docker-compose.yml.
似乎 Docker-compose 出现在 swarm 和 stack 之前,也许 swarm + stack 的新解决方案使 compose 过时了,但由于遗留原因它仍然存在。这种想法对吗?如果不是,Docker-Compose 在开发或生产环境方面比 Docker Swarm 和 Docker Stack 有什么好处?
It seems that Docker-compose came before the swarm and stack and maybe the new solution of swarm + stack makes compose obsolete, but it still remains for legacy reasons. Is this thinking correct?
简而言之,是的。 Compose 出现在所有 Swarm 之前(它起源于名为 fig
的第 3 方实用程序)。更糟糕的是,甚至有两个不同的 Swarm,旧的 Swarm(那个是一个单独的工具)和 Swarm Mode(现在内置在 docker
二进制文件中)。
它似乎正在演变为内置于 Docker 中的服务和部署概念。但我猜 Docker Compose 和 Swarm Mode 部署的东西会并存一段时间。
知道 Docker Compose 基础作为一个名为 libcompose
(https://github.com/docker/libcompose) 的库存在也是有益的,其他第 3 方实用程序利用它来支持 docker-compose.yml
用于部署的文件格式(参见 Rancher 和 rancher-compose
作为示例)。我想他们会努力继续支持 libcompose
.
我不清楚 Docker Swarm 部署的东西是否真的使用 libcompose
。在我的粗略搜索中,Swarm 模式似乎 而不是 实现 libcompose
并且做它自己的事情。我不确定这与 Docker Compose 和 libcompose
的未来有何关系。按您认为合适的方式解释...
根据我的发现:What's the difference between Docker Swarm, Docker Compose and Docker Networks?
Docker Compose 是一个客户端工具,允许您运行 具有多个组件的应用程序堆栈。
So in our scenario you would use Docker Compose to achieve - #2*¹. You will define a spec file where you would define how a container has to built for each of your components - db, app and web tier. You can also specify how will those interact with each other. How many instance of each and many other things.
*¹ Now you have a requirement to start an application stack which has web tier, app tier and db tier.
Compose is a tool for defining and running multi-container Docker applications.
Docker Swarm 是一种服务器端功能,可让您:
Swarm 是一个 docker 节点(机器)集群,充当启动多个容器的底层资源。可以跨 swarm 编排和部署服务。
You can combine multiple nodes as a cluster and then send “docker run” command to this cluster (actually to the Swarm manager node) Swarm will handle scheduling(starting) this container on one of the nodes.
允许跨所有节点的容器相互通信
查看官方文档:Swarm mode overview & Docker Compose