随着容器化应用的普及,越来越多的开发者注意到使用常规的镜像构建方式难以满足复杂的需求。“生成的镜像体积过于庞大”、“一不小心把敏感信息留在镜像中”……诸如此类的问题阻碍了 Docker 自动化构建的流程。
为什么会这样呢?这需要先简单理解一下镜像构建的机制。
Dockerfile 中的每条命令会产生相应的镜像层(image layer)。比如,用 ADD
或 COPY
复制源代码时,就会产生一层包含源代码的镜像层。随后的升级依赖包等操作也会产生镜像层。这样,得到的最终镜像其实是一层层镜像累积而成。即使我们在最后的步骤中将源代码和依赖包删除,这些信息也会保存在构建过程中的某一层(事实上,删除步骤也会产生一个镜像层)。
按照常规构建镜像的方式,我们经常会得到体积庞大、包含源代码和敏感信息的镜像。而在我们理想的结果中,镜像中应该仅包含生成的二进制可执行程序,这样才能保证最终镜像体积小巧,又不包含任何的敏感信息。
DaoCloud 公有云团队结合构建过程中遇到的实际场景与前沿社区的最佳实践,推出了「安全镜像」构建功能,以精简镜像体积和增强镜像安全为目标,通过分离编译和打包过程,产生一个安全、精简且不含源代码的生产级别镜像,为用户提供更加方便安全的构建流程。
现在您就可以在 DaoCloud 公有云的代码构建中使用该功能。在新建项目的设置中,将「流程定义」选择为「安全镜像」即可开启。使用「安全镜像」功能与您之前的发布流程一致,仅仅改变了生成镜像的过程,您仍然可以自动发布新版本的镜像。
DaoCloud 公有云团队致力为用户提供更方便的 Docker 使用体验。通过聆听用户反馈,收集前沿社区的实践,不断将最佳实践带给大家。
大家现在可以浏览 DaoCloud 文档来了解具体功能信息与使用方法,结合我们精心准备的示例代码与教程,来体验一下安全镜像吧!
进阶参考文章:
- DaoCloud 文档:构建「安全镜像」
- DaoCloud 文档:daocloud.yml 2.0
- DaoCloud 核心开发团队成员孙宏亮(Allen Sun)的「Allen 谈 Docker 系列」文章
- Docker 文档: Understand images, containers, and storage drivers(英文)
另:
我们现在正在寻找一只在后端玩耍的技术牛(接受实习),有一门OO语言,Python/Golang 有心得,学过分布式系统架构和网络协议课程,如果你喜好测试用例,有点小代码洁癖,命令行指法优美那就更不能错过了!
战斗机请投掷简历至邮箱:jobs@daocloud.io
未经允许不得转载:DaoCloud道客博客 » DaoCloud 推出「安全镜像」功能:帮助您更安全地构建镜像