持续集成容器篇:Docker 与自动化打包
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S 相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作;本篇文章主要描述 Docker 基础用法和自动化打包过程。
一、Docker 简介
1、基础描述
Docker 作为开源的应用容器引擎,可以把应用程序和其相关依赖打包生成一个 Image 镜像文件,是一个标准的运行环境,提供可持续交付的能力,通过镜像文件可以创建多个 Docker 容器,这里可以理解为类创建对象的原理;镜像文件可以推送到仓库 Repository 中,这里可以理解为 Git 仓库管理代码的原理。
2、核心概念
Image 镜像:包含应用和依赖的类库,配置等;
Container 容器:通过镜像文件创建多个容器,运行打包应用;
Repository 仓库:存放镜像文件的云端服务;
镜像文件与容器,可以理解为基于快照启动虚拟机;或者类与实例对象的关系。
3、架构原理
Docker 基于客户端-服务器的架构模式,Docker 的守护进程(daemon)监听客户端的请求命令,从而管理镜像文件、容器等。
二、管理命令
1、查 docker 信息
2、镜像文件
基础命令
推送仓库
首先在云服务平台申请私有的镜像管理仓库,并配置好访问仓库的账号和密码,通过 docker 命令把本地镜像文件推送到该仓库,这里以阿里云为例:
注意:cicada-image
是仓库的命名空间,点击cloud-app
可以查看镜像操作的步骤文档:
3、容器管理
4、入门案例
三、构建镜像
1、Dockerfile
Dockerfile 是一个文本文档,包含构建 Docker 镜像的指令,通过读取该脚本中的指令并执行,完成相关 build 过程。
注意事项
脚本命名 Dockerfile 并且没有任何后缀;
Docker 在构建镜像时,默认识别该文件;
通常脚本文件放在打包工程的根目录下;
2、基础样例
语法说明
FROM:指定需要使用的基础镜像;
MAINTAINER:定义脚本维护者;
VOLUME:指定持久化文件目录;
WORKDIR:切换到工作目录;
ADD:将指定文件添加到容器中;
COPY:将指定文件复制到容器中;
RUN:镜像构建时执行的命令;
ENTRYPOINT:容器参数配置;
使用案例
3、构建镜像
项目打包
这里获取 maven 项目打包后的 jar 包,即auto-client.jar
包,然后复制到 docker 镜像制作的目录下,与 Dockerfile 在同一级。
结构如下
镜像构建命令
构建流程执行完之后,查看镜像列表,上面构建的镜像已经存在;
4、运行容器
访问容器中应用的接口,查看响应正常即可。
四、自动化打包
微服务架构是当前主流的技术选型,在业务具体落地时,会存在很多业务服务,不管是在开发、测试、上线的任意节点中,如果基于手动编译的方式打包服务,操作成本不仅极高,而且很容易出现纰漏。
通过 Pipeline 流水线的方式,将服务镜像构建编排成一键触发执行,实现自动化的管理流程,是微服务架构中的必要的功能模块。
五、流程设计
本篇中的流程节点,主要针对打包好的应用Jar
包,在 docker 模块中的处理流程,主要是镜像构建管理与容器运行:
构建 docker 文件目录与内容;
拷贝
Jar
包,创建Dockerfile
脚本文件;执行 docker 镜像构建,推送云仓库;
拉取镜像文件并运行 docker 容器;
整个流程的都放在 Pipeline 流水线中,衔接在本地 Jar 包生成之后。
六、实现过程
1、插件安装
首先安装流程中 Docker 集成的相关插件:Docker Pipeline
,Docker plugin
,CloudBees Docker Hub/Registry Notification
。
在之前的流水线篇幅中,已经通过流水线完成 Gitee 仓库代码 pull 和本地打包,下面开始处理 docker 环节。
2、镜像构建脚本
关于 Dockerfile 的脚本语法也可以参考之前 docker 篇幅,下面看流水线中的用法:
脚本说明:
在流水线的工作空间创建目录
docker-app
;每次执行都清空一次 docker 目录,再把 Jar 包和 Docker 脚本放进去;
cat-EOF-EOF:即创建 Dockerfile 文件,并把中间的内容写入;
脚本中的内容必须在文件中顶行写入;
3、打包推送
这里即进入 docker 目录,执行镜像打包的操作,并把镜像推送到云端仓库,很多仓库都是私有的,需要身份验证,通过配置凭据去访问:
4、凭据配置
打开Manage Jenkins
界面,Manage Credentials
选项;
按如下流程配置即可:
七、源代码地址
版权声明: 本文为 InfoQ 作者【知了一笑】的原创文章。
原文链接:【http://xie.infoq.cn/article/e28285f645489b888825e0f8f】。文章转载请联系作者。
评论