安装 Docker

安装这里就不在赘述,详情可以看下面这条链接。
docker 基础和安装:https://blog.csdn.net/qq_39253370/article/details/115430300

CI/CD 概念

  1. 持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
  2. 持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
  3. 持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。

安装Harbor

Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

为什么使用 harbor?
当有多个镜像需要部署到多个节点服务器上面时,如果没有一个统一管理镜像的地方,那么就需要再每台上面写 dockerfile 构建镜像,任务量大的时候这很浪费效率,harbor 就是一个镜像管理仓库,构建好的镜像 push 到 harbor 上面,那么其他节点部署的时候直接从 harbor 仓库中 pull 下来运行就可以了,所以harbor是作为一个中心节点来集中管理镜像。

安装步骤:
安装 docker

安装 工具包:yum install -y yum-utils device-mapper-persistent-data lvm2 安装工具包安装docker软件包源:
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   //这里使用阿里云的源,官方的再国外,比较慢安装 docker-ce版本:
yum install -y docker-ce  启动docker:
systemctl start docker  设置开机自动启动:
systemctl enable docker  镜像加速:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io 重启docker
systemctl restart docker

安装 harbor
下载 harbor 离线包:https://github.com/goharbor/harbor/releases

解压:
tar zxvf  harbor-offline-installer-v1.9.1.tgz
cd harbor
vi harbor.yml  修改harbor访问域名 hostname
执行 ./prepare  先准备一下
./install 安装时会提醒你没有安装docker-compose

安装 docker-compose:
安装方式:https://docs.docker.com/compose/install/#install-compose

mv docker-compose user/bin/docker-compose   移动到bin目录下命名为docker-compose
chmod +x user/bin/docker-compose 加一个可执行权限
执行 ./install
成功之后执行 docker-compose ps 看一下harbor组件是否运行成功
查看默认密码:cat harbor.yml  默认是 Harbor12345

安装成功页面:

安装上述执行的一些相关命令和步骤:

推送镜像到 harbor 仓库里中:
这里会教你怎么推送镜像到仓库,library-镜像仓库-推送镜像

推送命令:

docker tag nginx:latest  175.27.229.160/nginx:latest
docker push 175.27.229.160/nginx:latest

提示连接拒绝,因为 dokcer 默认是 https去访问的,harbor 只支持 http

解决办法:需要在docker配置可信任

docker info 找到 insecure-registries
vim /etc/docer/daemon.json   将"insecure-registries": ["自己的ip"]
重启docker:systemctl restart docker 如果起不来一定是配置有问题,请重新检查
因为重启docker了,所以需要把docker-compose 也都启起来:docker-compose up -d

再次推送:

[root@VM-0-14-centos harbor]# docker tag nginx:latest  175.27.229.160/library/nginx:latest
[root@VM-0-14-centos harbor]# docker push 175.27.229.160/library/nginx:latest

提示:denied: requested access to the resource is denied
解决方式:先登录 docker login 域名或者ip
docker login ip 输入 harbor 账号密码就可以了


登录成功:
登录成功之后会有一个认证信息:路径:/root/.docker/config.json
cat /root/.docker/config.json

再次推送:

安装 gitlab

使用 git 来管理代码,安装方式使用 docker:

docker run -d \--name gitlab \-p 8443:443 \-p 9999:80 \-p 9998:22 \-v $PWD/config:/etc/gitlab \-v $PWD/logs:/var/log/gitlab \-v $PWD/data:/var/opt/gitlab \-v /etc/localtime:/etc/localtime \lizhenliang/gitlab-ce-zh:latest

这里我找了一个测试项目,你们自己也可以找一些 java、python项目来做。

步骤:1.创建代码仓库2.将项目代码提交到该仓库中

后续会在 jenkins 中使用 pipeline 时会从 git 上面拉取代码进行持续的 CI/CD

安装 jenkins

前置工作:

# tar zxvf jdk-8u45-linux-x64.tar.gz
# mv jdk1.8.0_45 /usr/local
# tar zxf apache-maven-3.5.0-bin.tar.gz
# mv apache-maven-3.5.0 /usr/local

安装jenkins:

docker run -d --name jenkins -p 81:8080 -p 50000:50000 -u root  \-v /opt/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock   \-v /usr/local/python3/Python-3.6.2:/usr/local/python3/Python-3.6.2   \-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7   \-v /usr/bin/docker:/usr/bin/docker \-v /usr/local/apache-maven-3.5.0:/usr/local/maven \-v /usr/local/jdk1.8.0_45:/usr/local/jdk \-v /etc/localtime:/etc/localtime \--name jenkins jenkins/jenkins:lts

查看密码:

docker logs jenkins


安装插件:

1.git
2.pipeline
3.local 如果想中文显示可以安装这个插件
安装 git pipeline  如果安装慢可以更换Jenkins源:
sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json,
路径是:/opt/jenkins_home/updates  必须要进入这个目录下  重启jenkins


新建一个 pipeline 项目:

编写 pipeline:

#!/usr/bin/env groovydef registry = ""  //自己的harbor仓库地址
def project = "welcome"  //项目名
def app_name = "demo"
def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}" //镜像名称
def git_address = ""   //自己的git地址
def docker_registry_auth = ""   //登录 harbor 的凭证
def git_auth = ""               //登录 git 的凭证pipeline {agent anystages {stage('拉取代码'){steps {checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])}}stage('代码编译'){steps {sh """JAVA_HOME=/usr/local/jdkPATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATHmvn clean package -Dmaven.test.skip=true""" }}stage('构建镜像'){steps {withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {sh """echo 'FROM ${registry}/library/tomcat:v1RUN rm -rf /usr/local/tomcat/webapps/*ADD target/*.war /usr/local/tomcat/webapps/ROOT.war' > Dockerfiledocker build -t ${image_name} .docker login -u ${username} -p '${password}' ${registry}docker push ${image_name}"""}} }stage('部署到Docker'){steps {sh """docker rm -f tomcat-java-demo |truedocker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}"""}}}
}

需要获取两个凭证信息,harbor 和 git:




构建成功:构建镜像用了29分钟,哈哈~~~,我这边网络不太好

相关文献

docker 基础:https://blog.csdn.net/qq_39253370/article/details/115430300

docker 监控:https://blog.csdn.net/qq_39253370/article/details/115552178

docker :https://yeasy.gitbook.io/docker_practice/

搭建基于 Docker 的 CI/CD相关推荐

  1. 基于docker的CI/CD

    准备条件 使用docker的机器,添加用户时需要指定用户的uid  :  sudo groupadd -g 500 work && useradd -g 500 -u 500 work ...

  2. Docker + GitLab CI/CD 实现自动化部署

    使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...

  3. Jenkins X:基于Kubernetes的CI/CD平台

    背景 Jenkins自动化服务器一直都是DevOps工具链的重要组成部分,并且已发展成为开源持续集成和持续部署(CI&CD)软件的领导者.据不完全统计,截至2019年6月,已有将近26万的Je ...

  4. 搭建基于Docker社区版的Kubernetes本地集群

    搭建基于Docker社区版的Kubernetes本地集群 原文:搭建基于Docker社区版的Kubernetes本地集群 Kubernetes的本地集群搭建是一件颇费苦心的活,网上有各种参考资源,由于 ...

  5. 基于 Kubernetes 实现 CI/CD 配置

    基于 Kubernetes 实现 CI/CD 配置 一.基本介绍 二.基于 Kubernetes 实现 CI/CD 配置 1.配置 GitLab 2.配置 Jenkins 3.实现 CI/CD 配置 ...

  6. 『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76) 开始想用docker registry做私有镜像库,后来放弃 ...

  7. 『中级篇』docker之CI/CD持续集成-(终结篇)(77)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77) 今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学 ...

  8. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  9. docker GitLab-runner CI/CD持续集成

    docker GitLab-runner CI/CD持续集成 docker GitLab-runner CI/CD持续集成 机器配置 gitlab安装 拉取镜像 创建挂载目录 启动容器 注册gitla ...

  10. 【Mysql】数据库主从搭建-基于docker

    后台可回复[1024]即可获取相关宝藏内容分享 :) 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docke ...

最新文章

  1. jquery的live方法
  2. 类的继承和派生java_类的继承和派生
  3. 世界最厉害的14位程序员,你认识几个?
  4. SQLserver语句命令
  5. html日历显示不完整,求html代码,显示日历和时间的代码
  6. SharePoint Permission中6个表的关联关系**
  7. Codeforces.100633J.Ceizenpok's formula(扩展Lucas)
  8. 从Soul APP 看社交升级新玩法
  9. 2021年大连12中高考成绩查询,2021大连市地区高考成绩排名查询,大连市高考各高中成绩喜报榜单...
  10. A Tutorial on Learned Multi-dimensional Indexes
  11. 打工不如当老板,注册公司费用和步骤
  12. 首批 | 易知微加入“新华网元宇宙及 AIGC 创新联盟”,探索AIGC数字人深度应用
  13. Windows下安装VMware
  14. CD-Hit 生信 碱基序列去除冗余的方法
  15. 知识共享有多难?做好这几点,问题统统解决
  16. VS2019试用期结束怎么办
  17. 「文献」杂合基因组的策略思路
  18. 人脸识别考勤系统解决方案
  19. 2,JESD204为什么值得关注?
  20. (二)巴菲特与索罗斯的投资习惯:七种致命的投资信念

热门文章

  1. ps怎么做玻璃破碎碎片飞溅效果
  2. VMware安装FusionComputer
  3. 如何联系海外网红?4个方法助你提高海外网红回复率
  4. 介入治疗在胰腺癌的作用
  5. android webview播放视频黑屏
  6. mac端锐捷无法验证服务器,还在为mac无法用锐捷认证校园网登陆而郁闷吗?
  7. java无法找到加载主类是什么意思_java – 什么是“找不到或加载主类”是什么意思?...
  8. 完美解决MATLAB建立新文件没有权限问题
  9. 计算机管理无线网络 win10,如何在Windows 10中使用命令行管理WIFI无线网络
  10. 3533: 黑白图像