Docker学习笔记一

作者:朱金灿

来源:https://blog.csdn.net/clever101

 

       今天开始学习Docker。首先说些题外话,今天在学习Docker时突然想到一个问题:IT技术发展日新月异,到底该如何入门一门新技术呢?我看到网上太多的教程一上来就告诉人怎么编译源码,怎么用软件。现在我感觉这不是正确的学习姿势。学习一门新技术,先要问三个问题:它是什么?它能干什么(或者说它的应用场景有哪些)?它出现的背景是什么?

 

        回到正题Docker上。需要问三个问题:Docker是什么?Docker能干什么?Docker出现的背景是什么?前两个问题我通过阅读网上的一篇文章:Docker是什么?可以用Docker做什么?得到了答案。按照我的理解:Docker就是在操作系统里和应用层中的一个箱子,就是你在一个操作系统里安装了Docker,这个Docker里还能在里面为你部署一套运行你的应用所需的环境。这时你要问:那Docker到底有什么用呢?比如你在你的Ubuntu操作系统上开发了一个网站程序,而你的网站是部署在Centos环境下,这时你可以在Ubuntu安装Docker,通过Docker在Ubuntu操作系统上部署一套Centos环境(按照Docker的概念这叫一个容器,这个说法很形象,就像把应用软件所需的环境放在了一个箱子里一样),这样你的网站就能在这个环境下测试甚至部署了。可能你会说:那我在Ubuntu操作系统装一个Centos虚拟机也能干这事啊!首先装虚拟机要比装Docker麻烦多了,你得先安装VirtualBox或者vmware来架设虚拟机,其次你得准备你要安装的虚拟机操作系统的镜像文件,最后安装完虚拟机操作系统你还得干一系列琐碎的事:比如设置字体、设置网络端口等等,这样是不是特别麻烦呢?还有多个虚拟机之间从硬件层面已经做了物理隔离,导致虚拟机之间互不可见,也不能共享资源,而Docker中的多个容器是可以共享cpu和内存的,所以在Docker中几乎不存在资源浪费,资源利用率比传统的虚拟机高多了。

 

        那么在谈谈Docker出现的背景。当初在云计算开发热潮中,很多大中小型公司都推出自己的云计算平台,比如亚马逊的AWS、微软的Azure等等。但是云计算哪是一般小公司能干得起,为了和巨头们竞争,有一家叫dotCloud的公司另辟蹊径,推出了Docker。大家想云计算服务本质不就是巨头们为大家提供的远程虚拟机吗?如上文所述Docker是比传统虚拟机有着巨大优势的,而且它是开源的。所以Docker一经推出,立即受到业界的热捧!

 

        Docker的优点是很多的,但是缺点也是有的。在《Docker全攻略》一书中提到了三点:一是Docker容器间的宿主资源没有完全隔离;二是作为Docker的Golang语言还没完全成熟;三是Docker虽然已经开源,但是其发展还掌控在dotCloud公司手里。其实我想到还有一点:就是Windows和Mac平台对Docker的原生支持不好,网上的说法是Windows已经原生支持Docker了,但是Mac还不行。为什么Windows和Mac平台对Docker的原生支持很重要呢?因为世界上大部分的开发者都是在Windows和Mac平台上的,Windows上拥有宇宙第一IDE——VisualStuio,因此一个很常见的应用场景是在Windows和Mac平台上开发,在Linux上测试或者部署。比如我现在开发的桌面软件,在Windows上开发,要编译Linux版本和Mac版本,就得搞两个虚拟机了,如果这事用Docker来干就简单了,问题是Docker对Windows的支持程度如何。

你可能感兴趣的:(Docker)