【问题标题】:Troubles using docker-machine to setup Swarm使用 docker-machine 设置 Swarm 的问题
【发布时间】:2016-12-04 15:04:54
【问题描述】:

我在部署基于本地 virtualbox 的 swarm 时遇到问题 - 我已按照官方 docker 文档中关于使用 docker-machine 工具设置主/工作节点的说明进行操作。我已经在 dockerhub 上创建了令牌,并使用了 --swarm(和 --swarm-master)和 --swarm-discovery token://XXXX ... 到目前为止一切顺利,两台机器正在运行,似乎注册为 Swarm 主机和工人:

spaceback@brutus:~$ docker-machine ls
NAME           ACTIVE      DRIVER       STATE     URL                         SWARM                   DOCKER    ERRORS
swarm-master   * (swarm)   virtualbox   Running   tcp://192.168.99.100:2376   swarm-master (master)   v1.12.0   
swarm-node1    -           virtualbox   Running   tcp://192.168.99.101:2376   swarm-master            v1.12.0   
spaceback@brutus:~$ docker run --rm swarm list token://[....]
192.168.99.101:2376
192.168.99.100:2376

使用“eval $(docker-machine env --swarm swarm-master)”设置正确的环境值后,我可以使用“docker info”获取状态,说明我有两个节点正在运行... 但任何尝试运行任何其他 docker swarm 命令(docker 节点...、docker 服务...)我都会收到“来自守护进程的错误响应:未找到 404 页面”。

我做错了什么?

【问题讨论】:

    标签: docker docker-machine docker-swarm


    【解决方案1】:

    您似乎正在尝试使用新的swarm mode 功能来对抗旧的docker swarm

    以下脚本创建一个包含 3 个管理器和 2 个工作器的 HA Swarm 集群(使用 Docker 1.12.0):

    #=========================
    # Creating cluster members
    #=========================
    docker-machine create --driver virtualbox node1
    docker-machine create --driver virtualbox node2
    docker-machine create --driver virtualbox node3
    docker-machine create --driver virtualbox node4
    docker-machine create --driver virtualbox node5
    
    #===============
    # Starting swarm
    #===============
    MANAGER_IP=$(docker-machine ip node1)
    
    docker-machine ssh node1 docker swarm init --advertise-addr $MANAGER_IP
    
    #===============
    # Adding members
    #===============
    MANAGER_TOKEN=$(docker-machine ssh node1 docker swarm join-token --quiet manager)
    WORKER_TOKEN=$(docker-machine ssh node1 docker swarm join-token --quiet worker)
    
    docker-machine ssh node2 docker swarm join --token $MANAGER_TOKEN $MANAGER_IP:2377
    docker-machine ssh node3 docker swarm join --token $MANAGER_TOKEN $MANAGER_IP:2377
    docker-machine ssh node4 docker swarm join --token $WORKER_TOKEN  $MANAGER_IP:2377
    docker-machine ssh node5 docker swarm join --token $WORKER_TOKEN  $MANAGER_IP:2377
    

    列出群成员

    $ docker-machine ssh node1 docker node ls
    ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
    4s0mrh2u4sa2p260ung8ipb0m *  node1     Ready   Active        Leader
    5ra7b8cwarpcpa47p2gq2ecxs    node2     Ready   Active        Reachable
    66t3pq66ynlvyl3do6lpn9kzb    node3     Ready   Active        
    7k5n1id2q6yncqjbv7l8ec0r5    node5     Ready   Active        
    833e4ya58hq62epplreyvwtnm    node4     Ready   Active 
    

    创建服务

    $ docker-machine ssh node1 docker service create --name web --replicas=10 -p 30000:80 nginx
    
    $ docker-machine ssh node1 docker service ps web
    ID                         NAME    IMAGE  NODE   DESIRED STATE  CURRENT STATE           ERROR
    2fxy4n57p8ot3mn0kws96pnuk  web.1   nginx  node1  Running        Running 30 seconds ago  
    cmm1s3h8ds7tmppf7pwvl5zxw  web.2   nginx  node5  Running        Running 6 seconds ago   
    7ixgtqlz049ggi90363js088b  web.3   nginx  node1  Running        Running 30 seconds ago  
    4o1e2wkh0x4rp8h9o73as8drf  web.4   nginx  node3  Running        Running 22 seconds ago  
    6lufnzzddljlw0lnu0qyftzh6  web.5   nginx  node3  Running        Running 22 seconds ago  
    49g43g23t4r9lpmitfs4uu1j6  web.6   nginx  node2  Running        Running 3 seconds ago   
    43dopngi08licw4xttipnfdb6  web.7   nginx  node2  Running        Running 3 seconds ago   
    8d47dvmokf65xb271fyk3jlbu  web.8   nginx  node4  Running        Running 7 seconds ago   
    2t56edm3k4x98yjkvgamyq6v4  web.9   nginx  node5  Running        Running 6 seconds ago   
    byij5j5pom1t3elu2ydteasg7  web.10  nginx  node4  Running        Running 7 seconds ago   
    

    【讨论】:

    • aha...好吧,我可以这样编写脚本(或手动执行 swarm 初始化/加入步骤),但我认为 docker-machine 的 --swarm* 选项组应该设置swarm 对我来说是自动的,至少 docker-machine 文档使它看起来如此......所以这些实际上无法与新的 docker 引擎 1.12 一起使用?
    • @JiříNovák Docker swarm 已在 1.12 版本中集成到 Docker 引擎中。这旨在取代作为容器运行的旧 Swarm。 docker-machine 中的 swarm 选项旨在使旧的 swarm 更易于使用。人们仍然可以使用它们,但你不能指望新的 docker 引擎命令,如“docker node”或“docker service”能够工作。
    • @mark-oconnor 对,我对 swarm 的两个版本感到困惑,我在睡了几个小时后通过更多搜索和阅读发现了它:) 感谢您的澄清...
    • 在搜索了很长时间后,我得到了这个工作谢谢!干得好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多