概述
背景:由于spring cloud部署的应用很多,每次重启在虚拟机编写指令需要很多而且每个服务器都需要,解决这一繁琐操作,我们将对应的服务用docker打包,然后rancher运行docker容器,在ranchar图形界面进行操作
1. 首先准备2个环节,分布在linux安装docker,一次执行即可
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-17.12.0.ce
systemctl start docker
systemctl enable docker
2. 在*1上面安装rancher服务,执行命令,默认安装+运行, 将容器的8080端口 映射到虚拟机8000端口
docker run -d --restart=unless-stopped -p 8000:8080 rancher/server:stable
我们访问一下
3. rancher服务启动好以后,需要物理linux来支持,这就是为什么需要2个linux,在另一个linux,注册相应的服务,供rancher监听,之后rancher会部署到该服务器
将下面的命令在*2服务器执行,就可以将该主机注册到rancher
在*2服务器启动的服务有
如果主机停掉,需要 手动去开启这些服务就可以注册了,本人遇到过哈
4. 将spring cloud对应的服务打包成docker,并上传到阿里云
编写Dockerfile
FROM openjdk:8-jre
RUN mkdir /app
COPY iplatform-eureka-1.0.0.jar /app/
CMD java -jar /app/iplatform-eureka-1.0.0.jar
EXPOSE 8761
将jar放在同级目录,执行,docker build -t eureka:latest . 后面有个点哦
首先docker登录,docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com
注册tag,然后push到镜像仓库
docker tag 866b8dc94db6 registry.cn-hangzhou.aliyuncs.com/repo_lh/eureka:1.0
docker push registry.cn-hangzhou.aliyuncs.com/repo_lh/eureka:1.0
这就就将docker打好,然后上传阿里云
5. 在rancher配置镜像地址
添加应用,然后再应用添加各个容器 服务
添加容器服务
这里镜像就是我的阿里云镜像
我们发现会报错,Container should have been running but is in error state. Check logs for more information.: Image [registry.cn-hangzhou.aliyuncs.com/repo_lh/eureka] failed to pull: Error: image repo_lh/eureka:latest not found
是因为我们镜像是需要登录才可以下载的
这里我们就需要在rancher配置镜像库
番外:
这个在建立服务的时候才会拉取镜像,如何才能手动去告诉,需要更新镜像,这个后面再说
移除, docker rm -f $(sudo docker ps -a) , sudo docker rm -f $(sudo docker ps -qa)可以移除docker容器
如果过程中遇到
ERROR: http://192.168.196.196:8080/v1 is not accessible (Failed to connect to 192.168.196.196 port 8080: No route to host)
可能是防火墙拦截了,需要将端口开通或者将防火墙关闭
遇到
connection refused暂时没有解决,可能是因为安装了rancher:latest,所以要安装stable稳定版,后面再出现该问题再处理
在部署应用过程中,我们起了2个项目,想要分布在2个虚拟机。而不是随机部署容器。
应用部署到指定主机
首先 在 主机1增加标签
io.rancher.service.requested.host.id = 1
主机2 增加标签
io.rancher.service.requested.host.id = 2
在部署应用的时候,如果想部署到主机1 则应用标签与1相同即可
最后
以上就是忧心哈密瓜为你收集整理的spring cloud分布式部署docker+rancher的全部内容,希望文章能够帮你解决spring cloud分布式部署docker+rancher所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复