我必须在多个主机中创建容器。我为每个容器都有一个dockerfile。我发现docker-compose可用于从单个yaml文件运行多个容器。我必须在HostA中运行containerA,在HostB中运行containerB等等。是否可以使用docker-compose实现此目的?或者使用dockerfile在不同主机中创建容器的最佳方法是什么。
答案 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 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
以下是发生的事情:
eval $(docker-machine env --swarm swarm-master)
来配置您的shell。 从现在开始,创建和运行容器就像往常一样。 运行docker ps会显示容器正在运行的位置。
答案 2 :(得分:0)
Docker-compose正是您所需要的。它是一个用于定义和运行多容器Docker应用程序的工具。一个很好的起点是官方文档:https://docs.docker.com/compose/gettingstarted/