- 浏览: 237301 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (196)
- 职业感想 (66)
- hadoop (7)
- spark (5)
- mycat (13)
- Raft (2)
- nexus (3)
- Nginx (5)
- SpringBoot (5)
- Mongodb (5)
- amq (2)
- shell (3)
- netty (3)
- spring 5.0 (2)
- 响应式编程 (1)
- Spring Cloud (4)
- pdf (1)
- docker (17)
- Kubernetes (1)
- 技术总监 (1)
- 区块链 (1)
- 大数据 (1)
- Kylin (1)
- NIO (1)
- JVM (2)
- zookeeper (1)
- Python (2)
- Docker-Compose (2)
- mysql (14)
- eclipse (1)
- spring cloud config (1)
- Redis (1)
- centos (2)
- tokudb (1)
- findbugs (1)
- HikariCP (1)
- php (1)
- ES (1)
- ZigBee (1)
- 物联网 (1)
- NLP (1)
- ionic (1)
- go (4)
- node red (3)
- 树莓派 (1)
- iot (1)
- pm2 (1)
- nodejs (1)
- Supervisor (1)
- dbus (1)
- linux (1)
- vpn (1)
- arm (1)
- debian (1)
- consul (1)
- Hystrix (1)
- InheritableThreadLocal (1)
最新评论
-
男人50:
不远啊 写道难道大多程序猿都是这样过来的吗,接着后来有一部分当 ...
刚毕业的时候 -
不远啊:
难道大多程序猿都是这样过来的吗,接着后来有一部分当了老师教着新 ...
刚毕业的时候 -
男人50:
...
ES 与关系型数据库的对比 -
liaodongdakai:
精通并发与Netty网盘地址:https://pan.baid ...
精通netty框架 -
男人50:
knight_black_bob 写道这内容怎么审核的,你好, ...
我从事技术的这些年(第12年)
一 概述
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打包
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打包
发表评论
-
docker-compose tty为true
2019-04-28 10:27 3000如果docker-compose.yml如下,则用docker ... -
fetch http://nl.alpinelinux.org/alpine/
2019-04-11 16:48 590创建镜像 fetch http://nl.alpinelinu ... -
进入主机,容器的 命令
2019-04-10 17:11 547进入主机,容器的 命令 nsenter --target 1 ... -
FROM scratch
2019-04-10 16:49 472scratch 是内置关键词,并不是一个真实存在的镜像。 FR ... -
从容器内调用Docker
2019-04-10 16:33 592使用Docker的时候,你迟 ... -
nsenter --mount=/media/host/proc/1/ns/mnt cat /etc/issue
2019-04-09 17:34 904nsenter --mount=/media/host/pro ... -
nl.alpinelinux.org/alpine
2019-04-02 18:02 661ERROR: http://nl.alpinelinux.or ... -
docker 命令大全
2019-03-08 18:17 943docker -D 默认false 允许调试模式(deb ... -
Please provide a source image with `from` prior to commit
2019-03-07 11:18 2663Please provide a source image w ... -
standard_init_linux.go:178: exec user process caused "no such file or directory"
2018-07-27 12:33 3155# vi filename # :set ff 回车后看到当 ... -
docker禁止日志
2018-07-26 09:57 865logging 配置日志服务 logging: dri ... -
docker exec
2018-07-13 17:55 571docker exec -it 4fb7b4f84fd6 ... -
Cannot uninstall ‘requests’. It is a distutils installed project and thus we can
2018-07-09 13:21 5265Cannot uninstall ‘requests’. It ... -
Docker run –restart
2018-07-09 12:59 895unless-stopped – 不管退出状态码是什么始终重启 ... -
systemctl start docker
2018-06-29 18:52 810systemctl start docker -
docker微服务架构
2018-04-10 10:20 1007有关微服务的所有那些喧闹到底是什么? 随着越来越多的产品利用 ...
相关推荐
项目基本结构是SpringBoot,集成了docker-maven插件实现build完的镜像上传到私服,然后用 Jenkins构建实现docker集群一键自动化部署
在IT行业中,持续集成(Continuous Integration,CI)和自动化部署是提升开发效率、保障软件质量的重要实践。"devops持续集成自动化部署常用功能"这个主题涵盖了多种编程语言和技术,包括Shell脚本、Java和Python,...
通过本课程的学习,学生应掌握 Docker 容器的安装、Docker 的使用和管理、Docker 仓库、Docker 网络接口、Docker API 的使用、Docker 容器编排与集群、使用 Docker 构建持续集成方面知识,能够部署、运维和管理 ...
2、集成buildkit、nerdctl工具构建镜像 3、基于Oracle JDK11,使用jlink工具精简JRE包,自定义容器镜像 4、部署基于NFS的StorageClass,作为共享存储,Docker Registry、Nacos都使用此StorageClass挂载存储 4、在k8s...
这篇博客文章提供了基于Docker在国内互联网环境下使用Kubespray部署高可用K8S集群的具体步骤。下面将详细介绍这个过程中的关键知识点。 1. **Kubernetes(K8S)**:Kubernetes是一个开源的容器编排系统,用于自动化...
通过使用 DCHQ,可以自动化 Couchbase 集群的部署、配置和扩展,并与 12 种不同的云集成。 DCHQ 提供了托管版本和内部部署版本,解决了容器化企业应用程序的挑战,包括复杂的依赖关系、外部集成和配置后的自动扩展...
### Docker Machine:构建虚拟化 Docker 环境的利器 #### Docker Machine 概念与应用...通过理解和掌握 Docker Machine 的使用方法,开发者可以更高效地构建和部署 Docker 化的应用,从而加速软件项目的迭代与上线。
去哪儿网使用Mesos和Docker构建开发(DEV)和测试(BETA)环境,这一过程涉及多个方面的知识点。下面是对这些知识点的详细梳理。 一、背景知识 去哪儿网在构建DEV/BETA环境时,面临了传统虚拟机环境的诸多问题,...
通过学习这个管理系统系列,你将掌握如何在CoreOS环境中有效地利用Docker构建、部署和管理服务。这将帮助你构建出可扩展、可维护的现代化云原生应用,提高团队的开发和运维效率。无论是对于初创公司还是大型企业,...
Docker Desktop 集成了 Kubernetes,方便开发者在本地轻松部署和管理 Kubernetes 集群,进行更复杂的应用开发和测试。 用户可以通过直观的 UI 管理镜像、容器和网络,快速查看资源使用情况,简化操作流程。 Docker...
而“Docker三剑客”——Docker Swarm、Docker Machine和Docker Compose,则是Docker生态系统中的三个核心工具,它们分别负责了不同的任务,旨在帮助开发者和运维人员更高效地管理和部署Docker容器。 1. **Docker ...
通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的网络来连接这些服务,确保它们可以相互通信。整体而言,这个Docker Compose 文件...
通过 Docker Swarm,我们可以基于 Docker Engine 来构建 Swarm 集群,然后部署应用服务到 Swarm 集群中。 基本特性 1. 集群管理集成进 Docker Engine Docker Swarm 具有内置的集群管理功能,我们可以直接通过 ...
Docker Machine对于开发、测试和部署Docker容器化应用来说,提供了极大的便利性,尤其是在跨平台操作时。这个压缩包包含两个64位版本的Docker Machine,分别适用于Linux和Windows操作系统。 在“docker-machine-...
2. **Jenkins与Spacey发布**:利用Jenkins作为持续集成工具,结合Spacey进行自动化部署。 3. **Docker化**:将应用程序容器化,便于在不同环境中快速、一致地运行。 **发布流程** 采用Jenkins与Spacey构建自动化...
总之,Docker Compose是构建和管理Docker容器集群的强大工具,无论是对于开发环境还是生产环境,它都能极大地提高部署效率。此压缩包提供的两个版本,分别满足了不同用户的需求,可以根据自己的实际情况进行选择和...
例如,使用Docker容器化应用程序,然后使用Kubernetes部署和管理容器集群,最后使用Jenkins自动化构建、测试和部署应用程序。 这堂视频课程提供了Docker、Kubernetes和Jenkins的详细讲解和实践,旨在帮助开发者和...
本文中介绍的搭建Swarm集群、部署服务、服务发现、持续集成和持续部署等环节都与自动化紧密相关。 总结 本文件提供了Docker Swarm在DevOps实践中的应用指南,包括如何设置和操作Swarm集群、网络和反向代理的配置、...