您的位置:首页 > 运维架构 > Docker

用通俗的话说明docker是什么

2017-05-17 11:37 260 查看

1.docker官方解释:

【Docker百度百科】

看完了是不是一头雾水?还是不知道做什么的,对么?反而更迷糊了?不急,接下来看~~

还有很多不明白的,比如说:容器是什么?镜像是什么?还有很多很多疑问?

说实话,我非常讨厌这样的官方的很学术的介绍,非常的不利于初学者初次接触这种新技术,可能就被这个解释给弄得不敢继续深入下去了,感觉非常非常难,废话不多说,上正餐!

2.我的理解:

docker是用来做软件发布的一个软件,是一个工具

可以多平台运行,其实是“作弊”的多平台运行

用来打包软件运行环境和基于运行环境开发的软件(这里说得不够准确,大牛们原谅我说得不够准确,因为要说得通俗,后面会细解释)

打包好的运行环境(即系统)和基于运行环境开发的软件生成的东东叫镜像(image),类似我们装windows系统使用过的GHO、ISO等系统镜像,但是有些区别,这里不深入讨论有什么区别。

上面也说过了可以在多平台运行,那么运行在哪呢?是运行在容器中,这个容器叫Container,Container是被docker管理的

Container和image的关系就像鱼缸和鱼儿的关系,image是鱼儿,container是鱼缸,也就是说image是运行在Container里面的

image并不是真的鱼儿,而是一个镜像,当要 在container中运行image镜像的时候,docker会拷贝一个image到container中,原本的image还是被docker管理着,运行在container中的image是一个副本,准确来说,不是副本,这里不深入说,有兴趣的可以去搜搜cgroup,docker利用了linux系统的这个弄的。不深入来看,可以理解为一个image副本

细心的使用过docker的读者会发现linux 基础 image远小于我们正常使用的linux系统,原因是这样的,docker官方提供了基础镜像,主流的linux系统都被大刀阔斧的精简了,只留下了必须留下的东西,砍掉了很多功能,让系统非常非常的纯净,没有任何多余的软件

docker打包系统生成image镜像,并不是把虚拟机中,我们正在在运行的系统进行打包操作,这点要注意

要生成自定义镜像,有个东东来了,那就是Dockerfile,简单来说,Dockerfile是一个脚本,用来编写要自定义的镜像该如何去生成的步骤,比如说,要生成一个自定义的image镜像,是基于ubuntu的,那么在Dockerfile的最前头应该有这么一句话 FROM ubuntu等等,具体的Dockerfile的指令操作,在此不细说,大家只要明白Dockerfile是个用来描述自定义镜像的生成步骤的脚本,啰嗦一句,每个Dockerfile中操作的指令都会让docker在执行Dockerfile的时候生成一个临时的layer,多个layer构成一个image镜像,如果命令有改动,会生成新的layer,没有改动,就只保留一份layer

现在回答一个之前没有说明的【可以多平台运行,其实是“作弊”的多平台运行】的问题,为什么说”作弊“呢?因为docker并没有让image运行在不同的操作系统上,比如说linux,windows上,而是运行在docker支持的类似java的JVM的沙盒里面,和java的跨平台采用的是一类的虚拟化技术

3.结束语

见到新技术的时候,不要去怕深入,新技术的出现,肯定是因为有新需求的出现,新需求出现了,但原有的解决相应问题的解决方案不够用了,那么便会推进新的技术理论的出现和发展

不要为了学习新技术而学习新技术,因为如果没有具体的去使用新技术,是不那么容易理解的

搞不懂新技术是干什么的,要学会不求甚解,先学会用,然后再相辅相成的大胆猜测,小心求证

接下来还会将一些流行的技术,用通俗的话来说明,有兴趣的,可以继续关注我的博客的动态,菜鸟上路,请多多关照!欢迎大家指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息