Sha*_*ean 63 docker docker-compose docker-swarm docker-swarm-mode
我试图理解D-Compose和D-Swarm之间的差异或相似之处.
通过阅读文档,我了解到docker-compose提供了一种机制,可以将不同的容器绑定在一起并协同工作,作为单个服务(我猜它使用与用于链接两个容器的--link命令相同的功能)
另外,我对docker-swarm的理解是它允许你管理不同docker-hosts的集群,每个docker-hosts都运行一些docker-images的几个容器实例.我们可以将连接定义为群中不同容器之间的覆盖网络(即使它们跨越群中的两个泊坞主机)将它们作为一个单元连接起来.
我想要了解的是docker-swarm成功的docker-compose和覆盖网络是连接容器的新(推荐)方式吗?
或者,docker-compose仍然是整个docker系列中不可或缺的一部分,并且可以使用它来连接容器以协同工作.如果是这样,docker-compose在群中的不同节点上使用容器?
或者是覆盖网络用于连接群集中不同主机的容器,而docker-compose用于创建内部链接?
此外,我还看到在docker文档中提到 -不再推荐链接,很快就会过时.
我有点困惑???
非常感谢!
BMi*_*tch 81
它可能有助于从一些定义开始:
docker run.回答问题:
docker-swarm成功了docker-compose和overlay网络是连接容器的新(推荐)方式吗?
或者,docker-compose仍然是整个docker系列中不可或缺的一部分,并且可以使用它来连接容器以协同工作.如果是这样,docker-compose在群中的不同节点上使用容器?
它们提供不同的功能,并将继续用于一个目的.docker-compose无法在swarm模式下启动容器,但是较新版本的docker-compose.yml文件(版本3)可用于直接在swarm模式下定义堆栈,而无需使用docker-compose本身.需要docker-compose来管理群集模式之外的容器,单个docker引擎或经典swarm.
或者是覆盖网络用于连接群集中不同主机的容器,而docker-compose用于创建内部链接?
此外,我还看到在docker文档中提到 - 不再推荐链接,很快就会过时.
从yml文件的第2版开始的docker-compose默认情况下将多个容器连接在一起,每个项目都有一个新的桥接网络(项目默认为目录名).使用经典swarm,默认使用外部k/v存储的覆盖网络.使用群集模式堆栈,这将是一个覆盖网络.
使用docker networks是让容器相互通信的首选方式.您希望每组容器都有一个网络,希望与其余的docker环境隔离.docker-compose可自动执行此网络创建,但您也可以从命令行执行此操作docker networks create.
链接已经在很大程度上被具有内置DNS发现的docker网络所取代.从docker-compose.yml中删除链接时,可能需要将其替换为depends_on部分以强制执行容器启动顺序.否则,很少有情况下链接有意义,我看到的所有用法都来自过时文档的人.
Ano*_*oop 14
组成或群集或群集覆盖网络
如果您在笔记本电脑上进行演示以外的任何操作,您会发现需要使用上述所有内容.
我故意将swarm和swarm覆盖网络分开,因为你不需要同时使用它们,但如果没有一个swarm,你就无法获得覆盖网络.
撰写是为了将多个容器组合在一起.现在它们彼此相关是有意义的,尽管它们可能不相关.但是,假设一个典型的情况是容器用于彼此相关的服务,那么你希望它们以某种方式相互通信,但是控制它们如何使用网络相互通信.例如,采用具有Web服务器,appserver和db的3层应用程序.假设所有三个组件都是docker化的,你使用compose将它们组合在一起而不是docker run..用不同的参数运行三次等.所有三个组件都会出现,但是你想控制它们如何相互连接.您希望Web服务器能够与应用程序服务器通信,而不是直接与数据库通信.并且您希望appserver与数据库服务器容器通话(ping)并ping Web服务器.所有连接都是双向的,但仅限于您希望能够相互通信的那些服务.对于这样的安排,你通常会设置2个网络 - 比如说frontend和backend.Web和app容器连接到前端网络.app和db容器连接到后端网络.因为db和web容器之间没有公共网络,所以它们不能互相触摸(ping),这是你的意图.
现在,如果您希望这3个服务能够在100个计算机的集群上运行,并且您还希望跨越它们进行扩展,则需要跨越多个主机的网络.这就是覆盖网络(群集)出现的情况.覆盖网络只不过是通过VxLAN技术构建的多主机网络.您不必了解VxLAN,除了它是几乎所有现代网络基础架构都支持的标准网络拓扑.
我希望澄清一下.
编辑:我没有看到你已经得到了答案!
我认为您对每种含义都有大多数正确的理解,但是需要进行一些调整。
您是正确的docker-compose是启动多容器应用程序。之前您曾经做过docker run ..启动每个容器的操作。通常,包含微服务范式的现代应用程序可以由数十种服务组成,并且使用docker run ..很快会变得很累人。因此,docker-compose允许您表达所有容器及其属性以及它们如何作为一个yaml或json文件相互连接,以便您可以更轻松地对其进行管理。
因此,docker-compose是docker生态系统中的容器编排部分。
链接是不同的,它们只是docker-compose或docker run命令的一部分,不建议使用software defined networks,而overlay networks只是其中之一。
Swarm是docker中的调度组件。计划是什么-只是弄清楚将容器“放置”在Docker主机群集中的位置。您可以拥有数百个服务器的群集,并且您可能具有数百个容器,每个容器封装了针对十二种不同应用程序的服务。现在,这些容器应如何在数百台服务器的群集中分布,某些容器应仅由于满足特定条件而仅放置在某些主机上,或者它们应该更靠近(或不接近)某种程度上相关的其他容器...所有这些都是由Docker Swarm执行的调度组件的一部分。
我建议您在docker.com上浏览入门文档:https://docs.docker.com/engine/getstarted-voting-app/
| 归档时间: |
|
| 查看次数: |
14787 次 |
| 最近记录: |