docker打包工具—— kaniko

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker打包工具—— kaniko相关的知识,希望对你有一定的参考价值。

参考技术A 前段时间将jenkins切换到serverless,原本都是基于docker 挂载sock文件进行构建的,然后上了serverless之后发现没有物理节点了,也不能使用docker这种方式。还好google提供了一种不需要特权就可以构建的docker镜像构建工具kaniko

https://github.com/GoogleContainerTools/kaniko

使用方式很简单,我在jenkinsfile里面是这么使用的

但是遇到一个问题,每次镜像都需要重新拉取,即使我设置了--cache=true这个目录,也没有任何缓存数据保存做下来,后来发现这个缓存只是使用缓存,而自己无法主动缓存

官方文档中说明了缓存基础镜像
https://github.com/GoogleContainerTools/kaniko#caching

如下命令就可以了,实际使用的时候需要加-f选项才会在缓存目录缓存基础镜像,直接启动debug镜像,手动缓存基础镜像就可以了

一个镜像会在目录下保存2个问题,一个是json的描述文件

官方提供了debug镜像 ,有个小技巧,gcr.io的镜像可以使用微软的国内源
http://mirror.azure.cn/help/gcr-proxy-cache.html

项目构建--Gradle--Docker打包(五)

参考技术A 如果添加了 application 插件的话,默认 gradle-docker 插件会添加一个 distDocker 的 gradle task,用来构建一个 包含所有程序文件 的 docker 镜像。

配置镜像名称和版本号

其中镜像的 tag 默认的构成为:项目组/应用名称:版本号

project.group:标准的 gradle 属性,如果不进行定义,插件默认会 省略 $project.group 这个属性。
applicationName:应用被容器化时的 名称。
tagVersion:可选属性,会作为镜像的 标签。默认值为 project.version,如果未指定 project.version,则使用 latest 作为标记。
配置docker构建基础信息:

其中,baseImage 相当于 Dockerfile 中声明的 FROM。声明了在 构建镜像 是基于的 Image,maintainer 相当于 MAINTAINER ,声明了 镜像作者。如果声明了 registry 地址,插件在 镜像射生成后 可以自动 push 到该地址。其他的配置还包括 docker hub 的 地址、用户名 和 密码。

taskBuilder 的任务配置:

构建完成以后,项目根目录的 build/docker 文件夹下面会出现 Dockerfile 和 spring-boot-gradle-for-docker-1.0.jar 文件。其中,以上的 task 等同于以下的 Dockerfile。

如果觉的在 task 中编写 Dockerfile 替换脚本 非常别扭,也可以直接在 task 中指定 Dockfile 的 文件路径,直接使用已有的文件来生成镜像:

通过 file() 指定 task 使用位于 项目根目录 的 Dockerfile 来生产镜像。

gradle 首先会运行 本地测试,然后进行项目打包,进一步根据 docker-gradle 插件进行镜像构建。
等待出现 BUILD SUCCESSFUL 就表明任务运行成功。可以观察到镜像的名称为:

运行 docker images 查看本地镜像,进一步验证镜像构建成功。

在工程根目录下新建Dockerfile文件,内容如下:

以上是关于docker打包工具—— kaniko的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 部署 docker 打包镜像

Kubernetes平台上更安全的构建容器镜像工具-Kaniko

docker定义安装镜像容器

docker

jenkins+docker+docker-compose完整发版流程

Docker容器学习梳理--web管理工具DockerUI部署记录