小小千想和您聊一聊

当前位置: 首页> 技术分享> docker教程

docker教程

  前言

  在计算机技术日新月异的今天, Docker 在国内发展的如火如荼。

  各种虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。那虚拟机与Docker究竟有何不同呢?

  首先,大家需要明确一点,Docker容器不是虚拟机!

  一、Docker 是什么?

  说了这么多, Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机。

  什么是虚拟机?

  可能很多读者朋友都用过虚拟机,而对容器这个概念比较的陌生。我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件。

  每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。

  每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

  什么是容器?

  而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。

  容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

  容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。

  通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。

  容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。

  容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。

  通过下面这幅图,我们可以很直观的反映出这两者的区别所在:

  Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

  而 Linux 容器是 Linux 发展出的另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。

  对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

  Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。

  程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。

  总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

  二、Docker与虚拟机的对比:


  三、Docker 的三个基本概念

  . Image(镜像)

  . Container(容器)

  . Repository(仓库)

  镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。

  Image(镜像)

  那么镜像到底是什么呢?Docker 镜像可以看作是一个特殊的文件系统

  镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像(Image)就是一堆只读层(read-only layer)的

  Container(容器)

  容器(Container)的定义和镜像(Image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

  由于容器的定义并没有提及是否要运行容器,所以实际上,容器 = 镜像 + 读写层。

  Repository(仓库)

  Docker 仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行。

  四、docer的应用

  简化配置

  这是Docker初始目的,虚拟机VM最大的好处是基于你的应用配置能够无缝运行在任何平台上。Docker提供同样类似VM的能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦。

  开发人员的生产化

  在一个开发环境,我们希望我们的开发环境能更加接近于生产环境,我们会让每个服务运行在自己的VM中,这样能模拟生产环境,比如有时我们并不总是需要跨越网络连接,这样我们可以将多个Docker装载一系列服务运行在单机上最大程度模拟生产分布式部署的环境。

  应用隔离

  有很多理由你需要在一台机器上运行多个应用,这就需要将原来铁板一块monolithic的应用切分为很多微服务。实现应用之间的解耦,将多个应用服务部署在多个Docker中能轻松达到这个目的。

  快速部署

  Docker通过创建流程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。

上一篇:HTML5工具初识之网页编辑器

下一篇:Java+Appium环境配置

QQ技术交流群

千锋软件测试官方①群
858327674

加入群聊