您的位置: 首页 >游戏 >

GCP发布了kaniko 这是一个在非特权容器或Kubernetes中构建容器映像的工具

2022-08-17 00:00:00 编辑:杨芝儿 来源:
导读 谷歌发布了“kaniko”,这是一个开源工具,用于在unprivilegedcontainer或Kubernetes集群中构建容器映像。尽管kaniko从提供的Dockerfile构...

谷歌发布了“kaniko”,这是一个开源工具,用于在unprivilegedcontainer或Kubernetes集群中构建容器映像。尽管kaniko从提供的Dockerfile构建映像,但它并不依赖于Docker守护进程,而是完全在用户空间中执行每个命令,并对产生的文件系统更改进行快照。

从标准Dockerfile构建映像通常依赖于对Docker守护进程的交互访问,该守护进程需要对运行它的机器的根访问。正如在宣布kaniko发布的谷歌云平台博客文章中所述,这使得在无法轻松或安全地公开其Docker守护进程(如Kubernetes集群)的环境中构建容器映像变得非常困难。

为了克服这些挑战,kanikocan可以从一个Dockerfile构建一个acontainer映像,即使没有特权根访问。Kaniko可以在一个标准的Kubernetes集群中运行(Kubernetes secret包含推动最终图像所需的验证)、谷歌容器构建器,或者通过Docker和gcloud SDK在本地运行。

kaniko作为一个容器映像运行,它需要三个参数:Dockerfile、构建上下文和应该将最终映像推送到的注册表的名称。这个映像是由scratch映像构建的,它只包含一个静态的Go二进制文件,以及用于推和拉映像的配置文件。kaniko执行程序获取并提取指定的基本映像文件系统到容器文件系统根。这个上下文中的“基本映像”在提供的Dockerfile中的FROM中指定的映像中。

然后,Kaniko按照指定的顺序执行每个Dockerfile命令,并在每个命令之后获取文件系统的快照。快照是在用户空间中创建的,方法是遍历文件系统并将其与存储在内存中的先前状态进行比较。它将对文件系统的任何修改附加到基本映像的新层,并对映像元数据进行任何相关更改。在执行Dockerfile中的每个命令之后,执行程序将新构建的映像推入所需的注册表。上面的所有步骤都是在executor映像的用户空间中执行的,这就是它如何避免需要对机器进行特权访问的方式:“不涉及docker守护进程或CLI”。

除了SHELL、HEALTHCHECK、STOPSIGNAL和ARG当前的异常之外,大多数Dockerfile命令都可以用kaniko执行。目前也不支持多阶段Dockerfiles。kaniko团队表示,目前正在对这两个限制进行研究。

与kaniko类似的工具包括img、orca-build、buildah、FTL和Bazel rules_docker。img可以在容器中作为非根用户运行,但是要求img容器具有“RawProc访问权”来创建嵌套容器(kaniko不创建嵌套容器,因此不需要RawProc访问权)。orca-build依赖runC从Dockerfiles构建映像,而这些映像不能在容器中运行,buildah需要与Docker守护进程相同的特权才能运行。

FTL和Bazel的目标是尽可能快地为图像子集创建Docker图像,kankio README声明“这些可以被看作是特殊情况下的‘快速路径’,可以与kaniko提供的一般Dockerfiles支持一起使用。”

读者感兴趣的学习过程ofimage建筑如何适应完整的容器开发构建和部署生命周期可能会发现先前InfoQ感兴趣的新闻,“谷歌发布“Skaffold”,一个工具,促进持续发展与Kubernetes”,它包含一个总结的几个工具,提出过程在这个空间。

kaniki GitHub项目自述。md文件声明,该工具还没有准备好生产,因此贡献,功能要求和缺陷报告是受欢迎的。关于发布的其他信息可以在谷歌云平台的博客文章“介绍kaniko:在Kubernetes和谷歌容器构建器中构建容器映像,没有特权”中找到。


免责声明:本文由用户上传,如有侵权请联系删除!

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。