Docker从零到集群(3/3)—Machine,Compose

作者: 无聊数藏家 | 来源:发表于2017-12-18 14:02 被阅读124次

    系列目录

    Docker从零到集群(1/3)—Machine,Compose,Swarm
    Docker从零到集群(2/3)—Machine,Compose,Swarm
    Docker从零到集群(3/3)—Machine,Compose,Swarm

    前言

    前文已经描述如何部署单机Docker应用,那本文将会描述如何利用Docker Swarm将单机应用拓展为集群应用

    一、创建虚拟机

    创建一个最迷你的集群,我们需要三台虚拟机,分别是管理节点m1,然后两个工作节点w1和w2

    docker-machine create m1
    
    docker-machine create w1
    
    docker-machine create w2
    

    二、创建集群

    使用Docker Swarm创建和管理集群是简单易用的,我们只需要分别创建【管理节点】和【工作节点】,然后将工作节点加入管理节点即可完成

    1、初始化集群管理节点

    docker-machine ssh m1
    
    docker swarm init --advertise-addr [m1主机的IP]
    

    2、初始化集群工作节点

    docker-machine ssh w1
    
    docker swarm join --token [m1的token]
    
    docker-machine ssh w2
    
    docker swarm join --token [m1的token]
    

    只需要以上步骤,我们就完成了最迷你的集群创建,Docker的魅力也就是如此,将传统复杂的集群部署构建工作,简化至此,所以才会有人说Docker正在改变世界不是吗?

    然后我们可以在管理节点查看集群状态

    docker-machine ssh m1
    
    docker node ls
    

    三、部署服务

    1、编写stack-compose.yml文件,用于多服务部署

    version: '3'
    services:
      nginx: # Nginx服务
        image: cheney/nginx:latest
        ports:
          - "80:80"
        volumes:
          - /Users/cheney/Documents/docker/nginx/log:/var/log/nginx
          #   - /Users/cheney/Documents/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
          #   - /Users/cheney/Documents/docker/nginx/conf.d:/etc/nginx/conf.d
          #   - /Users/cheney/Documents/docker/nginx/html:/usr/share/nginx/html
    
      autodeploy: # 自定义NODE服务
        image:  cheney/autodeploy:latest
      
      visualizer: # Docker管理可视化服务
        image: dockersamples/visualizer:latest
        ports:
          - "8080:8080"
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints: [node.role == manager]
    networks:
      overlay:
    

    说明:以上yml文件部署了三个服务,分别是一个Nginx应用,一个Node应用,一个visualizer应用(用于可视化监控集群状态)

    2、正式部署集群

    docker stack deploy --compose-file=stack-compose.yml [集群名称]
    

    只需要以上步骤,Docker Swarm 会全自动地将所有服务以负载均衡的方式部署在不同的主机上,几乎不需要人工干预,通过以下命令可以在m1主机查看集群和服务的部署情况

    docker stack ls
    docker service ls
    

    也可以通过在浏览器上访问如下地址,可视化查看集群状态

    http://[m1的主机IP]:8080
    
    image.png

    拓展服务的部署数量非常简单,只需在m1执行如下命令

    docker service scale [需要拓展的服务]=3
    

    删除部署

    如果不希望保留集群,执行下面命令即可清理

    docker stack rm [集群名称]
    

    后记

    十分感谢您的阅读,Docker系列的文章还有很多细节没有补充,可能对于初学者来说还是难以入门,没有关系,后续我会定期逐渐补充其中细节,完全让每一位希望利用Docker改变世界的人,实现自己的愿景

    作者:CheneyXu
    关于:XServer官网

    相关文章

      网友评论

        本文标题:Docker从零到集群(3/3)—Machine,Compose

        本文链接:https://www.haomeiwen.com/subject/ekpywxtx.html