Docker 入门之swarm部署web应用
笔者近期在利用的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应用的更多相关文章
- docker入门3-docker swarm
swarm介绍 想要将应用部署在一个集群并运行在多台机器上? 通过将多台机器链接到"Dockerized"集群以实现应用程序运行在多容器,多机器的技术被称为swarm. 一个swa ...
- Docker管理工具 - Swarm部署记录
之前介绍了Docker集群管理工具-Kubernetes部署记录,下面介绍另一个管理工具Swarm的用法,Swarm是Docker原生的集群管理软件,与Kubernetes比起来比较简单. Swarm ...
- Docker容器使用jenkins部署web项目--总结(二)
(1)需要安装Docker容器,在Docker容器内安装jenkins,gogs,tomcat. 新建maven项目,添加findbugs plugin. 使用docker启动jenkins,go ...
- docker安装tomcat并部署web项目
docker安装tomcat就不说了,网上一大把 启动tomcat: docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tom ...
- Docker 集群Swarm创建和Swarm Web管理
关于Docker Swarm更多的介绍请查看<Docker管理工具-Swarm部署记录> 一.环境配置 1.安装环境 # cat /etc/redhat-release CentOS Li ...
- docker入门4-docker stack
stack介绍 stack是一组共享依赖,可以被编排并具备扩展能力的关联service.举例来说就是在swarm那章描述docker层次架构时,说stack就是一个完整的服务--它可以由基于flask ...
- docker入门2-docker service
docker service介绍 service是生产环境中某个image的container集合.一个service只使用一个image,但它编排这个image的运行方式,比如使用哪个端口,根据需求 ...
- Docker入门系列1:简介
可以实现快速部署. 比如一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要: 资源隔离: ...
- docker入门1-docker container
image和container介绍 一个image是一个可被docker执行的包,它包括程序运行的所有东西,包括代码,运行时,库,环境变量和配置文件. 一个container是image在内存中的运行 ...
随机推荐
- 洛谷 [P2024] 食物链
并查集 这是一道比较特殊的并查集,开一个三倍的数组, 1-n保存同类,n-n×2保存猎物,n2~n3保存天敌: #include <iostream> #include <cstdi ...
- Java获得系统的外网IP
关于如何获得系统外网IP?在网上找了好久,大多数解决方案都没法直接用,所以今天和大家分享一段获得外网IP的代码! import java.net.Inet4Address; import java.n ...
- FileBeat安装配置
在ELK中因为logstash是在jvm上跑的,资源消耗比较大,对机器的要求比较高.而Filebeat是一个轻量级的logstash-forwarder,在服务器上安装后,Filebeat可以监控日志 ...
- java设计模式在公众号的应用——我是一个快乐的单例
终于可以休息了,寻一把躺椅,安置于庭院,携一壶好茶,品一番风轻云淡... 自由自在的呼吸,伸手即可触摸阳光的温度,此时此刻,我就是我,像一个单例. 想起『设计模式』,就像想起了很久很久以前的故事,今日 ...
- dos命令(入门)
先说一下dos命令在很多情况下的共有特性 1.大小写一样,如dir和DIR 2.盘符后不加目录时,像"dir E:"和"dir E:\"没什么区别 3.使用形如 ...
- java泛型类的继承规则
首先看一看java泛型类的使用: /** * 一个泛型方法:使程序更加安全 * 并且能被更多的使用 * @author 丁** * * @param <T> */ class Pair&l ...
- Nginx的try_files指令和命名location使用实例
Nginx的配置语法灵活,可控制度非常高.在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率. 下面是一个使用实 ...
- MySQL开启binlog并且保存7天有效数据
开启binlog日志(在[mysqld]下修改或添加如下配置): server-id=1 log-bin=mysql-bin binlog_format=MIXED binlog日志模式 Mysql复 ...
- Rsync(远程同步): linux中Rsync命令的实际示例
rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行 ...
- 如何知道你的linux是什么时候安装的
在安装系统时,每个分区下都会有一个 lost+found,而且这个目录的创建时间是和该分区创建的时间一样的.所以如果想知道你的系统是什么时候安装的,只需要看这个目录的创建时间即可. 通常情况下,我们分 ...