关于java:docker专栏1docker解决的实际问题及应用场景

57次阅读

共计 1383 个字符,预计需要花费 4 分钟才能阅读完成。

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

正文完
 0