`
男人50
  • 浏览: 242255 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

使用Docker构建持续集成与自动部署的Docker集群

阅读更多
一 概述

Docker发布版本应该与现有的版本发布尽量一致,参考jenkins的版本发布过程;我认为maven库和docker库有很多类似的地方,因此打包过程参考maven的打包过程;重点实现docker自动打包、push、pull、run、kill相关流程的控制。


二 需求分析


1、部署和目前的jenkins发布流程基本保持一致,目前版本发布的触发条件有:定时发布、手工发布,发布过程包括:下载代码、构建、停止tomcat、清除缓存、当期版本、上传war包、上传且替换配置文件、启动tomcat等步骤。



2、针对使用docker容器的,需要增加构建镜像上传镜像的过程。

三 部署图

jekins 和 web服务器需要有docker环境,包括docker和docker-compose





四  总体流程



五 详细设计

1 下载代码打包


1)代码路径下面要包含各套环境的配置文件信息,如下图:


2 docker镜像版本定义


docker镜像的当期版本使用${BUILD_NUMBER},上一版本使用$$((${BUILD_NUMBER}-1))


3 准备物料

压缩环境配置文件为evnconfig.zip,拷贝到Dockerfile目录;

拷贝war包到Dockefile目录。

4 Dockerfile构建镜像

Dockerfile如下:

#父镜像

FROM centos7-tomcat7-jdk7:1.0

#维护者

MAINTAINER luo tian "tian@gmail.com

#同步物料

ADD document.war.tar /root/tomcat7/webapp

ADD envconfig.tar /root/tomcat7/webapp

#暴露访问端口

EXPOSE 8080

#启动服务

ENTRYPOINT sh /root/tomcat7/bin/startup.sh




构建命令如下:docker build -t  xx.com/ecf/document.war:v1.xx   .




注解:镜像名称是部分组成:仓库url/项目名称/镜像名称:镜像版本

Push镜像

#登陆仓库

docker login yy.com

#上传镜像

docker push xx.com/ecf/document.war:v1.xx

docker仓库查看镜像




5 目标服务器执行shell命令

#停止容器

docker kill document.war

#删除容器

docker rm document.war

#启动新容器

docker run  -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /root/tomcat7/logs:/var/tomcat7/logs --name document.war -d xx.com/document.war:1.xx

#删除旧镜像

docker rmi xx.com/document.war:1.xx

完整Dockerfile代码




[java] view plain copy
1.FROM y.com/test/centos7-jdk7-tomcat8:2.0.1 
2.MAINTAINER luo,ten <luoten@midea.com> 
3. 
4.# Install war 
5.RUN mkdir /apps/document.war 
6.RUN mkdir /apps/tomcat8/conf/Catalina 
7.RUN mkdir /apps/tomcat8/conf/Catalina/localhost 
8.RUN mkdir /apps/document.war_work 
9.COPY target/document.war /apps/document.war 
10.ADD document.war.xml /apps/tomcat8/conf/Catalina/localhost 

完整docker镜像编译服务器执行的代码








[java] view plain copy
1.cd /root/jenkins_home/workspace/DEV-DOCUMENT/document.war/target/ 
2.unzip document.war-0.0.1-SNAPSHOT.war -d  document.war 
3.cd  ../ 
4.docker build -t y.com/test/document.war:${BUILD_NUMBER} . 
5.docker login -p admin123 -u admin y.com 
6.docker push y.com/test/document.war:${BUILD_NUMBER} 
7.docker rmi  y.com/test/document.war:${BUILD_NUMBER} 

完整docker应用说在服务器的执行代码:





[java] view plain copy
1.docker kill document.war 
2.docker rm -f document.war 
3.docker rmi y.com/test/document.war:$((${BUILD_NUMBER}-1)) 
4.docker run  -v /root/document.war/logs:/apps/tomcat8/logs --name document.war  -p 8081:8080 -itd  --privileged y.com/test/document.war:${BUILD_NUMBER} /usr/sbin/init 




六 待解决问题


1、 目前很多系统内核不符合docker部署

FATA[0001] Your Linux kernel version 2.6.32-504.el6.x86_64 is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer.




2、 docker重要配置

一、pull增加内部镜像仓库,配置文件或者启动命令增加:ADD_REGISTRY='--add-registry  yy.com'

二、内外仓库采用http方式,配置文件或者启动命令增加: INSECURE_REGISTRY='--insecure-registry  yy.com' (/usr/lib/systemd/system/docker.service)

三、docker、jenkins、git、svn等安装可能会遇到网络问题,因为需要安装一些相关依赖

3、应用必须使用maven或者ant打包
1
0
分享到:
评论

相关推荐

    SpringBoot + maven + Jenkins + docker 实现docker集群一键自动化部署

    项目基本结构是SpringBoot,集成了docker-maven插件实现build完的镜像上传到私服,然后用 Jenkins构建实现docker集群一键自动化部署

    devops持续集成自动化部署常用功能

    在IT行业中,持续集成(Continuous Integration,CI)和自动化部署是提升开发效率、保障软件质量的重要实践。"devops持续集成自动化部署常用功能"这个主题涵盖了多种编程语言和技术,包括Shell脚本、Java和Python,...

    《容器技术Docker》课程标准.docx

    通过本课程的学习,学生应掌握 Docker 容器的安装、Docker 的使用和管理、Docker 仓库、Docker 网络接口、Docker API 的使用、Docker 容器编排与集群、使用 Docker 构建持续集成方面知识,能够部署、运维和管理 ...

    k8s最新版本1.24.3基于containerd搭建集群,集成buildkit、nerdctl构建镜像,jenkins自动化。

    2、集成buildkit、nerdctl工具构建镜像 3、基于Oracle JDK11,使用jlink工具精简JRE包,自定义容器镜像 4、部署基于NFS的StorageClass,作为共享存储,Docker Registry、Nacos都使用此StorageClass挂载存储 4、在k8s...

    Docker Desktop Installer 4.23.0

    Docker的使用场景非常广泛,包括微服务架构、自动化测试、持续集成和持续部署(CI/CD)、Web应用的快速部署以及大规模服务的分布式运行等。通过Docker,开发者和运维人员可以更加高效和方便地构建、分发和运行应用...

    基于docker使用kubespray工具部署高可用K8S集群(国内互联网方案二)部署资源包

    这篇博客文章提供了基于Docker在国内互联网环境下使用Kubespray部署高可用K8S集群的具体步骤。下面将详细介绍这个过程中的关键知识点。 1. **Kubernetes(K8S)**:Kubernetes是一个开源的容器编排系统,用于自动化...

    使用 DCHQ 实现基于 Docker 的 Couchbase 集群的端到端自动化.pdf

    通过使用 DCHQ,可以自动化 Couchbase 集群的部署、配置和扩展,并与 12 种不同的云集成。 DCHQ 提供了托管版本和内部部署版本,解决了容器化企业应用程序的挑战,包括复杂的依赖关系、外部集成和配置后的自动扩展...

    Docker Machine:构建虚拟化Docker环境的利器

    ### Docker Machine:构建虚拟化 Docker 环境的利器 #### Docker Machine 概念与应用...通过理解和掌握 Docker Machine 的使用方法,开发者可以更高效地构建和部署 Docker 化的应用,从而加速软件项目的迭代与上线。

    oracle-xe-11g docker镜像安装部署,docker-compose安装部署,kubernete安装yml文件

    - Oracle 11g Docker镜像的下载与使用 - 使用Docker Compose配置文件启动Oracle 11g服务的步骤 - Kubernetes集群环境的搭建和配置 - 使用Kubernetes YAML文件部署Oracle 11g的方法和注意事项 - 数据库安装后的验证和...

    去哪儿网利用Mesos和Docker构建dev/beta环境

    去哪儿网使用Mesos和Docker构建开发(DEV)和测试(BETA)环境,这一过程涉及多个方面的知识点。下面是对这些知识点的详细梳理。 一、背景知识 去哪儿网在构建DEV/BETA环境时,面临了传统虚拟机环境的诸多问题,...

    管理系统系列--CoreOS Docker,让你更便捷、系统化的使用Docker管理你的服务.zip

    通过学习这个管理系统系列,你将掌握如何在CoreOS环境中有效地利用Docker构建、部署和管理服务。这将帮助你构建出可扩展、可维护的现代化云原生应用,提高团队的开发和运维效率。无论是对于初创公司还是大型企业,...

    Windows版本Docker桌面版安装包

    Docker Desktop 集成了 Kubernetes,方便开发者在本地轻松部署和管理 Kubernetes 集群,进行更复杂的应用开发和测试。 用户可以通过直观的 UI 管理镜像、容器和网络,快速查看资源使用情况,简化操作流程。 Docker...

    详解Docker三剑客

    而“Docker三剑客”——Docker Swarm、Docker Machine和Docker Compose,则是Docker生态系统中的三个核心工具,它们分别负责了不同的任务,旨在帮助开发者和运维人员更高效地管理和部署Docker容器。 1. **Docker ...

    bitnami版本的zookeeper和kafka的docker-compose配置

    通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的网络来连接这些服务,确保它们可以相互通信。整体而言,这个Docker Compose 文件...

    Docker Swarm架构的特性与基本实践.docx

    通过 Docker Swarm,我们可以基于 Docker Engine 来构建 Swarm 集群,然后部署应用服务到 Swarm 集群中。 基本特性 1. 集群管理集成进 Docker Engine Docker Swarm 具有内置的集群管理功能,我们可以直接通过 ...

    Nacos-2.4.3最新版本docker容器镜像出来啦!

    Nacos的易用性和可靠性一直是其核心优势,新版本的推出,以及与Docker的无缝集成,更是为广大用户带来了便捷的操作体验和更高的部署效率。 Linux作为服务器操作系统的主流选择,与Nacos的搭配使用可以发挥出更高的...

    Docker学习实验资料

    随着实践的深入,用户将掌握如何使用Docker进行CI/CD(持续集成与持续部署)流程的整合,使软件开发周期的各个阶段自动化,提高开发效率和软件质量。Docker在微服务架构下也有广泛的应用,微服务通过容器化的方式更...

    Docker资料,Docker资料

    Docker的使用场景非常广泛,包括但不限于微服务架构的部署、持续集成和持续部署(CI/CD)、云计算、本地开发环境的配置以及测试环境的搭建。在微服务架构中,Docker允许每个微服务运行在自己的容器中,提高了系统的...

Global site tag (gtag.js) - Google Analytics