Notice: Constant WP_DEBUG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 12

Notice: Constant WP_DEBUG_LOG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 13

Notice: Constant WP_DEBUG_DISPLAY already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 14
Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有【zoues.com】 – zoues

LOADING

Follow me

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有【zoues.com】
五月 22, 2017|DockerPaaS

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有【zoues.com】

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有【zoues.com】

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

作者|徐磊
编辑|厂白小
今天,为师教你的是三国杀失传多年的绝版玩法……

公元220年—280年,东汉政权没落;曹魏,蜀汉和东吴三分天下。赤壁之战,曹操被孙权刘备联军击败,自此奠定了三国鼎立的雏型。各国急需锦囊妙计以能独霸一方。

公元2013年,DevOps正在兴起,Flicker的10 Deployment per day在几年前点燃的星星之火已经渐成燎原之势,IT界急需一种可以大规模提升交付效率的解决方案;Docker在这个时候面世,在短短几个月内就已经席卷全球,形成迅雷不及掩耳盗铃之势。

今天我来看看Docker锦囊妙计第一计:无中生有

“天下万物生于有,有生于无”《老子》

装够了。

我们来看看Docker如何能够“无中生有”,让你在无须安装任何SDK的状况下完成应用代码编译和调试,首先获取锦囊:https://github.com/ups216/netcore-docker-example

看以下这段 docker-compose.ci.build.yml 代码

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

有了这个文件后,你只需要运行(记住:运行这个命令你除了docker之外无须安装任何其他软件,你可以在任何安装了docker的windows, mac或者linux环境中执行这个操作)

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

30秒演示如下:

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

这个命令将完成3件事情:

  • 从docker hub拉取 microsoft/aspnetcore-build:1.0-1.1 镜像,并运行这个容器

  • 将当前目录映射到容器内的/src目录

  • 在容器内的/src目录中执行以下命令

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

这里发生了什么?

首先这个aspnetcore-build镜像中已经预先打包好了开发,编译和调试asp.net core所需要的所有sdk和工具,比如:dotnet, node, npm, bower等。这第一步就是从docker hub获取这个镜像并将其运行起来。第二步则利用docker volume的目录映射功能将本机上的源码目录映射到了容器内的/src目录,这样容器内部在操作这个目录的时候实际上是在操作本机上的代码,相当于我们将代码塞到了一个具备.net sdk的隔离环境中。最后,我们运行dotnet retore和dotnet publish命令来完成编译和打包发布,注意由于这两个命令是在容器内执行的,所以在本机上无须预先安装任何环境。

此乃:无中生有

利用docker的无中生有特性,我们还可以做很多事情,比如:

  • 搭建干净的持续集成环境:以往在搭建持续集成环境的时候最繁琐的就是为各种不同的应用准备vm镜像,如果你要同时支持java, .net, node, php等不同开发语言,那就必须给每一种语言(甚至不同版本)准备各自不同的vm镜像;这样做不仅繁琐,而且有些不良代码还会将环境搞坏。有了docker以后,我们就可以利用以上的“无中生有”锦囊,在仅仅安装了docker的环境中按需拉取build镜像,映射代码到容器,完成编译后再将容器清理掉。

  • 共享计算资源:既然可以使用干净的环境,编译环境都是临时拉取的,那也就意味这我们可以让不同的应用共享共一套环境,这将大大降低资源的占用,提高利用率。

作者系英捷创软(LEAN SOFT)创始人兼首席架构师,专注于软件工程,DevOps方面的解决方案咨询。有超过10年的软件研发项目管理经验,曾任SSW中国研发中心总经理。是资深ALM顾问和解决方案专家,微软最有价值专家和大中华区域社区技术总监,认证ScrumMaster和敏捷教练。

想要面对面听他为你讲解看家本领《DevOps实战》

阅读原文7折票!

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有

Docker4Dev 8.1 – 三国杀之Docker锦囊:无中生有20位报名,享受7折早鸟票!点「 阅读原文 」报名和徐老师面基~

no comments
Share