是否可以使用单个docker compose文件在多个主机中创建容器?

是否可以使用单个docker compose文件在多个主机中创建容器?,docker,docker-compose,dockerfile,docker-swarm,Docker,Docker Compose,Dockerfile,Docker Swarm,我必须在多个主机中创建容器。每个容器都有一个dockerfile。我发现docker compose可以用于从单个yaml文件运行多个容器。我必须在HostA中运行containerA,在HostB中运行containerB等等。。使用docker compose是否可以实现这一点?或者,使用dockerfile在不同主机中创建容器的最佳方法是什么。Docker compose正是您所需要的。它是定义和运行多容器Docker应用程序的工具。官方文档是一个很好的起点:不,单靠docker comp

我必须在多个主机中创建容器。每个容器都有一个dockerfile。我发现docker compose可以用于从单个yaml文件运行多个容器。我必须在HostA中运行containerA,在HostB中运行containerB等等。。使用docker compose是否可以实现这一点?或者,使用dockerfile在不同主机中创建容器的最佳方法是什么。

Docker compose正是您所需要的。它是定义和运行多容器Docker应用程序的工具。官方文档是一个很好的起点:

不,单靠docker compose无法实现这一点。跨多台主机管理容器通常是调度器的工作。是一篇较老的文章,但应该给出一个介绍

Docker提供的调度器称为Swarm。这是一个开始了解如何将它们结合使用的好地方


答案的这一部分是有时间限制的,但在此期间,您可以参加一些免费课程来了解Swarm的更多信息。对于你来说,初级和中级操作可能很有趣。

答案是否定的

  • Docker compose适用于单个主机上的多个容器
  • Docker swarm用于集群级别的容器
而且,您无法决定在何处运行容器,只有docker swarm调度器决定,但您可以影响它。检查下面的链接,并关注图像相关性。i、 e.您仅在某些节点上放置特定图像,并将调度程序配置为使用图像关联

  • 过滤器-选择了哪些主机
  • 策略-对节点进行排序
下面是一个创建docker swarm集群的脚本。玩游戏,直到你了解过程本身

id=$(docker run swarm create)
docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://$id swarm-master
docker-machine create -d virtualbox --swarm --swarm-discovery token://$id node1
docker-machine create -d virtualbox --swarm --swarm-discovery token://$id node2
docker-machine create -d virtualbox --swarm --swarm-discovery token://$id node3
docker-machine create -d virtualbox --swarm --swarm-discovery token://$id node4
发生的情况如下:

  • 创建一个具有一个主节点和四个节点的集群
  • 运行
    eval$(docker machine env——swarm swarm master)
    来配置shell 从这一点开始,创建和运行容器与往常一样。
    运行docker ps将显示容器运行的位置

    这并不能真正回答问题。