Docker是一个开源的容器引擎,它笨重,且易移植,“build once, configure once and run anywhere”。应用go语言开发,并听从apache2.0协定。

一、 传统软件行业中存在的问题

  • 开发、生产、测试环境不统一,开发环境下可用的服务挪到生产上不可用。
  • 不同环境之间迁徙老本太高,没有对立的软件部署封装规范及封装环境。
  • 对于分布式软件继续集成(测试、打包、公布、部署、治理)周期很长,难以自动化、工程化。
  • 面临刹时用户流量增大的场景,很难实现分布式应用服务实例的疾速部署。

二、集装箱与docker之间的关系

通常称docker为软件行业的集装箱技术,那么docker和集装箱有什么相似之处呢?

传统行业集装箱软件行业Docker
装载实体货物装载并运行应用服务
具备对立的规格,便于搬运封装环境的统一性(JDK、环境变量都能够封装在一个docker镜像外面),能够听从肯定规定重复的、疾速的自动化装置部署
环境隔离,每个公司的集装箱货物与其余的公司的货物不混在一起。在linux中采纳namespace技术进行资源隔离,cgroups技术进行资源限度。容器之间互不影响。
资源共享,一个运送集装箱的船舶,搭载多个集装箱一台服务器能够启动多个docker容器,达到共享服务器资源的目标
具备残缺的物流仓储零碎docker镜像仓库中的镜像,能够导出导入,上传下载

能够参考我的另一篇文章《【大话云原生】煮饺子与docker之间的关系》,我感觉这篇文章对于您了解docker将有十分大的帮忙。

三、docker与虚拟机的区别

docker和虚拟机在某些利用场景下比拟像,然而docker不是虚拟机。

docker是一种虚拟化容器技术,他和虚拟机最基本的区别是:docker容器和宿主机共用linux操作系统内核,不会在宿主机上再次装置操作系统docker容器运行状态下的实质是宿主机上的过程,通过namespace资源隔离,cgroups资源限度,使它看上去像是一个独立的虚拟机.

比照项虚拟机docker容器
启动速度龟速(实质是启动操作系统)秒速(实质是启动一个过程)
镜像大小以Ubuntu为例,1G以上Ubuntu:195M
利用部署集成通常是手动装置下载镜像+启动镜像(主动)
内存拜访效率慢,先拜访虚拟地址根本等同于宿主机
CPU损耗虚构操作系统造成的损耗较大靠近于0

四、docker的利用场景

  • docker镜像一旦构建,就曾经一次性实现了利用主动打包、集成。docker镜像能够进行版本治理、复制、分享、批改,就像治理代码一样。
  • 通过对立的docker环境封装(比方镜像中封装了同一版本的JDK、同样的环境变量等等),保障应用服务运行环境的一致性。避免出现在测试环境上好用,挪到生产环境下运行失败的问题。
  • docker能够做到秒级、甚至毫秒级的启动工夫。大大的节约了开发、测试、部署的工夫。
  • 因为镜像可下载、可复用,docker容器可疾速启动等个性,联合容器编排服务(k8s)能够实现大型分布式部署的弹性伸缩,疾速扩大。

五、总结

如果初学者对于本节内容了解起来有艰难,也不要泄气。其实docker的学习难度很低,随着学习的深刻,下面的这些概念很容易了解的。
感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。更多精彩内容公众号:字母哥杂谈。字母哥博客:zimug.com