谷歌发布了“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” 。
【GCP发布了kaniko 这是一个在非特权容器或Kubernetes中构建容器映像的工具】除了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和谷歌容器构建器中构建容器映像,没有特权”中找到 。
推荐阅读
- win10建桌面快捷方式,直接发送到桌面了了 Win10无法发送桌面快捷方式怎么解决
- 三星推出针对Galaxy S20 Ultra绿色色调问题的修复程序
- 玩游戏cpu降频怎么办 Win10玩游戏CPU降频怎么解决
- 野生刺梨有市场吗_刺梨饮品市场
- win10改了系统语言还是乱码 Win10中文语言改完出现乱码怎么解决
- win10网络受限怎么解决 Win10网络受限怎么解除
- 铝棒厂家,铝合金压铸生产厂家
- windows10时间显示秒 Win10系统怎么设置时间显示秒
- 微软的ML.Net框架增加了TensorFlow评分