16.2 研发人员该如何看容器

很多研发工程师经常会问:我是搞开发的,容器技术跟我有关么?其实,笔者在实践过程中发现,合理应用容器技术,不光能极大提升开发效率,也能提升自身技术水平。

1.快速上手新技术

众所周知,新技术的学习往往从学习简单示例(例如Hello World)开始。这是学习新知识的标准思路:最小系统原则,即从变量最少的最小系统开始,循序渐进地学习。

现实生活中,简单的事物背后往往蕴含着复杂的机制。用户在构建最小系统的时候,首先面对的就是其母环境(或者说前置条件)的搭建。虽然随着程序语言和系统程序的发展,语言和工具都设计得越来越方便。但学习成本仍然居高不下,各大编程语言论坛中关于环境安装的问题总是层出不穷。

通过Docker的使用,用户可以将精力和注意力都尽快地放在语言本身的学习上,而无需折腾系统环境的各种配置。Docker官网的口号就包含了以上含义:Build,Ship and Run Any App,Anywhere,即任何应用都可以构建、发布、运行于任何环境。Docker将环境的影响因素降至最低,使开发者能统一地掌控整个应用的生命周期。

目前Docker官方支持的编程语言镜像就有十几种,涵盖所有的主流编程语言的开发环境。除此之外,常用数据库、缓存系统、主流Web框架等都有官方的镜像。除此之外,Docker Hub还提供了丰富的第三方镜像和Dockerfile。

2.容器化的代码仓库

经常整理和收集常用代码库往往是软件工程师实现高效交付的“秘诀”。

在技术团队中,为何行业新人和资深工程师之间的生产力可以有几倍甚至几十倍的差距呢?暂且不论眼界思路和基础技能的差距,同样是做一件任务,新人接手后首先面对的就是思路和工具的抉择,然后需要解决实践中的各种“坑”。而资深工程师接手后,可以快速规划所需要的资源,并在最短时间内利用积累的模块搭建起系统,从而可以快速完成任务。

另外,研发过程中的各种发布版本,也可以用Docker容器的方式保存。以后遇到类似的需求,可以直接运行,调试并复用代码。

3.面向业务编程

软件开发,除非是算法比赛,在本质上是要能解决业务问题,满足需求方的要求。

最近几年,各种新的技术和工具层出不穷,虽然万变不离其宗,但能快速掌握新的业务需求和新的技术栈,是对一个优秀技术人员的迫切要求。

笔者根据Docker的特性,给出一个可行方案:使用Docker快速掌握新技术要点并完成适当的技术储备。假定读者是Python技术栈的后端工程师,熟悉常规网站的后台建设,那么如何快速实现移动应用的Restful API Sever呢?读者可以去Docker Hub搜索适合做API服务器的Python快速开发框架,根据自身业务需求修改Dockerfile,定制符合要求的镜像,然后快速启动一套能满足相关API的系统。

可见,容器技术可以帮助软件工程师更加专注的面向业务需求,快速启用新技能。

4.使用Docker Hub发布开源项目

技术人员从社区借鉴和学习各种好用的工具和技能时,也需要积极反馈于社区,共同营造一个良好的生态环境。

笔者在此建议:读者如果参与开源项目的建设,那么可以通过Docker完成程序的打包、测试、发布和部署,通过Docker Hub来管理和维护镜像。这样可以统一又清晰地管理整个开源项目。