Docker简单了解

今天开始楼主就和大家一起学习一下Docker,大家应该能看到Docker是个全新的技术,也不是说多新,因为楼主不管是百度啊,谷歌啊,必应啊,找到的关于docker的知识不多,现在想来或许docker还处于发展中,楼主前段时间一直在高Asp.NET,结果我们老师看到了,说了一句话”你这个玩意没啥意思啊...”那好吧...楼主还是比较喜欢C#,.入门容易,提高难啊.

 

作为开山篇,楼主先来解决3个问题,Docker是啥,能用来干啥,我们为啥学docker.

 

为了体现楼主的英文水平,楼主决定用英文说下Docker是啥:Docker is an open platform for developers and sysadmins to build,ship,and run distributed appplications...”额...说白了,docker是一种用了新颖方式实现的轻量级虚拟机.类似于VM,但是在原理和应用上和VM的差别还是很大的.并且docker的专业叫法是应用容器(Application Container).

 

为啥要用容器?

 

应用容器是个啥样子呢,一个做好的应用容器长得就像一个装好了一组特定应用的虚拟机一样,比如我现在想用SQL Server,那我就找个装好了SQL Server的容器就可以了,然后运行起来,我就能使用SQL Server.感觉很屌的样子.

 

为啥不能直接安装一个SQL Server?问得好!!!安装一个SQL Server也可以啊,可是有的时候根据每个人电脑的不同,在安装的时候可能会报出各种各样的错误,万一你的机器中毒了,你的电脑挂了,你所有的服务都需要重新安装.但是有了docker,或者说有了容器就不同了,你就相当于有了一个可以运行起来的虚拟机,只要你能运行容器,SQL Server的配置就省了.而且如果你想换个电脑,直接把容器”端过来”就可以使用容器里面的服务.

 

在公司里使用的话最大的用途应该是保证线下的开发环境,测试环境和线上的生产环境一致.在公司的话,一般是开发人员把做好的东西交给测试去测,如果开发的代码跑不起来,或者配置文件有问题,开发就麻烦了.一个软件要上线的话需要走多个不同的职位.

 

若是利用容器的话,那么开发直接在容器里开发,测试的时候把整个容器给测试,测好了把改动改在容器里再上线就好了.通过容器,整个开发,测试和生产环境可以保持高度一致.

 

此外容器也VM一样具有一定得隔离性,各个容器之间的数据和内存空间相互隔离,可以保证一定的安全性.

 

 

那么为啥不用VM?

 

那么既然容器和VM这么类似为啥不用VM?竟整这些没用的幺蛾子...好吧.docker容器相对于VM还是有很多优点的:

1.启动速度快,容器通常在一秒内可以启动.VM要很久.

2.资源利用率高,一台普通PC可以跑上千个容器,楼主的电脑跑了3VM就有点虚了...

3.性能开销小,VM挺长需要额外的CPU和内存来完成OS的功能,这一部分占据了额外的资源.

你仔细看看这些优点,感觉是个层层递进的关系,这三个优点是相辅相成的.有了1才有2,有了2,3才能体现.

 

为啥相似的功能在性能上会有如此巨大的差距呢?看一下他们的设计图,先看VM:

 

VMHypervisor需要实现对硬件的虚拟化,并且还要搭载自己的OS,自然在启动速度和资源利用率以及性能上有比较大的开销.但是docker的设计是这样的:

 

docker几乎就没啥虚拟化的东西,并且直接复用了Host主机的OS,Docker Engine层面实现了调度和隔离重量一下子就降低了好几个档次.docker的容器利用了LXC,管理利用了namespaces来做权限的控制和隔离,没啥,cgroups来进行资源的配置,通过aufs来进一步提高文件系统的资源利用率.这些概念你不懂没关系,就是一种技术.

 

其中的aufs是个有意思的东西,UnionFS的一种,它们的思想和Git有些类似,可以把对文件系统的改动当成一个commit一层层的叠加.这样的话多个容器之间就可以共享它们的文件系统层次,每个容器下面都是共享的文件系统层次,上面再是对各自文件系统改动的层次,这样就能大大节省对存储的需求,并且也能加速容器的启动.

 

Docker是用Go语言写的,源代码托管在github,只有1W行这样的代码就完成了这些功能!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值