gpt4 book ai didi

docker - 何时使用 Docker-Compose 以及何时使用 Docker-Swarm

转载 作者:IT老高 更新时间:2023-10-28 12:34:27 25 4
gpt4 key购买 nike

我试图了解 Docker-ComposeDocker-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-compose:用于配置和管理一组相关容器的命令。它是 docker cli 使用的相同 api 的前端,因此您可以使用 docker run 等命令重现它的行为。
  • docker-compose.yml:一组容器的定义文件,由 docker-compose 使用,现在也由 swarm 模式使用。
  • 群模式:用于将一组 docker 引擎作为一个实体进行管理并提供编排(不断尝试纠正当前状态和目标状态之间的任何差异)。
  • 服务:一个或多个容器用于 swarm 中的相同镜像和配置,多个容器提供可扩展性。
  • stack:swarm 中的一个或多个服务,可以使用 DAB 或 docker-compose.yml 文件定义。
  • 桥接网络:由单个 docker 引擎管理的网络,多个容器可以相互通信。您可能有多个由一个引擎管理的网络,并且容器可以附加到零个或多个网络。
  • 覆盖网络:类似于桥接网络,但跨越多个 docker 引擎。这些需要一个键/值存储来维护它们的状态。 Swarm 模式提供此功能,但如果禁用 swarm 模式,您也可以使用 etcd、consul 或 zookeeper。
  • 链接:一种将容器连接在一起的方法,早于桥接网络。不再推荐使用它。
  • classic swarm:作为容器运行的集成 swarm 模式的前身,允许多个引擎作为一个引擎出现,但不提供编排或包含自己的 k/v 存储。

回答问题:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com