Docker-compose 和 Docker-swarm
Docker-compose and Docker-swarm
我正在使用 docker-compose 和 docker swarm。我创建了一个 docker-mgt 服务器,我从中创建了一个 docker-machine 来设置一个由 swarm master 和两个 swarm-agents 组成的 swarm 集群。
我创建了一个在容器中启动的 Express 应用程序,似乎 swarm master 决定将它放在 agent1 上。然后我还有一个 Wordpress 网站(来自 docker 撰写网站的示例),我 运行 docker-compose on Docker Swarm.
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:latest 可用,但它仍然抱怨。
当 运行 这个 wordpress 应用程序在单独的 docker 主机(不是 swarm 集群的一部分)上时,它运行得很好。为了排除 wordpress 应用程序上的错误,我还尝试了另一个由两个容器组成的完全不同的应用程序(使用 docker-compose),这是完全相同的问题。
我开始认为 docker compose 和 swarm 不能顺利地协同工作,但这当然很难相信。
问题是 swarm 需要一些方法来将图像检索到 运行 容器。如果注册表(或 docker 集线器)中不存在图像,则它(当前)没有任何方法获取该图像,最终会出现此错误。
一种选择是用全名标记图像并将它们推送到中心。然后 swarm 将能够在所有节点上拉取图像。
另一种选择是使用 docker save
和 docker load
传播图像,这会将图像发送到所有节点。
另一种选择是添加 image affinity 以强制容器在具有图像的节点上 运行。
将来,swarm 应该能够在节点之间传播图像。
您可能想试用 Rancher,它使用 compose 并使跨多种类型的基础设施部署应用程序变得简单,同时保持本机 docker 语法并使用 compose。 GitHub Website
我正在使用 docker-compose 和 docker swarm。我创建了一个 docker-mgt 服务器,我从中创建了一个 docker-machine 来设置一个由 swarm master 和两个 swarm-agents 组成的 swarm 集群。
我创建了一个在容器中启动的 Express 应用程序,似乎 swarm master 决定将它放在 agent1 上。然后我还有一个 Wordpress 网站(来自 docker 撰写网站的示例),我 运行 docker-compose on Docker Swarm.
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:latest 可用,但它仍然抱怨。
当 运行 这个 wordpress 应用程序在单独的 docker 主机(不是 swarm 集群的一部分)上时,它运行得很好。为了排除 wordpress 应用程序上的错误,我还尝试了另一个由两个容器组成的完全不同的应用程序(使用 docker-compose),这是完全相同的问题。
我开始认为 docker compose 和 swarm 不能顺利地协同工作,但这当然很难相信。
问题是 swarm 需要一些方法来将图像检索到 运行 容器。如果注册表(或 docker 集线器)中不存在图像,则它(当前)没有任何方法获取该图像,最终会出现此错误。
一种选择是用全名标记图像并将它们推送到中心。然后 swarm 将能够在所有节点上拉取图像。
另一种选择是使用 docker save
和 docker load
传播图像,这会将图像发送到所有节点。
另一种选择是添加 image affinity 以强制容器在具有图像的节点上 运行。
将来,swarm 应该能够在节点之间传播图像。
您可能想试用 Rancher,它使用 compose 并使跨多种类型的基础设施部署应用程序变得简单,同时保持本机 docker 语法并使用 compose。 GitHub Website