注意:

此shell脚本仅供基本使用,还有好多待完善的地方

大致流程

  1. 使用Jenkins从Gogs拉取仓库代码,根据选择的参数和输入的标签,确定要编译打包jar的模块,以及要制作的docker镜像信息等
  2. 编译打包成jar包,然后根据代码目录里的Dockfile文件制作docker镜像
  3. 把docker镜像上传到Harbor镜像仓库

    4.最后远程连接容器主机,执行shell脚本,该脚本主要作用是登陆Harbor仓库,拉取第二步制作好的docker镜像,停用正在运行的相关容器,然后启动新容器

关键点:

  1. shell脚本中第一次运行容器的命令
  2. 停止正在运行的容器所使用的标签,shell减法计算
  3. Jenkins所在主机运行远程主机的shell脚本,除了配置jenkins所在主机的jenkins用户免密登陆远程主机外,还要给远程主机的shell脚本增加可执行权限

问题:

每次停止一个容器,新运行一个容器后,eureka界面都会显示出来,初步怀疑是因为eureka界面注册使用的那个地址不固定有关,详看截图



#!/bin/bash

IMAGE=$1
TAG=$2
PULL_IMAGE=192.168.75.12/springcloud/${IMAGE}:${TAG}
# 计算减法,并输出带有小数点前面的0, 比如 0.3-0.1=0.2
CURRENT_IAMGE=`echo "$TAG - 0.1" | bc | awk '{printf "%.1f", $0}'` echo "登陆Harbor仓库"
docker login http://192.168.75.12 -u admin -p harbor12345 if [ $? -eq 0 ]; then
echo "登陆Harbor仓库成功"
else
echo "登陆Harbor仓库失败"
return 1
fi echo "从Harbor仓库拉取指定镜像"
docker pull ${PULL_IMAGE} # 启动命令
# docker run -d --name spring-cloud-eureka-server-demo -p 9011:9011 192.168.75.12/springcloud/spring-cloud-eureka-server-demo:0.1 # 更新容器操作 echo "先停止现有的容器"
docker stop ${IMAGE}_${CURRENT_IAMGE} echo "等待10秒"
sleep 10 echo "启动"
if [ ${IMAGE} == "spring-cloud-eureka-server-demo" ]; then
docker run -d --name ${IMAGE}_${TAG} -p 9011:9011 ${PULL_IMAGE}
elif [ ${IMAGE} == "spring-cloud-eureka-client-demo" ]; then
docker run -d --name ${IMAGE}_${TAG} -p 9012:9012 ${PULL_IMAGE}
elif [ ${IMAGE} == "spring-cloud-eureka-consumer-demo" ]; then
docker run -d --name ${IMAGE}_${TAG} -p 9013:9013 ${PULL_IMAGE}
fi # docker run -d --name spring-cloud-eureka-server-demo -p 9011:9011 ${IMAGE} if [ $? -eq 0 ]; then
echo "更新容器成功"
else
echo "更新容器失败"
return 1
fi

从Harbor仓库拉起镜像,创建容器并更新shell脚本的更多相关文章

  1. 关于docker-环境部署及拉取镜像创建容器的过程记录

    背景:因安全部门要求对特定几台应用主机的进行漏洞及脆弱性扫描,使用的工具需要基于docker环境,即他们提供镜像,让我们创建成容器,于是将整个环境安装及创建docker容器的过程记录于此 1.还是先得 ...

  2. 关于使用kubeoperator搭建k8s集群使用containerd作为容器运行时,从自己搭建的habor仓库拉取镜像的有关说明

    1.kubepi界面添加habor仓库信息,并授权给k8s集群 这一步的操作是当在工作负载选择从harbor仓库拉取镜像时会自动创建有关的secrets信息,从而不用事先手动创建了(有别于kuboar ...

  3. 配置 Containerd 在 harbor 私有仓库拉取镜像

    官方文档地址:https://github.com/containerd/cri/blob/master/docs/registry.md 严格来说,这个具体可分为两部分 1.在k8s中使用Conta ...

  4. Portainer安装,配置自定义镜像仓库拉取镜像

    Portainer介绍 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台 ...

  5. k8s实战之从私有仓库拉取镜像 - kubernetes

    1.实战目的 从私有docker仓库拉取镜像,部署pod.上一篇中,我们搭建了私有的镜像仓库,这一篇我们将与k8s结合实战使用私有仓库. 2.登录docker 为了完成本次实战,需要登录docker, ...

  6. K8S从私有仓库拉取镜像

    通常来讲,我们在通过公共镜像仓库拉取docker镜像的时候,不需要任何的认证操作,但我们在构建了企业的私有镜像以后,就不得不在拉取镜像之前通过用户名密码来完成认证. 在docker单机环境中,我们可以 ...

  7. docker定制化镜像的构建及基于该定制的镜像创建容器

    1.在项目里创建Dockerfile(注意大小写)文件,执行构建命令:docker build -t tiny-node-1 /root/tiny-node-docker    其中tiny-node ...

  8. 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

    在前一篇博文中我们了解了阿里云容器服务的路由机制: 请求 -> 负载均衡80端口 -> 容器主机9080端口 -> acsrouting路由容器80端口 --基于域名--> W ...

  9. Docker - 使用 Jenkins 镜像创建容器,并搭建 Python + Pytest +Allure 的自动化测试环境

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 安装 Docker 直接参考我这 ...

随机推荐

  1. 微信小程序轮播组件

    在index.wxml中添加以下代码 <view> <swiper indicator-dots="{{indicatorDots}}" autoplay=&qu ...

  2. BMP文件格式详解(BMP file format)

    BMP文件格式,又称为Bitmap(位图),或是DIB(Device-Independent Device,设备无关图),是windows系统中广泛使用的图片文件格式,由于它可以不作任何变换地址保存图 ...

  3. [JLOI 2015]骗我呢

    传送门 Description 求给\(n*m\)的矩阵填数的方案数 满足: \[ 1\leq x_{i,j}\leq m \] \[ x_{i,j}<x_{i,j+1} \] \[ x_{i, ...

  4. Mybatis 面试题

    题目: 什么是Mybatis?  Mybatis27题 Mybaits的优点 Mybatis27题 MyBatis框架的缺点 Mybatis27题 MyBatis框架适用场合Mybatis27题 My ...

  5. 刷题记录:[ByteCTF 2019]EZCMS

    目录 刷题记录:[ByteCTF 2019]EZCMS 一.知识点 1.源码泄露 2.MD5长度扩展攻击 3.php://filter绕过正则实现phar反序列化 刷题记录:[ByteCTF 2019 ...

  6. [Beta]第六次 Scrum Meeting

    [Beta]第六次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/5/14 22:00 30min 大运村公寓6F寝室 附Github仓库:WEDO 例会照片 (两人回 ...

  7. java.net.MalformedURLException: unknown protocol: 异常

    开门见山的说,第一个参数u,赋的值是 "D://123.txt",于是乎,报错了,java.net.MalformedURLException: unknown protocol: ...

  8. excel矩阵相乘矩阵求逆

    如何用电子表格计算两个矩阵相乘 https://jingyan.baidu.com/article/219f4bf7c9039cde452d3854.html   工具/原料 Microsoft Ex ...

  9. Oracle系列七 子查询

    子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询 (内查询) 在 ...

  10. ASP.NET MVC下如何返回图片

    方式一: 首先,我们应当从控制器入手,控制器一般不都是return View的吗?那怎么返回图片? 当然,Controller类也没有return Image 的,上次我们的例子是返回JSON,其实我 ...