第一步:创建控制台。
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主节点。