git+jenkins+docker+registry的CICD简单实现

  • 背景
  • 环境准备
  • 部署
    • docker
    • git repository
    • registry
    • jenkins
  • 自动化CICD
    • 基础镜像Dockerfile
    • jenkins部署容器脚本
  • 参考

  实现服务容器化能极大提高CICD的效率,利用git+jenkins+docker+registry能提供一套比较简单的实现方案,如果对docker和jenkins比较熟悉,实现过程会非常简单。

背景

  CICD,即持续集成持续部署,而jenkins就是一个持续集成工具。docker是容器,registry是容器镜像仓库。由它们集成可以实现服务容器化CICD的需求,也是目前自动化运维的一个主要实现手段。

环境准备

  一台服务器就可以完成实验,但建议至少两台服务器,这样能够多了解生产环境应该如何去部署服务器。

  registry是一个镜像仓库,用来存放我们项目的运行环境镜像。git仓库可以选择官方或者公司或者自己搭建的私有库,jenkins负责拉取最新项目,进行构建并发布到docker服务器上,执行镜像的启动,docker服务器负责从registry拉取镜像,并作为容器运行的宿主机。下面一张图可以简要表述大概的工作流程:

  根据上图,所有的模块都可以运行在docker容器中,所以,一台服务器也是可以完成实验的,可根据条件自行选择。

部署

  部署过程可以直接分为4步,分别去构建上图中的4个部分。

docker

  首先安装docker,在centos7的环境中,命令如下:

yum -y install docker

  安装了docker之后,就可以开始使用docker命令安装其他的模块,如果是不同的机器,则需要在使用docker的服务器上都安装docker。

git repository

  git仓库,其实不用自己搭建,用公司的或者官方的都可以。如果实现想自己搭,就先在服务器上安装git,选择一个目录执行git --bare init命令,仓库就建立好了。如何上传项目就不细说了,网上教程很多。

registry

  registry是docker官方提供的仓库镜像,因此通过docker可以直接执行。
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

  可以通过大专栏  git+jenkins+docker+registry的CICD简单实现-rouge">docker ps命令查看registry是否已经启动执行了。这是私人的镜像仓库,默认暴露的端口号是5000,使用docker通过push命令可以将docker镜像发送到registry。

  如果想要把docker镜像提交到私有registry,则需要修改使用docker提交的服务器的一个配置 vim /etc/docker/daemon.json,需要在该文件中加上registry的地址:

{
  "registry-mirrors": [ "https://registry.docker-cn.com"], //国内镜像源
  "insecure-registries": [ "registry的ip:5000"]
}

jenkins

  依旧通过docker容器来起jenkins服务。可以去查找官方的基础镜像,这东西和maven提供的依赖非常类似。当然也可以自己去构建一个镜像,然后自己启动。以下内容是一个jenkins的Dockerfile:

FROM jenkins
USER root
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list &&
wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list
RUN apt-get update && apt-get install -y git

  在这里不解释太多关于Dockerfile的东西,内容太多,而且是必须要经过学习的。

自动化CICD

  通过之前的那张图可以看到,主要的工作由jenkins完成。(其中插件可以自行安装)

  1. 完成jenkins和gitlab的通信,使jenkins能访问到gitlab。
  2. 完成jenkins通过SSH访问到docker服务器。
  3. 通过jenkins完成项目的构建。
  4. 通过jenkins执行shell脚本完成项目所在docker容器的启动。

  非常简单的描述了大致的工作。主要工作都是在jenkins中配置,这里就只贴项目运行的基础镜像的Dockerfile和jenkins部署容器的shell脚本。

基础镜像Dockerfile

  这是项目运行的基础镜像Dockerfile,如果是Springboot项目,环境中只需要有个JDK就可以了,如果有特殊的需求,也可以在Dockerfile文件中列出来。

#基础镜像为centos
FROM centos:latest
#挂载宿主机镜像到容器的PATH中
ENV PATH /usr/local/jdk/bin:$PATH
#暴露8089端口
expose 8089
#容器启动时执行命令
CMD ["/usr/local/jdk/bin/java", "-jar","/demo/demo-0.0.1-SNAPSHOT.jar"]

jenkins部署容器脚本

  jenkins通过SSH连接到docker容器运行的服务器上,然后通过shell脚本对容器的启动和停止删除进行操作。

docker rm -f shorturl
docker rmi -f 192.168.2.49:5000/demo:v1
docker run -itd
--name shorturl
-p 8089:8080
-v /usr/local/jdk1.8.0_181:/usr/local/jdk
-v /demo:/demo
192.168.2.49:5000/demo:v1

  脚本的内容比较简单,就不详细说明了。

参考

实战docker+jenkins+git+registry构建持续集成环境

原文地址:https://www.cnblogs.com/liuzhongrong/p/11874879.html

时间: 2024-10-01 02:49:09

git+jenkins+docker+registry的CICD简单实现的相关文章

从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java 程序.Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译.打包.部署.通过规范化来完成,简单,繁琐,浪费时间的重复工作. Jenkins名言:构建伟大,无所不能! Jenkins用户手册传送门:https://jenkins.io/zh/doc/ 二.发布流程 工作详细流程

第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8s-master上执行rc.service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器 在第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步.本节实现第三步 一.打通jenkins与k8s-master两台机器之间的ssh无密码访问

第四十三章 微服务CICD(5)- gitlab + jenkins + docker

一.总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(centos7) ip:10.211.55.3 docker:1.10.3(装k8s1.4的时候自带安装的版本) 总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry, 之后将

基于 Jenkins+Docker+Git 的CI流程初探

在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部署.交付(CD).在此,我们来以一个案例初步了解 CI 流程.那么什么是 CI 呢?简单来讲,CI 就是将传统的代码合并.构建.部署.测试都集成在一起,不断地执行这个过程,并对结果进行反馈. CI 流程设计图: 工作流程: 1. 开发人员提交代码到Git版本仓库:2. Jenkins人工/定时触发项

Jenkins+Docker+Git+Harbor流水线打包

环境: CentOS Linux release 7.6.1810 (Core) 192.168.247.214 Jenkins+docker 192.168.247.215 git+harbor [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld Step1: 安装jdk环境(214) 下载地址:https://www.oracle.com/tech

Jenkins+Docker+Git集成平台搭建

一.环境准备 以我本地为例[Jenkins:192.168.132.52           Docker:192.168.10.143] 1.一台运行Jenkins服务的服务器,需安装插件:git plugin.Git Parameter Plug-In.GitLab Plugin.Publish Over SSH.SSH Slaves plugin 2.一台或若干Docker宿主机服务器 3.一台提供Git服务的服务器(直接使用github服务) 二.搭建Docker宿主机 (1).安装并启

简单搭建docker registry

已知信息: 服务端IP:192.168.7.2xx 客户端IP:192.168.7.1xx 服务端: docker registry中镜像本地映射地址:/Users/dockergit/private_registry(可自定义) docker registry容器中镜像存储地址:/var/lib/registry 客户端: 已创建image:test_agent:latest 环境为Linux OS,服务端和客户端都安装好docker,能使用docker命令. 简单搭建docker regis

gitlab + jenkins + docker + k8s

总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8s-master上执行rc.service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器 在第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步.本节实现第三步 一.打通jenkins与k8s-master两台机器之间的ssh无密码访问

Docker 架构原理及简单使用

提示:文中有些内容为大神的博客内容,就不统一标注那里引用,只是再最下面标注参考连接谢谢 一.简介 1.了解docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C++中的NameSpace.容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求. 与传统虚拟化技术相比,它的优势在于: (1)与宿主机使用同一个内核,性能损耗小: (2