关于对docker的理解

1.docker官方解释:

见 【Docker百度百科】

看完了是不是一头雾水?还是不知道做什么的,对么?反而更迷糊了?不急,接下来看~~
还有很多不明白的,比如说:容器是什么?镜像是什么?还有很多很多疑问?
百科,这应该是科普的作用,又不是写书,搞这么深入细节干嘛?有需要深入的,自个儿去深入就得了,提供引用的书籍介绍下书籍就可以了。学学维基百科,这分类和逻辑才是棒。
说实话,我非常讨厌这样的官方的很学术的介绍,非常的不利于初学者初次接触这种新技术,可能就被这个解释给弄得不敢继续深入下去了,感觉非常非常难,废话不多说,上正餐!

2.先想一个问题,为什么docker会火起来?当然是存在即是合理啦:

docker是为了解决传统虚拟环境的短板而新兴的技术。
生产环境部署应用,需要根据不同的开发语言,或者开发方式,会需要各种各样的环境。比如有的是python写的,那么需要python环境,Ruby写的,那么需要Ruby环境等等,不尽相同。
矛盾点在于,传统的部署解决方案用的是虚拟机作为部署单元,用类似VMware这样的工具来进行管理,如果只是单台虚拟机搭建环境什么的,压根用不上docker,但是如果要给1000台机器搭建环境呢?环境都一样还好办,但是如果是五花八门的呢?
传统的技术,随着技术的发展,必定要从机器集群向云端演变,那么从开发角度上,要将业务越分越细,也就是微服务,那么应用单元就会越来越小,传统的虚拟机去部署这些个微服务,就显得有点大炮打蚊子的感觉。docker的容器化概念,简直就是刚刚好。

3.docker的部署方式和传统虚拟机的对比:

传统虚拟机,单个虚拟机是一个部署单元,相对来讲是一个资源比较大的节点,功能并不单一,因为开辟一个虚拟机从操作系统到环境部署都是一个比较大的开销,所以,一般来讲为了节省资源,一个虚拟机会部署多个应用,那么一个虚拟机上的不同环境的应用,所需要的环境都会在这一个虚拟机单元上安装。应用之间如果环境相互影响,也是件比较头痛的事情。
docker解决传统虚拟机部署的痛点,是这么干的。docker引入了image,姑且理解为模板吧,每个image,都是一种定制好的模板,模板包括有定制化的环境,比如JDK1.8,python3等等这类基础环境,有需要的时候,那么直接根据需要用不同的模板,这样就可以得到包含基础环境的container,姑且理解为送女朋友的五花八门形形色色的盒子。这个盒子里就是一个个应用,这样定制有心思的礼物才能给女朋友(客户)美好的体验。说到这里,不知道有没有感受到docker的这个image和container的魅力所在。
可能有人要问,这种单独应用的环境的确解决了,那么是如何解决给1000台机器搭建不同的环境呢?突然想到了小品,把大象装冰箱一共分几步?这里是把应用封装安装到1000台机器分几步?

4.解决给1000台机器搭建不同的环境:

给1000机器安装docker,传统方式分发一键给所有机器安装。
给要部署的应用构建所需要的不同的image单元模板,不同的模板可以编程,用dockerfile来编写,image放在指定的仓库。
让1000台机器从指定的仓库自个拉取各自需要的镜像,各生成各自的container,用脚本也可以,用程序编程也可以。
检验容器是否正常运行。

5.回归正传,docker的理解:

docker是用来做软件发布的一个软件,是一个工具。这点要记好了,这喵的只是个工具。
运行在docker的应用可以跨平台运行,其实是“作弊”的跨平台运行,所谓跨平台运行,就是多个操作系统都有对应的docker安装包嘛。应用都是运行在docker上,其实应用哪来的什么跨平台,都是这么干的,java的跨平台,也是这么个意思。
docker可以定制化软件运行环境和基于运行环境开发的软件于模板里面,上面有提到过叫image。用dockerfile写嘛,其实就是写写运行安装软件和环境的脚本嘛,贼简单,语法和shell脚本类似。
上面也说过了可以在跨平台运行,那么运行在哪呢?是运行在容器中,这个容器叫Container,Container是被docker管理的。也就是说,礼物还是装在熟悉的盒子里面嘛,盒子都放在docker这个桌子上。想了解原理的可以看这里,这个前辈写得挺透彻的。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值