前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker swarm部署SpringCloud微服务

docker swarm部署SpringCloud微服务

作者头像
张泽旭
发布2018-12-28 17:21:02
2.1K1
发布2018-12-28 17:21:02
举报
文章被收录于专栏:张泽旭的专栏张泽旭的专栏

一、引言

介绍一下,从0到1如何用docker swarm集群部署微服务;

二、环境准备

1、代码准备 

码云  : https://gitee.com/zhangzexu/blog-parent.git

github: https://github.com/zhangzexu/blog-parent.git

2、CentOS 6.7 主机两台,虚拟机,服务器都可以,虚拟机配置桥接,其他的随意。(自己用的是华为云,在配置的时候直接使用云服务器内网地址即可:  192.168.0.119 、 192.168.0.116)

需要安装jdk1.8 ,其他jdk版本没有测试,有兴趣的可以自己测试一下。

安装maven,本测试项目使用maven

3、DockerHub账号一枚,注册地址 https://hub.docker.com/,如果是私服仓库请用自己的仓库和地址( 自己用的是docker hub账号,方便)

三、docker安装

命令没有具体说明安装在几台机器上,默认所有机器安装。

1、较旧版本的Docker被称为dockerdocker-engine。如果已安装这些,请卸载它们以及相关的依赖项。(可以参考官方文档:

https://docs.docker.com/install/linux/docker-ce/centos/#set-up-the-repository)

代码语言:javascript
复制
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2、设置存储库

(1)安装所需的包。yum-utils提供了yum-config-manager 使用,并由device-mapper-persistent-datalvm2提供需要 devicemapper的存储驱动程序。

代码语言:javascript
复制
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

(2)使用一下命令设置稳定的docker存储库

代码语言:javascript
复制
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3、安装docker

(1)安装最新版本的Docker CE(这里为方便学习,就不安装特定版本的docker,可自行参考官方文档)

代码语言:javascript
复制
$ sudo yum install docker-ce

(2)启动docker 

代码语言:javascript
复制
$ sudo systemctl start docker

(3)查看是否启动成功(出现如下命令说明安装成功)

代码语言:javascript
复制
$ docker -v
Docker version 18.09.0, build 4d60db4

(4)镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。请在该配置文件中加入(没有该文件的话,请先建一个):vi /etc/docker/daemon.json

代码语言:javascript
复制
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

(5)登录docker hub (如果配置私服请登录私服)

代码语言:javascript
复制
$ docker login

4、创建docker swarm集群(具体可参考官方文档 https://docs.docker.com/engine/reference/commandline/swarm_init/#description

(1)创建一个集群,在其中一台主机上运行

代码语言:javascript
复制
$ docker swarm init --advertise-addr 192.168.0.116
Swarm initialized: current node (bvz81updddecsj6wjz393c09v) is now a manager.
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-7tmzhqk605dhg2g3crn9ify9k 192.168.0.116:2377

下面提示,docker swarm集群上加入一个manager可运行如下命令docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-7tmzhqk605dhg2g3crn9ify9k 192.168.0.116:2377

(2)加入一个worker (在另一台机器上运行)

代码语言:javascript
复制
$ docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-4un2i2g1moyqp619rchmwarms 192.168.0.116:2377

提示在集群上加入一个worker运行docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-4un2i2g1moyqp619rchmwarms 192.168.0.116:2377

(3)查看docker swarm集群信息

代码语言:javascript
复制
$ docker info
Swarm: active
 NodeID: soeftfx2jldeyvv164s36q4ji
 Is Manager: true
 ClusterID: ybnecqqo9euxjksatlrab2jor
 Managers: 1
 Nodes: 2

出现如下情况,说明集群安装成功,集群具体操作命令请参考https://blog.csdn.net/wanglei_storage/article/details/77508620

5、在eclipse或idea上克隆码云实例代码,分别在每个项目下使用mvn clean install 即可打包发布到docker hub上,代码的说明和pom.xml上的具体配置请参照实例代码,pom.xml参考bolg-web-ui下的pom文件,这里就不做解释了。配置maven setting文件增加docker hub上的配置

代码语言:javascript
复制
 <server>
    	<id>docker-hub</id>
    	<username>dockerHub账户</username>
    	<password>密码</password>
    	<configuration>
    		<email>邮箱</email>
    	</configuration>
    </server>

代码发布完成功后,请打开docker hub查看,当然,不发布的话,可以直接使用我的docker hub上的项目在docker swarm上运行也是可以的,如图显示发布成功后docker hub上的项目

6、启动springCloud项目

(1)配置docker网卡 

代码语言:javascript
复制
$ docker network create -d overlay --subnet 10.0.0.0/24 my_net

如图,查看会发现多了一个名为my_net的网卡,可以配置在swarm集群上,这些服务可以再同一个网络

(2)启动微服务

 docker-compose-swram.yml文件在项目的根路径下,测试请上传至docker manager节点,在manager节点上运行如下命令

代码语言:javascript
复制
$ docker stack deploy -c docker-compose-swarm.yml --with-registry-auth bolg

启动后查看 $docker service ls

我们发现微服务都已经启动起来了

(3)安装swarm集群可视化界面 visualizer请参考官网 https://hub.docker.com/r/dockersamples/visualizer/

请关闭程序占用的8080端口,在manager运行如下命令

代码语言:javascript
复制
$ docker service create \
  --name=viz \
  --publish=8080:8080/tcp \
  --constraint=node.role==manager \
  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  dockersamples/visualizer

安装成功后,在浏览器上输入manager的地址  http://IP:8080,出现如下界面

说明完成,我们访问注册中心,也会发现服务都已经启动起来了

四、结语

我们已经完成了docker部署微服务,如需更深入的学习,请大家可以继续学习其他内容,有可以有些小伙伴的机器环境不一样,没出现的结果也会不一样,有问题可以在下方留言,我会第一时间帮大家解决的

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言
  • 二、环境准备
  • 三、docker安装
  • 四、结语
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档