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

时间:2016-11-17 18:19:29

标签: docker docker-compose dockerfile docker-swarm

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

3 个答案:

答案 0 :(得分:3)

不,单靠docker-compose就无法实现这一目标。跨多个主机管理容器通常是调度程序的工作。 The Docker Ecosystem: Scheduling and Orchestration 是一篇较旧的文章,但应该做一些介绍。

Docker提供的调度程序称为Swarm。 Use Compose with Swarm是一个开始了解如何一起使用它们的好地方。

这部分答案是有时间限制的,但在Mentor Week期间,您可以学习一些免费课程,以了解有关Swarm的更多信息。在您的情况下, Operations Beginner Intermediate 可能会很有趣。

答案 1 :(得分:1)

答案是否定的。

  • Docker compose适用于单个主机上的多个容器。
  • Docker swarm用于群集级别的容器。

并且,您无法决定在哪里运行容器,只有docker swarm调度程序决定,但您可以影响它。检查下面的链接,并专注于图像亲和力。即,您只将特定图像放在某些节点上,并将调度程序配置为使用图像相关性。

  • 过滤器 - 选择了哪些主机
  • 策略 - 对节点进行排名。

docker filters 这是一个用于创建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

以下是发生的事情:

  1. 创建具有一个主节点和四个节点的群集。
  2. 运行eval $(docker-machine env --swarm swarm-master)来配置您的shell。
  3. 从现在开始,创建和运行容器就像往常一样。 运行docker ps会显示容器正在运行的位置。

答案 2 :(得分:0)

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