我按照以下步骤创建了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时声明它。
答案 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/