docker swarm部署SpringCloud微服务

一、引言

介绍一下,从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)

$ 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的存储驱动程序。

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

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

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3、安装docker

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

$ sudo yum install docker-ce

(2)启动docker 

$ sudo systemctl start docker

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

$ docker -v
Docker version 18.09.0, build 4d60db4

(4)镜像加速

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

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

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

$ docker login

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

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

$ 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 (在另一台机器上运行)

$ 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集群信息

$ 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上的配置

 
    	docker-hub
    	dockerHub账户
    	密码
    	
    		邮箱
    	
    

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

docker swarm部署SpringCloud微服务_第1张图片

6、启动springCloud项目

(1)配置docker网卡 

$ docker network create -d overlay --subnet 10.0.0.0/24 my_net

docker swarm部署SpringCloud微服务_第2张图片

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

(2)启动微服务

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

$ 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运行如下命令

$ 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 swarm部署SpringCloud微服务_第3张图片

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

四、结语

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

 

 

你可能感兴趣的:(微服务,SpringCloud,docker,java开发)