Docker Swarm 管理员无法识别 Swarm 节点

5
我按照以下步骤创建Docker Swarm集群。
第一步:创建控制台。
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

第二步:创建Swarm管理器
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

第三步:创建Swarm节点
docker-machine create -d virtualbox node2  
docker run -d swarm join --advertise=$(docker-machine ip node2):2375   consul://$(docker-machine ip mh-keystore):8500  

第四步:登录到节点1。
docker-machine ssh node1  
docker -H :4000 info  

但是这个指令输出:

(未知): 192.168.99.106:2375(节点2的IP)
└ ID:
└ 状态:等待中
└ 容器数:0
└ 保留的CPU:0 / 0
└ 保留的内存:0 B / 0 B
└ 标签:
└ 错误:无法连接到Docker守护进程。Docker守护进程是否在此主机上运行?....

我该怎么修复这个问题?
我已经检查了节点2,它运行正常。


[更新] 我按照这个页面的步骤操作,它运行正常。但我仍然想知道如何在没有docker-machine的情况下设置swarm集群。


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

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信息中显示mhs-demo1 IP地址,但信息仍然未知。


[更新]
当我键入eval docker-machine env --swarm node1时,它会显示:

错误检查TLS连接:“node1”不是Swarm主服务器。--swarm标志旨在与Swarm主服务器一起使用。这是否会引起错误?为什么使用Swarm管理器指令来设置不是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主节点。
3个回答

0

0

是的,我知道这些方法。但我只是想弄清楚为什么另一种方法不起作用...... - 鄭元傑

0

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

sudo rm /etc/docker/key.json

然后使用以下命令重新启动Docker:

sudo service docker restart

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


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