如何在docker-swarm上运行docker-compose?

时间:2017-05-17 17:18:14

标签: docker docker-compose docker-swarm

我是Docker的新手,并尝试在Docker-Swarm上本地部署一个hello-world Flask应用程序。

到目前为止,我有我的Flask应用程序,Dockerfile和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

现在,我不想要工作者或其他任何东西,只需要一个节点(默认情况下创建的管理器节点),并在那里部署我的图像。

查看这些说明https://docs.docker.com/get-started/part4/#create-a-cluster,似乎我必须创建一个VM驱动程序,然后在那里scp我的文件,然后ssh运行docker-compose up。这是正常的工作方式吗?为什么我需要VM?我不能只在群集管理器上运行docker-compose吗?我没有办法这样做,所以我猜我错过了什么。

1 个答案:

答案 0 :(得分:2)

运行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”的堆栈。无论您有一个节点还是由您的群管理的大型群集,此命令的工作方式都相同。