笔者近期在利用的docker搭建一个swarm集群,目前的应用还是入门级的,读者可自行根据自己的需要修改自己需要部署的应用,今天笔者介绍的是一个web应用的swarm集群的搭建。看这篇文章之前,我希望读者把笔者前面两篇文章都认真搭建一遍,因为今天的应用主要是基于前面两篇文章的。

一,理解swarm集群

一个swarm是一组运行docker的机器加入到一个集群,这些机器可以是虚拟的也可以是物理的,这个集群中只有一个swarm管理者,其他的都是worker,它们统称为节点。

一个swarm管理者如何管理这些docker容器呢?这就涉及到swarm的调度方式。swarm有两种调度方式,一种是“emptiest node”即最大限度的利用每个机器,给一个机器尽可能的分配足够多的容器,另一种是“global”即确保每台机器至少运行一个容器。策略的选择可以通过改变docker-compose文件。

一个swarm管理者可以执行用户的命令,或者认证加入进来swarm集群的其他worker节点,而worker节点只提供他的计算或者存储等能力而不具备认证功能。如图

二,准备工作(在两台物理机上部署)

1,安装好docker compose组建。

2,按照我的上两篇文章将friendlyhello镜像运行成功并上传至自己的docker仓库(可选,如果没有,可以push我仓库中的镜像,我已经设置成public了,镜像名称是:sunshine99/ubuntu1.1,在下载前你需要登陆自己的docker帐号哦,运行 docker login 然后输入自己的用户和密码就好了)。

3,按照我上一篇文章的思路在本地调通了单主机的web应用。

4,两台主机需在同一个局域网下。

三,步骤

1,在任意一台主机上创建一个swarm管理者

docker swarm init --advertise-addr <ip>

(将ip替换成自己主机的ip地址即可)

仔细观察运行后的输出,它会告诉你其他主机加入这个swarm集群需要输入的命令,命令格式为:

docker swarm join --token <token>  <ip>:<port>

一般而言,如果是在多台物理机上搭建swarm集群,那么port就是2377,如果是在docker虚拟机上搭建的,那么port就是2376。

2,在另外一台机器上运行上述命令的输出,若看到This node joined a swarm as a worker 恭喜你,最难的第一步已经创建成功。

3,部署自己的应用,我这里选取的是一个web应用,这个镜像已经在前面两篇文章中创建好了,这里我再贴一下这个docker-compose.yml文件。

将上述代码保存为docker-compose.yml,在manager节点的那台机器上运行

docker stack deploy -c docker-compose.yml getstartedlab

其中getstartedlab是我给这个web应用取得名字。

4,运行成功后你可以在manager节点的这台机器上输入命令进行验证查看

docker stack ps getstartedlab

5,在两台机器上分别访问该web网页。

在网页上输入创建manager节点时设定的ip即可。

至此,一个简单的web应用就部署在了swarm集群上了。完整的流程截图如下。

本文参考了docker官网文献。请勿转载。

Docker 入门之swarm部署web应用的更多相关文章

  1. docker入门3-docker swarm

    swarm介绍 想要将应用部署在一个集群并运行在多台机器上? 通过将多台机器链接到"Dockerized"集群以实现应用程序运行在多容器,多机器的技术被称为swarm. 一个swa ...

  2. Docker管理工具 - Swarm部署记录

    之前介绍了Docker集群管理工具-Kubernetes部署记录,下面介绍另一个管理工具Swarm的用法,Swarm是Docker原生的集群管理软件,与Kubernetes比起来比较简单. Swarm ...

  3. Docker容器使用jenkins部署web项目--总结(二)

    (1)需要安装Docker容器,在Docker容器内安装jenkins,gogs,tomcat.   新建maven项目,添加findbugs plugin. 使用docker启动jenkins,go ...

  4. docker安装tomcat并部署web项目

    docker安装tomcat就不说了,网上一大把 启动tomcat: docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tom ...

  5. Docker 集群Swarm创建和Swarm Web管理

    关于Docker Swarm更多的介绍请查看<Docker管理工具-Swarm部署记录> 一.环境配置 1.安装环境 # cat /etc/redhat-release CentOS Li ...

  6. docker入门4-docker stack

    stack介绍 stack是一组共享依赖,可以被编排并具备扩展能力的关联service.举例来说就是在swarm那章描述docker层次架构时,说stack就是一个完整的服务--它可以由基于flask ...

  7. docker入门2-docker service

    docker service介绍 service是生产环境中某个image的container集合.一个service只使用一个image,但它编排这个image的运行方式,比如使用哪个端口,根据需求 ...

  8. Docker入门系列1:简介

    可以实现快速部署. 比如一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要: 资源隔离: ...

  9. docker入门1-docker container

    image和container介绍 一个image是一个可被docker执行的包,它包括程序运行的所有东西,包括代码,运行时,库,环境变量和配置文件. 一个container是image在内存中的运行 ...

随机推荐

  1. 2018/2/14 设计模式学习笔记(一) 自己实现ArrayList,LinkedList和Iterator,以及在此过程中对于面向对象,面向接口,还有抽象类的一些思考感悟

    因为本人目前为止学习编程不过七个月,所以后面的感悟对于一些大神来说可能嗤之以鼻,但对于一些刚刚入门的萌新来说在理解面向对象的思想上,以及抽象类和接口应该怎么设计等方面应该还是会有所帮助的 首先我们定义 ...

  2. 2018/1/27 Zookeeper实现分布式锁

    public class DistributedClient { // 超时时间 private static final int SESSION_TIMEOUT = 5000; // zookeep ...

  3. 线性一致性与全序广播------《Designing Data-Intensive Applications》读书笔记12

    上一篇聊了聊构建分布式系统所面临的困难,这篇将着重讨论构建容错分布式系统的算法与协议.构建容错系统的最佳方法是使用通用抽象,允许应用程序忽略分布式系统中的一些问题.本篇我们先聊一聊线性一致性,以及与线 ...

  4. My97DatePicker选择两个日期范围不超过30天的demo

    需求 ExtJs下使用My97DatePicker对时间范围不超过30天进行选择. 关键点 使用全局变量. 对选择完的第一个日期进行逻辑判断.(我的逻辑能力还有待加强啊) 因为当选择了第一个框范围在超 ...

  5. javascript 模块

    一.模块 function foo() { var something = "cool"; var another = [1, 2, 3]; function doSomethin ...

  6. laravel框架学习-缓存,事件

    缓存配置:app/config/cache.php   缓存:     增加缓存项: Cache::put( 'key', 'value', $Cachetime );     在缓存中增加一个不存在 ...

  7. os模块中关于文件/目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...

  8. maven排除jar包冲突

    首先查看mvn中冲突的包 使用命令:mvn dependency:tree -Dverbose | grep "omitted for conflict with" windows ...

  9. [翻译]【目录】编写高性能 .NET 代码

    本篇是 Writing High-Performance .NET Code 的目录索引,翻译内容不定时更新,目录也会同步修改. 性能测量及工具 选择什么来衡量 平均数vs百分比 工具介绍 Visua ...

  10. [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Performance Counters(性能计数器)

    <<返回目录 Performance Counters(性能计数器) 性能计数器是监视应用程序和系统性能的最简单的方法之一.它有几十个类别数百个计数器在,包括一些.net特有的计数器.要访 ...