DevOps搭建(十二)-Jenkins推送镜像到Harbor详解

这篇具有很好参考价值的文章主要介绍了DevOps搭建(十二)-Jenkins推送镜像到Harbor详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

要完成自动部署,大致有以下几个步骤:

1、告知目标服务器拉取哪个镜像。

2、判断当前服务器是否正在运行容器,需要删除。

3、如果目标服务器已经存在当前镜像,需要删除。

4、目标服务器拉取harbor上的镜像。

5、将拉取下来的镜像运行成容器。

1、目标服务器准备脚本文件

1.1、删除原有容器

如何判断指定容器是否在运行,可通过以下脚本,如果有对应的容器ID返回,证明是有在运行的。

docker ps -a | grep ${project} | awk '{print $1}'

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

存在则停止容器,并删除容器

containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId
if [ "$containerId" != "" ] ; then
  docker stop scontainerId
  docker rm ScontainerId
fi

1.2、删除原有镜像

如果判断指定镜像是否存在,类似判断容器是否存在,如下脚本,注意有可能返回多个镜像tag

docker images | grep ${project} | awk '[print $2]'

由于有可能存在多个tag,因此判断稍微有不同,如下“

tag=`docker images | grep ${project} | awk '{print $2}'`
echo $tag
if [[ "$tag" =~ "$version" ]] ; then
  docker rmi $imageName
fi

1.3、从Harbor上拉取镜像

首先登录Harbor,然后拉取,脚本如下

登录Harbor

docker login -u admin -p Harbor12345 $harbor_addr

拉取镜像

docker pull $imageName

1.4、编写完整的脚本

1.4.1、完整脚本

vi deploy.sh

完整的脚本如下,注意宿主机端口和容器端口是否对应得上,否则访问不了

#测试脚本:./deploy.sh 192.168.88.125:80 repo devops-test v1.1.0 8081 8080
harborAddr=$1
harborRepo=$2
project=$3
version=$4
#宿主机端口
hostPort=$5
#容器端口
containerPort=$6

imageName=$harborAddr/$harborRepo/$project:$version
echo -e "当前镜像信息:$imageName \n"

#停止并删除原有容器
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
  echo "停止并删除原有的容器:$containerId ……"
  docker stop $containerId
  docker rm $containerId
  echo -e "删除容器完毕。\n"
fi

#删除原有镜像
tag=`docker images | grep ${project} | awk '{print $2}'`
if [[ "$tag" =~ "$version" ]] ; then
  echo "删除原有镜像:$version ……"
  docker rmi $imageName
  echo -e "删除镜像完毕。\n"
fi

#登录Harbor
docker login -u admin -p Harbor12345 $harborAddr

#拉取镜像
echo "开始拉取镜像:$imageName ……"
docker pull $imageName
echo -e "拉取镜像完毕。\n"

#部署镜像
echo "开始部署镜像 ……"
docker run -d -p $hostPort:$containerPort --name $project $imageName
echo "部署镜像成功。"

1.4.2、给脚本赋予权限

赋予文件可执行权限

chmod a+x deploy.sh

1.4.3、测试脚本

执行以下命令验证脚本

./deploy.sh 192.168.88.125:80 repo devops-test v3.0.0 8081 8080

看到以下日志:

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

运行

docker ps

可看到镜像已经部署上去了

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

2、Jenkins基于Harbor完成部署

2.1、将脚本文件放到$PATH路径下

echo $PATH

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

移动到/user/bin下,这样就可以在任何地方都可以执行

mv deploy.sh /usr/bin

2.2、Jenkins配置执行脚本

现在构建参数加一个工程名project和两个端口参数宿主机端口hostPort,containerPort容器端口,后面脚本会用到这些参数。

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

接着在构建后操作选择Send build artifacts over SSH选择

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

在Exec command文本框中增加执行脚本,如下

deploy.sh 192.168.88.125:80 repo $project $tag $hostPort $containerPort

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker

最后点击保存按钮。

3、构建任务部署

最后,我们点击Jenkins构建按钮进行构建,构建完成之后访问项目,发现已经是我们最新部署的项目。

http://192.168.88.125:8081/test/test

DevOps搭建(十二)-Jenkins推送镜像到Harbor详解,devops,jenkins,运维,自动化部署,docker文章来源地址https://www.toymoban.com/news/detail-776636.html

到了这里,关于DevOps搭建(十二)-Jenkins推送镜像到Harbor详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案

    📣读完这篇文章里你能收获到 全文采用图文形式讲解 学会使用Harbor配置项目 学会在Jenkins中配置Harbor推送权限 使用Jenkins和Harbor进行持续集成的实践 感谢点赞+收藏,避免下次找不到~ 在现代软件开发中,自动化部署是提高效率和可靠性的关键。本文将带你深入探索如何使用

    2024年02月08日
    浏览(55)
  • DevOps极速入门丨Gitlab丨Jenkins丨harbor丨CICD丨自动化丨运维开发

    一、DevOps介绍 软件开发最开始是由两个团队组成: 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。 运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。 这看似两个目标不同的团队需要协同完成一个软件的开发。 在开发

    2023年04月18日
    浏览(64)
  • Jenkins实现自作自定义镜像并推送Harbor并编写目标服务器准备脚本

    部署项目需要通过Publish Over SSH插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启动的命令,推荐采用脚本文件的方式。 添加脚本文件到目标服务器,再通过Publish Over SSH插件让目标服务器执行脚本即可。 deploy.sh

    2024年01月18日
    浏览(75)
  • GitLab+Jenkins搭建DevOps一体化运维平台

    ​ 大家拿到代码后,要如何运行呢?导入IDEA,然后启动?开发过程可定没有问题,那生产环境呢?在现在互联网大环境下,越来越要求开发运维一体化。如果对于企业级的项目管理方式不了解,那么开发工作将举步维艰。这一节课主要带大家快速理解一下电商项目的运维部

    2024年02月09日
    浏览(47)
  • DevOps搭建(十六)-Jenkins+K8s部署详细步骤

    ​ 要想从Harbor仓库中拉取镜像,首先要往主机和从机的daemon.json文件中添加Harbor的地址信息 \\\"insecure-registries\\\":[\\\"192.168.88.125:80\\\"],别忘了80端口 添加完之后,重启下docker 要拉取镜像,需要Harbor登录进行拉取,到Kuboard控制台对应的命名空间找到 密文 菜单,点击 创建Secret 。 填写

    2024年01月16日
    浏览(46)
  • 一篇文章带你用Jenkins和Kubernetes搭建DevOps平台

    首先我们来看一张图(图片来自互联网,如有侵权,可联系我删除): DevOps其实就是一个系统,它能从编码到构建到测试到发布到部署的全套流程,本篇文章就带你用Jenkins和Kubernetes体验一下自动化部署的一套完整流程。 视频教程地址:https://www.bilibili.com/video/BV1z8411S7Z8/ 本节讲

    2024年02月15日
    浏览(47)
  • DevOps搭建(十九)-Jenkins+K8s自动化CI搭建详细步骤

    完整的pipeline-auto.yml脚本如下 完整的Jenkinsfile脚本如下 在Jenkins插件管理中搜索GitLab插件进行安装。 进入Jenkins项目配置里的 构建触发器 ,勾选如下选项: 从系统管理-系统配置-Gitlab将验证去掉,生产最好配置保证安全。 如果是GitLab和Jenkins在同一台服务器,需要开启允许请求

    2024年01月23日
    浏览(90)
  • k8s服务部署核心流程:以Jenkins为核心,从Gitee拉取代码,然后进行maven构建,之后使用docker命令打镜像,并推送镜像到harbor仓库,之后远程调用k8s命令创建服务

    前提是我们在自己电脑上模拟整个流程。 假设我们需要搭建一主一从的k8s集群,那就需要安装VMvare和Centos7(点击我查看安装文档), 然后就可以在这两个虚拟机上搭建k8s集群了(点击我查看安装文档), 一个最简单的devops流程已经在标题中写明了, 其中可以搭建gitlab(点

    2024年02月02日
    浏览(57)
  • CentOS 搭建 Harbor 镜像仓库(图文详解)

    说明:在搭建 Harbor 镜像仓库之前,虚拟机要先安装 docker 和 docker-compose。 本文接下来的命令都是在 root 身份下运行的。 直接下载可以使用以下命令: 直接在虚拟机内部执行上面这条命令的话,下载速度会很慢,所以此处通过外部主机下载后共享文件夹导入虚拟机中。 输入

    2024年02月13日
    浏览(41)
  • DevOps-Jenkins

    Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官网 场景一 研发人员上传开发好的代码到github代码仓库 需要将代码下载nginx服务器部署 手动下载再部署/使用脚本下载在部署 场景二 静态IP(可以上

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包