- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我试图了解 Docker-Compose 和 Docker-Swarm 之间的区别或相似之处。
通过阅读文档,我了解到 docker-compose 提供了一种机制,可以将不同的容器绑定(bind)在一起并协同工作,作为一个单一的服务(我猜它使用与 相同的功能-- link 命令用于链接两个容器)
另外,我对 docker-swarm 的理解是,它允许您管理由不同 docker-hosts 组成的集群,每个集群都运行一些 docker-image 的多个容器实例。我们可以将连接定义为 swarm 中不同容器之间的 overlay-networks(即使它们跨越 swarm 中的两个 docker-hosts)以将它们连接为一个单元。
我想了解的是 docker-swarm 是否已成功 docker-compose 并且覆盖网络是连接容器的新(推荐)方式?
或者说 docker-compose 仍然是整个 docker 家族中不可分割的一部分,使用它来连接容器以协同工作是值得期待和可取的。如果是这样,docker-compose 是否可以跨 swarm 中的不同节点处理容器??
或者说overlay网络是用来连接swarm中不同主机的容器,而docker-compose是用来创建内部链接的??
此外,我还看到 docker 文档中提到 --links 不再推荐,很快就会过时。
我有点糊涂???
非常感谢!
最佳答案
从几个定义开始可能会有所帮助:
docker run
等命令重现它的行为。回答问题:
has docker-swarm succeeded docker-compose and overlay networks is the new (recommended) way to connect containers?
Or is it that docker-compose is still an integral part of the entire docker family and it is expected and advisable to use it to connect containers to work in collaboration. If so does docker-compose work with containers across different nodes in the swarm??
它们提供不同的功能,并将继续为一个目的服务。 docker-compose 无法在 swarm 模式下启动容器,但 docker-compose.yml 文件的更新版本(版本 3)可用于直接在 swarm 模式下定义堆栈,而无需使用 docker-compose 本身。需要 docker-compose 来管理 swarm 模式之外的容器,在单个 docker 引擎上或使用经典 swarm。
Or is it that overlay networks is for connecting containers across different hosts in the swarm and docker-compose is for creating internal links??
Besides I also see that it is mentioned in the docker documentation that --links not recommended anymore and will be obsolete soon.
docker-compose 从 yml 文件的版本 2 开始,默认将多个容器连接在一起,每个项目都有一个新的桥接网络(项目默认为目录名称)。对于经典的 swarm,这将默认为使用外部 k/v 存储的覆盖网络。使用 swarm 模式堆栈,这将是一个覆盖网络。
使用 docker 网络是让容器相互通信的首选方式。您希望每组容器都有一个网络,您希望将其与 docker 环境的其余部分隔离。 docker-compose 会自动创建网络,但您也可以使用 docker networks create
从命令行执行此操作。
链接已在很大程度上被具有内置 DNS 发现功能的 docker 网络所取代。当您从 docker-compose.yml 中删除链接时,您可能需要将它们替换为 depends_on
部分以强制执行容器启动顺序。否则,很少有链接有意义的场景,而且我看到的所有用法都来自遵循过时文档的人。
关于docker - 何时使用 Docker-Compose 以及何时使用 Docker-Swarm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545431/
当我将新节点加入现有节点时,docker swarm 抛出错误“swarm already part of swarm” 我在我的本地机器上运行 docker swarm 并尝试初始化 swarm 并
我经常遇到问题,因为我在具有多个节点的 docker swarm 上部署的服务无法启动,并且没有生成可以使用 docker service logs {serviceName} 查看的日志。 服务无法
我在同一个子网中有 4 个虚拟机,它们是 docker-swarm 的一部分。现在我想连接另一个位于不同国家(不同子网)的节点(虚拟机)。我是一个 IP 菜鸟,我很难在 docker 中设置一个能够处
我想将堆栈部署到 Docker 群,我希望每个节点都运行给定的服务。 我查看了 deploy.placement 配置,我发现的最接近的选项是放置首选项 spread=node.label.abc ,
初始化集群模式: root@ip-172-31-44-207:/home/ubuntu# docker swarm init --advertise-addr 172.31.44.207 Swarm
这个命令的初始化群有什么区别: docker swarm init --advertise-addr docker -H swarm join --token 和这个: docker run s
我正在考虑构建一个 Docker Swarm 集群。为了让事情既简单又相对容错,我想简单地运行 3 个节点作为管理器。 不使用任何专用工作节点时有什么权衡?有什么我应该注意的可能不明显的吗? 我找到了
我最感兴趣的是我从docker node ls得到的信息. Docker 将加入的节点的信息存储在哪里? 最佳答案 docker 把加入的节点的信息存储在哪里? 资料来自docker node ls可
我想知道是否有人可以区分这两者。它们都有相似的命名。 最佳答案 Docker Swarm是一个单独的产品,您可以使用它来集群多个 Docker 主机。在 Docker 版本 1.12 之前,它是集群主
我有一个带有两个节点的 Swarm,我正在运行 cadvisor 作为全局服务。我得到指标,grafana/Promethues 可以抓取它们。但是我的数字是错误的。当我使用 docker 命令行工具
我正在尝试连接到 docker 事件总线以监听 swarm 上发生的各种事件,例如节点离开和加入集群、创建的服务等。 问题。 是否有可能在群体级别获得此类信息? 如果是这样,是否dockerpy库可用
我正在使用最新的 mac 版 docker (17.09.0-ce),当我运行 docker-machine create --help 时它说... --swarm-master Configur
我创建了一个 docker swarm 集群,其中包含 4 个节点 2 是 swarm manager(swarm 支持多个管理器)我知道如果当前管理器节点关闭,然后第二个管理器扮演成为集群管理器的角
为了测试我们的托管构建,我正在尝试建立一个与主机和外部世界隔离的 docker 网络。 我有以下 docker-compose.yml (灵感来自 this forum post ): version
在创建 docker swarm 集群时,我遇到了以下两个命令: docker run swarm create docker 群初始化 两者都用于初始化 Docker swarm 集群。任何人都可以
问题陈述:我需要通过 JMX 连接到 docker swarm 服务中的特定容器。服务未在任何端口上公开,因此我无法通过直接点击公开端口上的 docker 基板来访问 JMX。 另外,如果服务被暴露,
目前我可以看到Spring Cloud Data Flow有这些服务器:Local、YARN、Cloud Foundry、Mesos和Kubernetes;是否有支持 Swarm 的计划? 最佳答案
我看到与 described here 相同的问题和 here .我已经尝试了在这两种情况下有效的所有方法,但都无济于事——我仍然看到相同的行为。有人可以提供我可以尝试的替代方案吗? 我的设置: 我正
在一个 swarm 中拥有多个 docker 机器(一个管理器和许多节点)与在一个 swarm 中拥有多个 docker 服务副本之间到底有什么区别? 最佳答案 好吧,由于没有人回答这个问题,我继续在
当在多台机器的 Docker Swarm 集群中运行时,Traefik 不会创建前端或后端。 我按照以下教程在我的 MacBook(操作系统版本:10.14.2 (18C54))上创建了一个 Dock
我是一名优秀的程序员,十分优秀!