我如何 运行 docker-组成一个 docker-swarm?

How do I run docker-compose up on a a docker-swarm?

我是 Docker 的新手,正在尝试通过在 Docker-Swarm 上本地部署一个 hello-world Flask 应用程序来开始。

到目前为止,我有我的 Flask 应用程序、一个 Docker 文件和一个 docker-compose.yml 文件。

version: "3"
services:
  webapp:
    build: .
    ports:
      - "5000:5000"

docker-compose up 工作正常并部署了我的 Flask 应用程序。

我已经用 docker swarm init 启动了一个 Docker Swarm,我知道它创建了一个只有一个节点的 swarm:

ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
efcs0tef4eny6472eiffiugqp *  moby      Ready   Active        Leader

现在,我不需要 worker 或其他任何东西,只需要一个节点(默认创建的管理器节点),并在那里部署我的映像。

查看这些说明 https://docs.docker.com/get-started/part4/#create-a-cluster 看来我必须创建一个 VM 驱动程序,然后将我的文件 scp 到那里,然后 ssh 到 运行 docker-compose up。这是正常的工作方式吗?为什么我需要虚拟机?难道我不能 运行 docker-组成 swarm manager 吗?我没有找到这样做的方法,所以我猜我遗漏了什么。

运行 docker-compose up 将直接在主机上创建单独的容器。

在 swarm 模式下,所有管理容器的命令都已转移到 docker stackdocker service,它们管理跨多个主机的容器。 docker stack deploy 命令接受带有 -c arg 的撰写文件,因此您将 运行 在管理器节点上执行以下操作:

docker stack deploy -c docker-compose.yml stack_name

根据版本 3 yml 文件创建名为 "stack_name" 的堆栈。无论您有一个节点还是由 swarm 管理的大型集群,此命令的工作原理都是一样的。