使用Docker Machine和Swarm与通过Docker守护程序使用Swarm有什么区别?

12

在Docker Swarm中,拥有多个Docker机器(一个管理节点和多个工作节点)和拥有多个Docker服务的副本在技术上有什么不同?

2个回答

21

由于没有人回答,我继续在互联网上阅读更多内容,试图了解这两个概念之间的区别。到目前为止,这是我的理解:

  • Docker Machine 是一个非常小的虚拟机,运行着Docker引擎的实例。这意味着我们可以在其中运行Docker容器。它可以被理解为容器的容器。
  • Docker引擎有(自1.12版本以来)一个名为Swarm Mode的模块,它提供了连接和编排许多包含Docker引擎的物理或虚拟机(例如Docker Machines)的内置支持。这基本上构建了一个节点网络,由经理 - 中央节点指导。此时,服务的实例可以被复制,并且管理器会将副本有效地分布到节点上。
  • 另外,Docker Machines可以运行Swarm容器(基于Swarm镜像),可以设置为以类似于前一种情况的方式运行。同样,我们可以有一个Docker Machine作为管理器,而许多其他Docker Machine则作为节点,只是这次经理不会平衡服务的副本,而是整个容器。启动新容器时,管理器会将其分配给某个节点。这是Swarm的独立版本,并且仅在使用Docker 1.12之前的版本时建议使用 - 否则,Swarm Mode是更好的选择。

希望这可以帮到您。


在我看来,Docker Swarm 已经足够了,我们为什么还需要 Docker Machine 呢? - lily
2
这不正确。Docker Machine 不是虚拟机,而是一种远程管理潜在多个 Docker 机器的机制。当您将自己的机器连接到另一个 Docker 主机时,您可以在本地执行命令(例如 docker-compose up -d),但实际上它们将被执行到远程服务器上。请阅读 https://docs.docker.com/machine/concepts/ 了解更多信息。您的误解可能来自于 Docker for Windows 和 Docker for Mac 如何创建 Linux VM 来托管 Docker,但这与 Docker Machine 无关。 - Alan
@Alan,“Docker Machine不是虚拟机”。再次检查。你的误解来自于docker容器的工作方式。Docker Machine与Docker容器不同。 - Marinos An
2
你很接近了,但是你混淆了docker-machine(命令)可以用于在虚拟环境中初始化Docker引擎这一事实,以及“Docker Machine”是一个虚拟机的事实。Docker可以托管在物理主机上,你也可以使用“docker-machine”与该物理主机进行交互,它不必被虚拟化。例如,我有时使用Docker Machine的方式是设置一个物理的Docker主机,然后我使用docker-machine在该主机上初始化Docker Engine并建立连接。该主机不是虚拟机,也不会创建任何虚拟机。 - Alan

0
Docker Machine 是一款用于配置和管理 Docker 主机(安装有 Docker 引擎的主机)的工具。通常情况下,您需要在本地系统上安装 Docker Machine。Docker Machine 有自己的命令行客户端 docker-machine 和 Docker 引擎客户端 docker。您可以使用 Machine 在一个或多个虚拟系统上安装 Docker 引擎。这些虚拟系统可以是本地的(例如,在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker 引擎),也可以是远程的(例如,在云提供商上使用 Machine 配置 Docker 主机)。这些 Docker 主机本身可以被视为“受控机器”。

https://docs.docker.com/machine/overview/#whats-the-difference-between-docker-engine-and-docker-machine

Docker Machine: 是一款用于提供和管理 Docker 主机(运行 Docker 引擎的虚拟主机)的工具。 它会自动创建主机,在其上安装 Docker 引擎,然后配置 Docker 客户端。 您可以使用 Machine 在本地计算机上使用虚拟化软件(如 VirtualBox 或 VMWare Fusion)创建 Docker 主机。 Docker Machine 还支持各种云提供商,如 AWS、Azure、Digital Ocean、Google Compute Engine、OpenStack、RackSpace 等。
Docker Swarm: Swarm 是将多个 Docker 主机链接成集群的一种方式。 Swarm 集群由一个 Swarm 管理器和一组工作节点组成。 您可以通过在 Swarm 管理器上执行命令与集群进行交互。 使用 Swarm,您可以将应用程序部署和扩展到多个主机。 Swarm 帮助管理、扩展、网络、服务发现以及负载均衡集群中的节点。

https://www.callicoder.com/docker-machine-swarm-stack-golang-example/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接