【问题标题】:Docker swarm manager cannot recognize swarm nodesDocker swarm manager 无法识别 swarm 节点
【发布时间】:2016-06-08 14:37:44
【问题描述】:

我按照这些步骤创建 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

二:创建swarm manager

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  

第四:登录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 daemon 是否在此主机上运行?....

我该如何解决这个问题?
我已经检查了 node2 并且运行良好。


[更新]我关注this page,它运作良好。但是我仍然不知道如何在没有 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 info 出现 mhs-demo1 ip 但信息仍然未知..


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

检查 TLS 连接时出错:“node1”不是 swarm master。这 --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。

【问题讨论】:

    标签: docker docker-swarm


    【解决方案1】:

    你为什么使用 docker-machine 来启动一个节点?你可以使用 docker machine 来设置你的节点,让 swarm 准备就绪。 你可以按照这个教程 https://docs.docker.com/engine/userguide/networking/get-started-overlay/

    【讨论】:

    • 是的。我知道这种方法。但我只是想弄清楚为什么另一种方法不起作用.......
    【解决方案2】:

    尝试删除此文件:

    sudo rm /etc/docker/key.json
    

    然后重启docker:

    sudo service docker restart
    

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

    【讨论】:

      【解决方案3】:

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

      只要关注这个:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/

      【讨论】:

        猜你喜欢
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多