设为首页 收藏本站
查看: 1083|回复: 0

[经验分享] docker实现swarm+compose部署服务

[复制链接]

尚未签到

发表于 2018-5-27 09:01:32 | 显示全部楼层 |阅读模式
Docker技术swarm+compose部署服务

一、实验环境
选择三台主机运行swarm,依次为:
Node1:manager    192.168.111.10
Node2:manager    192.168.111.11
Node3        192.168.111.12
1、基本环境配置
  3台保持一致时间 ntp
  3台关闭selinux,开启路由转发
DSC0000.png
DSC0001.png
  3台主机根据上面环境修改主机名和IP地址
2、配置host
以node1为例
#vim  /etc/hosts
DSC0002.png
3、3台开启宿主机的端口
DSC0003.png
4、配置所有节点的密钥登录

配置以下节点密钥互信,在node1上免密钥登录各节点,只在node1上执行生成sshkey

DSC0004.png

node1发布sshkey到各个节点

#ssh-copy-id  node1

#ssh-copy-id  node2

#ssh-copy-id  node3

测试密钥登录

DSC0005.png

5、在所有主机上安装docker最新版本(才能支持compose的版本3

下载docker

#curl  -fsSL   https://get.docker.com/ | sh

启动docker

DSC0006.png

查看docker版本

DSC0007.png

docker  swarm 简介:

Docker  engine1.12集成了swarm集群工具

三个命令行工具创建一个swarm集群

Docker  swarm:开启swarm模式;加入swarm集群;配置集群参数

Docker  node查询集群节点信息;提升/移除一个管理节点;管理swarm节点主机。

Docker service创建管理service

可查看docker  --help

6、创建docker swarm集群

node1上初始化docker  swarm

DSC0008.png

node2已加入work

DSC0009.png

node3已加入

DSC00010.png

#docker  node  ls    查看节点个数

DSC00011.png

为了使swarm集群实现高可用,避免出现单点故障,我们希望建立多个manager集群 ,通过Docker  node  promote  节点名,

node1上使node2的work模式提升到manager

DSC00012.png

DSC00013.png

7、node1上制作私有仓库

#docker  pull  registry:2    下载私有仓库镜像

#docker  images

DSC00014.png

注意:默认情况下,registry2 会将仓库存放于容器的/var/lib/registry 目录下,这样如果容器被删除,
则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器的
/var/lib/registry 下,两个目录下都有!
·registry 的默认存储路径是/var/lib/registry,只是个临时目录,一段时间之后就会消失
·所以使用-v 参数,指定个本地持久的路径

DSC00015.png

DSC00016.png

返回{"repositories":[]} 说明 registry 服务工作正常.
注: 镜像信息存放在/var/lib/registry 目录下,因此这里将宿主机目录映射到/var/lib/registry

3台都指向 registry 服务器

修改/usr/lib/systemd/system/docker.service,修改后保存退出

#vim  /usr/lib/systemd/system/docker.service

DSC00017.png

#systemctl   daemon-reload          先加载

#systemctl   restart   docker         再重启docker

通过swarm配合compose实现swarm高可用群集服务。

8、在node1上安装compose

networks: 在 compose file V3, 允许我们通过networks关键字定义一个基于 Docker0 网络的 subnet。然后将我们的服务添加到这个subnet中。这样做的好处实现了服务之间的隔离,一旦我们不需要这组服务了,我们可以通过命令“docker-compose down

安装docker-compose

DSC00018.png

只需在node1主机安装docker-compose

#pip  install   docker-compose                  安装compose

#ln  -s   /usr/bin/docker-compose  /usr/local/bin/   做软连接

#docker-compose   -v    查看compose版本

DSC00019.png

9、node2上配置各服务镜像

基础镜像:

192.168.111.10:5000/centos:centos7

nginx服务镜像:

DSC00020.png

dockerfile:

DSC00021.png

nginx.conf

DSC00022.png

192.168.111.10:5000/centos:nginx33

Tomcat1配置

服务镜像:

DSC00023.png

Dockerfile

DSC00024.png

Tomcat主配置文件server.xml

DSC00025.png

编辑首页文件index.jsp

docker compose+swarm www.tomcat111.com

注意Tomcat2配置和tomcat1类似只需改动tomcat1的index.jsp

docker compose+swarm www.tomcat222.com

192.168.111.10:5000/centos:tomcat01

192.168.111.10:5000/centos:tomcat02

Tomcat配置完毕

DSC00026.png

DSC00027.png

10、在node1编辑compose文件

#mkdir  /docker-compose

#vim   docker-compose.yml

DSC00028.png

注意:在创建网络的时候会生成一个默认网络

运行docker stack deploy结合swarm实现多服务管理

Docker stack 命令是docker-compose下的

#docker  stack  deploy  自定义名字   --compose-file=***.yml

DSC00029.png

#docker  service  ls

DSC00030.png

#docker   network  ls    查看网络

DSC00031.png

#docker   ps  -a

DSC00032.png

node2

#docker  service  ls

DSC00033.png

  #docker  network  ls
   DSC00034.png
  #docker  ps  -a
   DSC00035.png
  node3
  #docker network ls   
   DSC00036.png
  #docker  ps  -a
   DSC00037.png
  客户端验证:http://192.168.111.10
   DSC00038.png
   DSC00039.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481629-1-1.html 上篇帖子: 跨主机使用 Rex 下篇帖子: Docker的一些常用命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表