毫无疑问, 容器 是DevOps世界一个突破性的技术。镜像创建对于部署和发布环节都非常重要。那么如何效率地创建和使用镜像来提升部署速度呢?以下是作者的经验和分享,大家不妨一试——
通常部署需要从Internet下载成百上千MB的数据。因此部署常受到网速慢或者断网的困扰。
而缓存得越多,部署得就会越快。最终的目标是实现Docker镜像离线一键部署。
Docker很强力,但是我们也有很多VM或者裸机部署。为了避免供应商锁定,通常需要选择是否用Docker支持部署,最好两种场景都实施部署持续集成。
举例来说,如果使用kitchen来做持续集成。默认情况下,使用自定义Docker镜像来测试。当IMAGE_NAME指定为ubuntu:14.04时,可以很肯定ubuntu:14.04系统对于部署非常适用。
从镜像起一个Docker容器,然后列出并检查所有安装的包/服务。
为什么要这么做?首先我们希望Docker镜像尽可能地小,镜像交付就会很快速。其次,包/服务越多,问题也会越多,例如包冲突,TCP端口占有问题。一些服务的安装后脚本甚至会改变关键性的全局配置文件或者留下不可预期的flagfile。所以最好让Docker镜像保持傻傻的单纯。
如果不这么做,服务会在Docker镜像的最后阶段被杀掉。在/var/lock/*下的服务的lockfile如果没有被正确使用,当测试新建镜像的部署时,服务可能会启动失败,导致测试无效。
当有改变发生时,我们时不时需要重构Docker镜像。为了确保一切正常,我们可以在Docker构建过程中添加自动验证逻辑。
这是一个简单的例子,实践了上述提到的技巧。
详见: http://mp.weixin.qq.com/s/Yz-WPXZvtwxWhzsoRhhcFw
作者:Denny Zhang
文章来源: https://dennyzhang.github.io/d ... .html