Kaniko:在非特权容器中构建容器镜像
极客时间编辑部
讲述:丁婵大小:1.24M时长:02:42
近日,谷歌发布了 Kaniko,这是一个开源工具,用于在非特权容器或 Kubernetes 集群内构建容器镜像。虽然 Kaniko 是根据用户给定的 Dockerfile 构建镜像,但是并不依赖于 Docker 守护进程,而是在用户空间中完全执行每个命令,并对所生成的文件系统进行快照更改。
通常来说,从一个标准 Dockerfile 中构建镜像,需要依赖于对 Docker 守护进程的交互访问,Docker 守护进程需要在运行它的机器上进行 root 访问。这在一些不方便或是不能安全地暴露 Docker 守护进程的环境中,例如 Kubernetes 集群,容器镜像会变得难以构建。
为了解决这个挑战,Kaniko 做到了不需要授权 root 访问权限,就可以从 Dockerfile 中构建容器镜像。它支持通过 Docker 和 gcloud SDK,运行在标准 Kubernetes 集群和 Google Container Builder 中,或者在本地运行。
据了解,Kaniko 以容器镜像的方式运行,它需要指定三个参数:Dockerfile、构建上下文,以及推送最终镜像的仓库(registry)名。该镜像是从空白镜像构建而来的,只包含静态的 Go 二进制文件,以及推送和拖动所需的配置文件。Kaniko 执行器可以获取并抽取给定基础镜像中的文件系统,并将其放在容器的根文件系统中。
之后,Kaniko 会按照 Dockerfile 定义的顺序,依次执行 Dockerfile 中的每个指令,并在执行完一个指令后,对文件系统做一次快照。快照创建在用户空间中,在文件系统中按层次组织,并依次将当前快照与先前存储在内存中的状态进行对比。
在执行 Dockerfile 中的每个命令后,执行程序将新建的镜像推送到所需的注册表。这些步骤都是在执行程序映像的用户空间中执行的,这样可以避免在机器上要求特权访问,也就是不涉及 Docker 守护程序或 CLI。
想要了解如何将镜像构建融合到容器开发构建和部署的整个生命周期中,感兴趣的开发人员可以参阅极客新闻之前的报道(谷歌发布 Skaffold,简化 Kubernetes 应用程序持续开发),总结了适用于此过程的多种工具,并给出了推荐的过程。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论