0

【docker专栏1】解决的实际问题及应用场景

 2 years ago
source link: https://blog.51cto.com/u_14482423/5452867
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
  • 一、 传统软件行业中存在的问题

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

  • 三、docker与虚拟机的区别

  • 四、docker的应用场景

「Docker」是一个开源的容器引擎,它轻巧,且易移植,“build once, configure once and run anywhere”。使用go语言开发,并遵从apache2.0协议。

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

  • 开发、生产、测试环境不一致,开发环境下可用的服务挪到生产上不可用。
  • 不同环境之间迁移成本太高,没有统一的软件部署封装标准及封装环境。
  • 对于分布式软件持续集成(测试、打包、发布、部署、管理)周期很长,难以自动化、工程化。
  • 面临瞬时用户流量增大的场景,很难实现分布式应用服务实例的快速部署。
【docker专栏1】解决的实际问题及应用场景_封装

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

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

传统行业集装箱软件行业Docker
装载实体货物装载并运行应用服务
具有统一的规格,便于搬运封装环境的统一性(JDK、环境变量都可以封装在一个docker镜像里面),可以遵从一定规则反复的、快速的自动化安装部署
环境隔离,每个公司的集装箱货物与其他的公司的货物不混在一起。在linux中采用namespace技术进行资源隔离,cgroups技术进行资源限制。容器之间互不影响。
资源共享,一个运送集装箱的船舶,搭载多个集装箱一台服务器可以启动多个docker容器,达到共享服务器资源的目的
具备完整的物流仓储系统docker镜像仓库中的镜像,可以导出导入,上传下载

可以参考我的另一篇文章《【大话云原生】煮饺子与docker之间的关系》,我觉得这篇文章对于您理解docker将有非常大的帮助。

三、docker与虚拟机的区别

docker和虚拟机在某些应用场景下比较像,但是docker不是虚拟机。

【docker专栏1】解决的实际问题及应用场景_应用场景_02

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

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

四、docker的应用场景

  • docker镜像一旦构建,就已经一次性完成了应用自动打包、集成。docker镜像可以进行版本管理、复制、分享、修改,就像管理代码一样。
  • 通过统一的docker环境封装(比如镜像中封装了同一版本的JDK、同样的环境变量等等),保证应用服务运行环境的一致性。避免出现在测试环境上好用,挪到生产环境下运行失败的问题。
  • docker可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
  • 因为镜像可下载、可复用,docker容器可快速启动等特性,结合容器编排服务(k8s)可以实现大型分布式部署的弹性伸缩,快速扩展。

如果初学者对于本节内容理解起来有困难,也不要气馁。其实docker的学习难度很低,随着学习的深入,上面的这些概念很容易理解的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK