Nuclio实战及源码分析:基于Kubernetes的Serverless FaaS平台
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.2 容器镜像构建工具——Kaniko

Kaniko是Google开发的、从Dockerfile(一个文本文档,其中包含了用户创建镜像的所有命令和说明)中构建容器镜像的工具,是开源的。

传统的Docker构建是一个Docker守护进程,它使用根用户(Root)在主机上顺序执行,并根据Dockerfile生成镜像的每一层。当Docker后台进程无法暴露时,构建镜像就会变得困难。Kaniko就很好地解决了这个问题。它不依赖于Docker守护进程,而是完全在用户空间中执行Dockerfile中的每个命令。

Kaniko是以容器方式运行的,运行时需要三个参数:Dockerfile、上下文、远端仓库。Kaniko执行构建镜像的过程如下:

1)从Dockerfile提取基础镜像到文件系统。

2)根据Dockerfile的命令逐条执行。

3)每条命令执行后会在用户空间生成文件系统的快照,并与存储在内存中的状态进行比对。

4)如果有变化,就将生成一个镜像层并添加在原来的基础镜像层之上。

5)所有命令执行完毕后,Kaniko会将最终镜像推送到指定的远程仓库。

Kaniko的工作流程如图1-4所示。

图1-4 Kaniko的工作流程