【保姆级教程】Docker入门到实战教程之一:初识Docker容器

  本章前言:

  Docker想必这几年干IT的小伙伴们都听说过,现在身边的很多大佬也逐渐的开始面向Docker运维了,再也不需要占用资源的vm、或者vbox虚拟机了,我们只要几行命令,就能轻松的在终端跑起来,西安SEO优化站长本身是优化出身,由于好奇linux操作系统,因此一学就离不开Docker容器技术了,本系列就开始从最简单的Docker容器入门到实战,深入浅出的讲解容器的神秘之处,当然文章很多都是参考互联网这个鱼龙混杂的平台。接下来就跟站长一起开启第一篇。

  一、什么是Docker

  Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

【保姆级教程】Docker入门到实战教程之一:初识Docker容器_第1张图片

  二、Docker的应用场景

  1、Web 应用的自动化打包和发布。

  2、自动化测试和持续集成、发布。

  3、在服务型环境中部署和调整数据库或其他的后台应用。

  4、从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

  三、Dokcer的有点和缺点

  Docker优点

  Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

  1、快速,一致地交付您的应用程序

  Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

  容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  A、您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。

  B、他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。

  C、当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。

  D、测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

  2、响应式部署和扩展

  Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

  Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

  3、在同一硬件上运行更多工作负载

  Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
 

【保姆级教程】Docker入门到实战教程之一:初识Docker容器_第2张图片

  Docker缺点

  1、隔离性

  基于hypervisor的虚拟技术,在隔离性上比容器技术要好,它们的系统硬件资源完全上虚拟化的,当一台虚拟机出现系统级别的问题,往往不会蔓延到同一宿主机上的其它虚拟机上,但是容器就不一样了,容器之间共享同一个操作系统内核及其它组件,所以在受到诸如黑客攻击这种情况的时候,很容易通过底层操作系统影响的其它容器,甚至逐个击破,产生连锁反应,当然,这个问题可以通过部署容器来解决,但随之又会产生新的问题,比如成本增加以及性能问题。

  2、性能

  不管是虚拟机还是容器,都是运用不同的技术对应用本身进行了一定程度的封装与隔离,在降低应用和应用之间以及应用和环境之间的耦合性上做了很多努力,但是随之而来的,就会产生更过的网络连接转发和数据交互,这在低并发系统上虽然不会很明显,但是当同一虚拟机或者服务器下面的容器需要更高并发量支撑的时候,也就是并发问题成为系统瓶颈的时候,容器会将这个问题放大,所以,并不是所有的场景都适合容器技术。

  3、存储方案

  容器的诞生并不是为OS抽象服务的,这是它和虚拟机最大的区别,这样的基因意味着容器天生是为应用环境做更多的努力,容器的伸缩也是基于容器的这一特性,而与之相对的,需要持久化存储方案恰恰相反,在数据存储这一点上Docker容器提供的解决方案是利用volume接口(存储卷)形成数据的映射和转移,以实现数据持久化的目的。但是这样同样也会造成一部分资源的浪费和更多的交互,不管是映射到宿主机上还是网络磁盘,都是退而求其次的解决方案。

  本章总结:

  以上就是Docker入门到实战系列教程第一篇,简单的介绍了下什么是Docker、Docker的领域和Docke的优缺点,更多关注Docker相关的干货还请继续关注西安SEO优化Docker板块。

你可能感兴趣的:(Docker)