part-4 Swarms

简介

这一节主要是介绍一下如何在集群模式下部署docker应用;集群的概念很好理解了,多台机器共同完成一项任务;和Hadoop那些集群一样,docker也相当于有一个管理机,下面有一些worker,docker集群的部署方式也类似。

创建集群所需机器

所谓集群,肯定是多个机器,要在本地实现集群的效果,只能用虚拟机了;提到虚拟机,可以使用virtualbox创建虚拟机,但是并不需要安装virtualbox之后在那点鼠标创建xx虚拟机,使用docker的命令,以virtualbox为驱动就可以创建了;过程大致如下:

  • 创建2台虚拟机
docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2
  • 使用docker-machine ls可以查看虚拟机列表,效果如下
➜ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
myvm1 - virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce
myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce

初始化swarm,添加节点

机器已经创建好了,就可以创建集群了,大致步骤如下:

  • 先将其中一个设置为管理机(leader)
➜ docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100"
Swarm initialized: current node (erobf751l09mmidt60y8idg6i) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-5shucnjzwdjwyzpquec8k8obvauasnvlc7g81da84ucv6y6um5-crfqd1by0v3693jov5u24jf40 192.168.99.100:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  • 依照上述提示,将另外一台机器设置为worker
➜ docker-machine ssh myvm2 "docker swarm join --token SWMTKN-1-5shucnjzwdjwyzpquec8k8obvauasnvlc7g81da84ucv6y6um5-crfqd1by0v3693jov5u24jf40 192.168.99.100:2377"
This node joined a swarm as a worker.
  • 查看集群状态,需要登录到管理机上查看
➜ docker-machine ssh myvm1 "docker node ls"
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
erobf751l09mmidt60y8idg6i * myvm1 Ready Active Leader 18.05.0-ce
t7dioehz2db7wcs6lz4gzcg2y myvm2 Ready Active 18.05.0-ce
  • 若想让机器退出集群,使用docker-machi ssh myvm2 "docker swarm leave"

在集群上部署docker应用

配置docker-machine env

之前与vm1/vm2通话的方式比较麻烦,现在可以通过docker-machine env <machine>来直接沟通,与docker-machine ssh的区别是:前者可以使用本地的docker-compose.yml文件来配置集群,而不用将文件拷贝过去。大致方式如下:

➜ docker-machine env myvm1
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/wang/.docker/machine/machines/myvm1"
export DOCKER_MACHINE_NAME="myvm1"
# Run this command to configure your shell:
# eval $(docker-machine env myvm1)
➜ eval $(docker-machine env myvm1)
➜ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
myvm1 * virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce
myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce
在swarm管理机上部署应用
  • 通过了上一步的操作,实际上相当于可以控制myvm1了,然后就可以部署app了,方式如下:
➜ docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
  • 可以通过docker stack ps xxx来查看是否启动成功了,如下:
➜  docker_file docker stack ps getstartedlab
zi9r49lihpf0 getstartedlab_web.1 btchild/get-started:part-2 myvm2 Running Preparing about a minute ago
vc3z9spbwjhk getstartedlab_web.2 btchild/get-started:part-2 myvm2 Running Preparing about a minute ago
s2fuh8z5leto getstartedlab_web.3 btchild/get-started:part-2 myvm1 Running Running about a minute ago
nhd3cpud5k28 getstartedlab_web.4 btchild/get-started:part-2 myvm1 Running Running 12 seconds ago
n3tcr1k8ieen getstartedlab_web.5 btchild/get-started:part-2 myvm1 Running Running about a minute ago
  • 然后可以通过浏览器访问http://192.168.99.100:4000/就可以看到结果了,也可以通过http://192.168.99.101:4000/来查看,就相当于达到了负载均衡的效果,也实现了集群的操作
  • 另外,可通过docker-machine scp file_name machine_name来实现拷贝
  • 停用应用
➜  docker_file docker stack rm getstartedlab
Removing service getstartedlab_web
Removing network getstartedlab_webnet
  • 离开swarm的管理机
➜  docker_file eval $(docker-machine env -u)
重启vm
  • 可以通过docker-machine stop myvm1来停用虚拟机
  • 通过docker-machine start myvm1来启用虚拟机

Docker 入门(Mac环境)- part 4 swarms的更多相关文章

  1. Docker 入门 第四部分: Swarms

    目录 Docker 入门 第四部分: Swarms 先决条件 介绍 理解Swarm集群 部署swarm 创建一个集群 在swarm集群上部署你的app应用 为 swarm管理器配置一个docker-m ...

  2. Docker入门(五):Swarms

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  3. docker for mac

    MacOS上通过docker部署 docker环境准备 1.访问这里安装好docker,需要注册账号才能下载dmg安装包:https://hub.docker.com/editions/communi ...

  4. Docker 入门(Mac环境)-part 1 入门基本操作

    part-1 入门基本操作 Docker 安装 去官网下载对应的版本,然后点击安装就可以了: 如果环境是Linux,可以参照之前写的get started教程 查看docker版本 docker -- ...

  5. mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  6. Mac 环境部署Docker私有仓库

    docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...

  7. mac环境下使用docker安装nginx

    前言 距离上一篇文章已经很长时间,近期实在事情太多了,也没来得及继续更新一些新的内容.现在开发使用的工作实在太多了,小编实在忍受不了windows那样卡机的状态,于是最近换了一个mac电脑,虽然做开发 ...

  8. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  9. Docker 入门 第六部分:部署app

    目录 Docker 入门 第六部分:部署app 先决条件 介绍 选择一个选项 Docker CE(Cloud provider) Enterprise(Cloud provider)这里不做介绍 En ...

  10. Docker入门(二):安装/卸载

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

随机推荐

  1. Xcode全局替换内容,一键Replace

    有时需要在整个项目里,全局修改某一段话或文字,可以这样快速实现: 1.打开查找功能 2.输入你要替换的内容 比如,我这边想全局修改作者名称 3.点击Find,会出现一个框,会有replace出来,就和 ...

  2. 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得

    谈谈技术原则,技术学习方法,代码阅读及其它(正文) 这篇文章是前一阵在水木BBS上和别人讨论中偶自己发言的摘编,是偶这几年开发过程完全经验式的总结.完全个人经验,供批判. 一.选用技术的原则 比较规范 ...

  3. 【Spring】SpringMVC之详解AOP

    1,AOP简介 Aspect Oriented Programming  面向切面编程.AOP还是以OOP为基础,只不过将共同逻辑封装为组件,然后通过配置的方式将组件动态切入到原有组件中.这样做的有点 ...

  4. 面试求职中你需要了解的Java面向对象

    从毕业到现在,笔试过好多场 也面了好多场, 一直想写一些东西给找工作的朋友,这篇文章结合个人经历讲解面试中的面向对象.里边有些实例个人以面试题的形式写出来,从程序角度去b帮助大家了解学习,最后希望大家 ...

  5. Innodb的内存结构

    1.缓冲池从1.0.x版本开始,允许有多个缓冲池实例. mysql> show variables like 'innodb_buffer_pool_size'\G ************** ...

  6. C语言下的错误处理的问题

    下面是三种C语言的错误处理,你喜欢哪一种?还是都不喜欢? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* 问题: 不充分,而且很容易出错,前 ...

  7. Thinking In Design Pattern——MVP模式演绎

    原文<Thinking In Design Pattern——MVP模式演绎>不知为何丢失了,故重新整理了一遍. 目录 What Is MVP Domain Model StubRepos ...

  8. PMD-Java 代码检查工具对 error 和 warning 的配置

    PMD是一款优秀的Java程序代码检查工具.该它可以检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等. 但在使用过程中,你会项目中发现存在大量的 PMD 插件报出的 ...

  9. 64位FreeSWITCH编译安装(版本1.4.20)

    1.安装64位的CentOS6.5操作系统(勾选的服务器版本安装). 2.下载FreeSWITCH安装包以及关联的lib库.下载地址http://files.freeswitch.org/downlo ...

  10. CUDA 中的计时方法

    问题描述:一般利用CUDA进行加速处理时,都需要测试CUDA程序的运行时间,来对比得到的加速效果. 解决方法: 1).GPU端计时,即设备端计时. 2).CPU端计时,即主机端计时. 设备端计时有两种 ...