可以使用单个Docker Compose文件在多个主机上创建容器吗?

5

我需要在多个主机上创建容器。我为每个容器都有一个Dockerfile文件。我发现可以使用docker-compose从单个yaml文件运行多个容器。我需要在HostA中运行containerA,在HostB中运行containerB等等...是否可以使用docker-compose实现这一点?或者有什么更好的方法可以使用Dockerfile在不同的主机上创建容器。

3个回答

3
不,仅使用docker-compose无法实现此目标。管理跨多个主机的容器通常是调度程序的工作。《Docker生态系统:调度和编排》是一篇较旧的文章,但应该可以提供入门介绍。
Docker提供的调度程序称为Swarm。《使用Compose与Swarm》是一个很好的起点,以了解如何将它们结合使用。
答案的这部分是有时间限制的,但在Mentor Week期间,您可以免费参加一些课程,以了解更多关于Swarm的知识。对您来说,《操作初学者》和《中级》可能会很有趣。

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。

从这一点开始,创建和运行容器就像往常一样。运行 docker ps 可以显示容器正在运行的位置。


0

1
那并没有真正回答问题。 - Roman

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