注意:

此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. 62、Spark Streaming:容错机制以及事务语义

    一. 容错机制 1.背景 要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义: 1.RDD,Ressilient Distributed Dataset,是 ...

  2. 数据结构实验之排序四:寻找大富翁(SDUT 3401)

    #include <stdio.h> #include <stdlib.h> #include <string.h> void Swap(int a[], int ...

  3. Codeforces Round #595 (Div. 3)

    A - Yet Another Dividing into Teams 题意:n个不同数,分尽可能少的组,要求组内没有两个人的差恰为1. 题解:奇偶分组. int a[200005]; void te ...

  4. 软件工程--团队项目选择与NABCD

    目录 Part1:项目说明 项目基础 我们的目标 Part2:项目NABCD Need Approach Benefit Competitors Delivery & Data Deliver ...

  5. Tracking without bells and whistles

    Tracking without bells and whistles 2019-08-07 20:46:12 Paper: https://arxiv.org/pdf/1903.05625 Code ...

  6. 分布式事务之最终一致性BASE理论

    一.事务 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚.简单地说 ...

  7. excel矩阵运算操作-转置 行列式 相乘 逆阵

    excel矩阵运算操作-转置 行列式 相乘 逆阵 https://jingyan.baidu.com/article/154b463128e13928ca8f41a4.html Excel中矩阵的相关 ...

  8. 如何从OA系统批量整理出邮箱地址,并导入到Foxmail 地址薄中?

    一.打开某位leader的OA,点击查看“下属” a. 将所有的下属信息 --- 全选 --- 复制 --- 粘贴到 excel 表格中 b. 分别提取“姓名” 和 “邮箱”地址信息,结合notepa ...

  9. linux设置程序运行超时时间

    在某些情况下,我们需要限制程序的运行时间(比如cronjob等),这里简单介绍下使用信号及timeout的实现方法 1. 假如有如下代码(test_timout.sh): #!/bin/bash wh ...

  10. django-rest-framework 使用例子

    Start Your API 创建项目 startproject rest_api 创建APP startapp task 配置 rest_api/settings.py INSTALLED_APPS ...