Docker swarm管理器无法识别swarm节点

时间:2016-06-08 14:37:45

标签: docker docker-swarm

我按照以下步骤创建了Docker swarm集群。

首先:创建Cunsol

docker-machine create -d virtualbox mh-keystore  
eval "$(docker-machine env mh-keystore)"  
docker run -d \  
 -p "8500:8500" \  
 -h "consul" \  
 progrium/consul -server -bootstrap

第二:创建群组管理器

docker-machine create -d virtualbox node1  
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --  advertise $(docker-machine ip node1):4000 consul://$(docker-machine ip mh-keystore):8500

第三步:创建群集节点

docker-machine create -d virtualbox node2  
docker run -d swarm join --advertise=$(docker-machine ip node2):2375   consul://$(docker-machine ip mh-keystore):8500  

第四:登录node1

docker-machine ssh node1  
docker -H :4000 info  

但是这个指令输出

  

(未知):192.168.99.106:2375(node2 ip)
    └ID:
    └状态:待定中     └容器:0
    └预留CPU:0/0     └预留记忆:0 B / 0 B
    └标签:
    └错误:无法连接到Docker守护程序。 docker守护程序是否在此主机上运行?....

我该如何解决这个问题? 我已经检查过node2,它运行良好。

[更新] 我关注this page,效果很好。但我仍然不知道如何在没有docker-machine的情况下设置群集群。

[更新] 另一种方法也不起作用。

docker-machine create -d virtualbox \
 --swarm \
 --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
 --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
 --engine-opt="cluster-advertise=eth1:2376" \
 mhs-demo1

Node1 docker info出现mhs-demo1 ip但信息仍然未知......

[更新]
当我输入eval docker-machine env --swarm node1时显示

  

检查TLS连接时出错:" node1"不是一个群主。该   --swarm标志用于swarm master这会导致错误吗?为什么使用swarm manager指令进行设置不是swarm   主?

太奇怪了。我怎样才能得到与

相同的结果
docker-machine create \ -d virtualbox \ --swarm --swarm-master \ 
 --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \ 
 --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \ 
 --engine-opt="cluster-advertise=eth1:2376" \
 mhs-demo0

使用swarm指令?

我想使用swarm指令,因为我不想在创建swarm master时声明它。

3 个答案:

答案 0 :(得分:0)

为什么只使用docker-machine来启动节点?您可以使用docker machine设置节点,并准备好swarm。 您可以按照本教程操作 https://docs.docker.com/engine/userguide/networking/get-started-overlay/

答案 1 :(得分:0)

尝试使用以下命令删除此文件:

sudo rm /etc/docker/key.json

然后使用以下命令重启docker:

sudo service docker restart

此时,docker将创建一个新的key.json文件,您的主人应该能够找到您的工作人员。当您为所有工作节点使用相同的图像时,有时会发生这种情况,但这很容易解决。

答案 2 :(得分:0)

在docker 1.12中,swarm模式可直接使用。群集不需要键值存储。

请按照以下步骤操作:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/