Docker-compose和Docker-swarm

我正在使用docker组合和docker群。 我创build了一个docker-mgt服务器,从这个服务器上我做了一个docker-machine来build立一个由swarm master和swarm-agent组成的swarm cluster。

我已经创build了一个快速的应用程序,开始在一个容器中,似乎swarm主决定把它放在agent1上。 然后,我也有一个Docker撰写Docker Swarm的WordPress站点(来自Docker撰写站点的示例)。

cloud-user@docker-mgt:~/wordpress$ docker-compose up wordpress_db_1 is up-to-date Creating wordpress_web_1 ERROR: Error: image library/wordpress_web:latest not found 

以下图像可用:

 cloud-user@docker-mgt:~/wordpress$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE orchardup/php5 latest c385b8a81cee 18 months ago 330.1 MB swarm latest a9975e2cc0a3 19 hours ago 17.15 MB orchardup/mysql latest 5a45a5a953bb 16 months ago 292.4 MB wordpress_web latest e484f88dc8c8 11 minutes ago 350.9 MB node-ip latest d177af00338b 39 minutes ago 549.5 MB centos centos6 1a895dd3954a 8 weeks ago 190.6 MB 

所以它确实有wordpress_web:最新可用,仍然抱怨。

当运行这个WordPress的应用程序在一个单独的docker主机(不是群集的一部分),它运行得很好。 为了排除wordpress应用程序中的错误,我还尝试了另一个由两个容器组成的完全不同的应用程序(使用docker-compose),这完全是同一个问题。

我开始认为,docker工作人员和群体工作不能顺利进行,但当然很难相信。

问题是swarm需要一些方法来检索图像来运行容器。 如果图像不存在于registry(或docker集线器)中,那么它(当前)没有任何方法来获取该图像,并最终出现此错误。

一种select是用全名标记图像并将它们推送到集线器。 然后swarm将能够拉动所有节点上的图像。

另一种select是使用docker savedocker load来传播图像,这会将图像发送到所有节点。

另一个选项是添加图像关联强制容器在具有图像的节点上运行。

将来,群体应该获得在节点之间传播图像的能力。

您可能想要尝试Rancher,它使用了组合function,并使得在广泛types的基础架构上部署应用程序变得简单,同时保持本地docker语法和使用撰写。 GitHub 网站