为了普及Docker知识,推动国内Docker生态系统的建设,为Docker爱好者和使用者提供一个实战平台,云雀科技启动了“Docker巨好玩”镜像构建挑战赛。自活动发布以来两周的时间内,收到了来自全国各地的60多位选手及团队报名参赛,参赛者涵盖了研发、运维、产品等各个职位,其中有10多位选手已经提交了作品,参赛主题也是五花八门,只有你想不到的,没有大家做不到的。
作为本次活动的主办方,除了选出最优秀的镜像作品外,我们更希望能够集思广益,充分调动大家的创造性,不仅为这些Docker爱好者提供一个各显神通的平台,更能为他们未来的工作带来新的启示。目前看来大家的议题主要集中在面向开发者的镜像和面向服务的镜像:
面向开发者的镜像:如方便开发,测试的工具。这也选手们参与最多的类型,他们提交的主要议题包括:完整的Emacs开发环境,PHP开发测试环境,一键生成开发所有常用工具,通过docker in docker的方式提供开发,持续集成,测试环境,浏览器兼容测试的云端解决方案等。
面向于服务的镜像,如数据库服务,数据分析服务等第三方服务。在这一类镜像中,参赛者的创意包括:RDS服务,MongoDB服务,开源企业级数据库监控系统,Hadoop in Docker镜像,OpenStack镜像等。
面向最终用户的镜像,如博客,电子商务和内容管理等平台。在这一类镜像中,参赛者们的主要议题有:智慧学校平台,面向中小团队的一体化管理解决方案,VPN自动部署环境,文档处理镜像等。
基础镜像:如OS镜像,运行环境镜像,是构建其他镜像的基石。 ,参赛者们的创意集中在分布式计算节点,基本的安全加固镜像,Hadoop基础镜像,fastdfs镜像等。
还有几位参赛者选择了和Docker本身相关的主题,比如Docker Registry,基于Docker的项目部署工具,Docker集群管理等。
很多选手的题目,都和本身自己的工作或学习联系紧密,他们在报名不就提交了作品。特别是第一位提交作品的参赛者李进,带给了我们很多惊喜,他不仅作品准备得非常充分,提交了详细的说明文档,还写为我们的平台提出了很多实用的建议。深入了解后,才知道李进竟然还是一名大二的学生,云雀内部的小伙伴们纷纷感慨“长江后浪推前浪”,时光匆匆,危机重重。他是如何在大二期间就做到这么厉害的呢?应云雀内部小伙伴的要求,我们专访了李进,也分享给大家:
云雀科技:首先请您自我介绍一下。
李进:我叫李进,目前是大二,就读于武汉生物工程学院网络工程专业。我目前比较感兴趣的方面是云计算和互联网程序开发。目前的主要工作是在杭州航桓科技有限公司做app的后端。
云雀科技:您是如何开始Docker的实践?Docker为您带来了哪些便利?
李进:我开始接触到Docker是在学校的图书馆的兴趣小组中开始的,大约是2014年年初,我们兴趣小组主要负责图书馆的服务的维护。当时我们遇到一些性能瓶颈,比如每当选课或者集体教师评选的时候,服务器就挂。但是平时使用量又很少。所以我们把目光投向了Docker,因为Docker很有弹性且快速。我尝试了很多关于Docker的很多东西比如CoreOS,Kubernetes,Panamax,但是目前的案例还是很少有可以借鉴的,所以图书馆暂时没有大规模应用。目前我把一些不是很重要的服务用docker尝试着托管,或者对程序进行测试的时候使用docker,用完就删除镜像,保留dockerfile记录构建细节即可。另外docker最大的特点就是快速,所以除了集群这块之外,我更喜欢应用到开发中。它带来最大的便利就是把部署的工作带到了开发者的身上,运维者不用关心细节。
云雀科技:本次参赛作品的主题是什么?为什么选择这个主题?
李进:我参赛的主题是用Docker构建laravel的开发环境,实现各个开发者开发环境统一。配上云雀的平台,从无开发环境到有开发环境大约只花几分钟下载镜像即可,同时一些特殊的东西也能很好的被支持,比如自己写的php的扩展,分享给队友或者社区,太方便了。而且可以根据不同的docker-compose.yml文件可以启动不同的环境,比如开发,部署。目前我正努力让它更好用。所以我恳求大家能给我更多更好的建议,让我能完善它。我选用这个主题,也是为了展现Docker的另一种应用方式,比较贴合我本身的需求。
云雀科技:您在制作镜像的过程中遇到过哪些问题?是如何解决的?
李进:首先挺让人头痛的东西就是网络问题,很多GitHub上的项目你要构建都比较麻烦,比如一些基于node的项目是依赖于npm管理包的,网络有时候不好的时候包就会下不下来。我选择的方式是安装nrm镜像源管理,进行源的切换很方便。
还有个问题就是关于Docker的特权模式的,如果我开启特权模式且host和容器都装了tcpdump(备注:有时候我需要在容器查看下数据需要用到tcpdump和strace但是strace需要特权模式才能用),在容器里面使用tcpdump就会出来权限问题,当时挺头疼的。解决方法就是把容器里面的tcpdump的路径替换下:
例如(Dockerfile)
RUN mv /usr/sbin/tcpdump /usr/local/bin
最后有个问题就是我在为node构建开发环境的时候,因为不需要Apache这样的东西,所以没有程序作为一个后台进程使Docker容器不退出,目前还没有找到好的办法,只有写个死循环在docker-compose.yml的配置节点command上。
云雀科技:您在使用AlaudaCloud过程中有哪些心得?
李进:云雀的运行模式非常新颖,介于PaaS和IaaS之间,同时拥有IaaS和PaaS的优点,很贴合我这样的小众开发者的需求。主要好的方面在于网络环境好的没话说,构建的很顺畅,同时对markdown的支持,我个人认为用的舒服,是一个非常不错的私有仓库。我相信云雀平台这种新兴模式会越来越完善,是我们开发者的福音。
再次温馨提示各位Docker爱好者:本次大赛设置了MacBook Air,Apple Watch Sport等大奖,每位报名并提交作品的参赛者都将获得精美纪念品。报名将截至5月17日,欢迎更多Docker爱好者参与进来,我们期待看到你们的创意!