第一关:初识Docker容器

1.1 什么是Docker?

Docker是基于Go语言实现的开源容器项目。

可以将Docker容器理解为一种轻量级的沙盒(sandbox)。

每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。

容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。

很多时候,甚至直接把容器当作应用本身也没有任何问题。

随着Docker技术的进一步成熟,它将成为更受欢迎的容器虚拟化技术实现,并在云计算和DevOps等领域得到更广泛的应用。

1.2 为什么要使用Docker?

  1. Docker容器虚拟化的好处
    Docker在正确的地点、正确的时间顺应了正确的趋势——如何正确地构建应用。

在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制;同时必须是“任何时间任何地点”可获取的。因此,开发者们需要一种新型的创建分布式应用程序的方式,快速分发和部署,而这正是Docker所能够提供的最大优势。

举个反例,假设用户基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来构建网站。
按照传统的做法,首先需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意味着更多的时间代价和不可控的风险。
可以想象,如果应用数目变多,事情会变得更加难以处理。
更为可怕的是,一旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个应用都进行重新部署和调试。
这些琐碎而无趣的“体力活”,极大地降低了用户的工作效率。
究其根源,
是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。
而Docker提供了一种更为聪明的方式,通过容器来打包应用、解耦应用和运行平台。
这意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。
这无疑将帮助我们节约大量的宝贵时间,并降低部署过程出现问题的风险。

  1. Docker在开发和运维中的优势
Docker的优势 描述
更快速的交付和部署 使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,节约开发、测试、部署的大量时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。
更高效的资源利用 运行Docker容器不需要额外的虚拟化管理程序(Virtual MachineManager, VMM,以及Hypervisor)的支持,Docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。与传统虚拟机方式相比,Docker的性能要提高1~2个数量级。
更轻松的迁移和扩展 Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
更简单的更新管理 使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。
  1. Docker与虚拟机比较
    在这里插入图片描述

1.3 Docker与虚拟化

虚拟化(virtualization)技术是一个通用的概念,在不同领域有不同的理解。
在计算领域,一般指的是计算虚拟化(computing virtualization),或通常说的服务器虚拟化。
维基百科上的定义如下:
“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”

可见,虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。

Docker以及其他容器技术都属于操作系统虚拟化这个范畴,操作系统虚拟化最大的特点就是不需要额外的supervisor支持。Docker虚拟化方式之所以有众多优势,跟操作系统虚拟化技术自身的设计和实现是分不开的。

传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。
在这里插入图片描述

1.4 小结

本关介绍了容器虚拟化的基本概念、Docker的简述,以及容器在云时代应用分发场景下的巨大优势。
与传统的虚拟机方式相比,容器虚拟化方式在很多场景下都存在极为明显的优势。
无论是系统管理员、应用开发人员、测试人员,还是运维管理人员,都应该尽快掌握Docker,尽早享受其带来的巨大便利。

发布了511 篇原创文章 · 获赞 822 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/104515780