美文网首页
docker是什么?为什么使用docker?

docker是什么?为什么使用docker?

作者: Shawn_Shawn | 来源:发表于2020-09-11 00:36 被阅读0次

前言

当开发的同学开发完app后,需要发布上线。这个时候需要负责运维的同学进行app的部署发布,但是这个系统的发布涉及到很多步骤,组件。比如需要部署mysql,redis,mongodb,kafka,es,tomcat等,除了单独部署组件,还需要配置集群模式,以上的节点又需要在另一台机器上部署,可能还需要部署zookeeper,nginx等。

之前的方式部署起来确实很麻烦,并且容易引发许多问题。

  1. 没有版本控制。如果发布新版本,则需要备份之前上线的版本,避免因本次版本上线失败,需要回滚。(如果运维同学忘记备份就GG了)。
  2. 没有统一配置。如果需要集群部署,则有可能因为各个节点的配置不一致,导致集群不生效。(运维同学再次背锅)。
  3. 没有统一环境。我们分为dev环境,uat环境,prod环境,如果因为环境不一致,也有可能造成因环境原因导致系统不work。
  4. 没有可移植性。
  5. 没有隔离性。如果MySQL,Redis等啥的都部署在一台服务器里,可能会相互影响,例如mysql占用的资源多,可能会导致其他组件资源占用少而pending,block等。
  6. 。。。

如何解决?

  1. 打包成部署包?例如Bin包,rpm包,统一配置。
  2. 其余则不太好解决,当然个人devops的能力有限,如果不使用docker,咱也不知道如何解决。

什么是docker

  • docker是一个开源的应用容器引擎,用于开发应用、交付(shipping)应用、运行应用,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上。

  • docker容器是轻量级的虚拟机,可以将操作系统底层虚拟机化,而虚拟机则是虚拟化硬件

  • docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器)

  • docker容器完全使用沙箱机制,相互之间不会有任何接口。

  • docker 使用 Google 公司推出的 Go 语言 进行开发实现。

  • docker原来是dotCloud公司开发的,后来改名为docker。

  • docker行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

为什么使用docker

上述我能想到的问题,docker都能解决。这也就是我们为什么要使用docker的原因。

  1. 更合理的分配了资源,更高效的利用了系统资源

    在启动docker容器的时候,可以合理的分配系统资源,并且由于docker容器本身具有隔离性,所以不会影响其他容器的运行,能高效利用系统资源

  2. 更快速的启动时间

    由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

  3. 统一环境,统一配置,可移植性

    build once, run anywhere,屏蔽环境问题,使得docker容器可以更好的移植到其他环境服务器等。

  4. 版本控制

    docker容器有版本,所以可以进行回滚操作。

总结:

  1. 容器技术,带来了更高的生产效率,同时降低了使用成本。
  2. Docker本身的技术门槛很低,各技术层次的人都可以从中受益。
  3. 总的一句话就是为了让开发同学,运维同学,测试同学和平共处。。。

docker vs vm

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

可以参考此文,可以更好地学习docker。

相关文章

网友评论

      本文标题:docker是什么?为什么使用docker?

      本文链接:https://www.haomeiwen.com/subject/razmektx.html