Docker技术入门与实战(第2版)1.2 为什么要使用Docker

1.2 为什么要使用Docker

1.?Docker容器虚拟化的好处

Docker项目的发起人和Docker公司CTO Solomon Hykes曾认为,Docker在正确的地点、正确的时间顺应了正确的趋势——如何正确地构建应用。

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

举个简单的例子,假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来构建一个网站。按照传统的做法,首先,需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意味着更多的时间代价和不可控的风险。可以想象,如果应用数目变多,事情会变得更加难以处理。

更为可怕的是,一旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个应用都进行重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。

而Docker提供了一种更为聪明的方式,通过容器来打包应用,解耦应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。

2.?Docker在开发和运维中的优势

对开发和运维(DevOps)人员来说,可能最梦寐以求的效果就是一次创建或配置,之后可以在任意地方、任意时间让应用正常运行。而Docker恰恰是可以实现这一终极目标的“瑞士军刀”。

具体说来,Docker在开发和运维过程中,具有如下几个方面的优势:

更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同环境来部署代码。只要开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。

更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。跟传统虚拟机方式相比,要提高一到两个数量级。

更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。

更简单的更新管理。使用Dockerf?ile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。

3.?Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上与传统的虚拟机方式相比具有显著优势:

Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。

Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例)。

Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。

Docker通过Dockerf?ile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。

Docker容器除了运行其中应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。

当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工具。从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。

表1-1总结了使用Docker容器技术与传统虚拟机技术的特性比较,可见容器技术在很多应用场景下都具有巨大的优势。

表1-1 Docker容器技术与传统虚拟机技术的特性比较

特  性 容  器 虚拟机

启动速度 秒级 分钟级

性能 接近原生 较弱

内存代价 很小 较多

硬盘使用 一般为MB 一般为GB

运行密度 单机支持上千个容器 一般几十个

隔离性 安全隔离 完全隔离

迁移性 优秀 一般

 

时间: 2024-10-17 23:30:27

Docker技术入门与实战(第2版)1.2 为什么要使用Docker的相关文章

Docker技术入门与实战(第2版).

容器技术系列 Docker技术入门与实战 第2版 杨保华 戴王剑 曹亚仑 编著 图书在版编目(CIP)数据 Docker技术入门与实战 / 杨保华,戴王剑,曹亚仑编著. -2版. -北京:机械工业出版社,2017.1 (容器技术系列) ISBN 978-7-111-55582-7 I. D- II. ①杨- ②戴- ③曹- III. Linux操作系统-程序设计 IV. TP316.85 中国版本图书馆CIP数据核字(2016)第308604号 本书从Docker基本原理开始,深入浅出地讲解Do

赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 (作者) http://www.amazon.cn/Docker技术入门与实战-杨保华-戴王剑-曹亚仑/dp/B00SMJ0VFA/ref=sr_1_2?s=digital-text&ie=UTF8&qid=1435217727&sr=1-2&keywords=docker

Docker技术入门与实战(第2版)导读

前言 在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦.而在一台服务器上同时运行一千个Docker容器,这已经成为现实.在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实. 多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷--为了解决这些问题,开源社区推出过不少优秀的工具.这些方案虽然在某些程度上确能解决部分"燃眉之急",但是始终没有一种方案能带来&

Docker技术入门与实战(第2版)2.1 核心概念

核心概念与安装配置 本章首先介绍Docker的三大核心概念. 镜像(Image) 容器(Container) 仓库(Repository) 只有理解了这三个核心概念,才能顺利地理解Docker容器的整个生命周期. 随后,笔者将介绍如何在常见的操作系统平台上安装Docker,包括Ubuntu.CentOS.MacOS和Windows等主流操作系统平台. 2.1 核心概念 Docker的大部分操作都围绕着它的三大核心概念--镜像.容器和仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术

Docker技术入门与实战(第2版)2.2 安装Docker

2.2 安装Docker Docker在主流的操作系统和云平台上都可以使用,包括Linux操作系统(如Ubuntu.Debian.CentOS.Redhat等).MacOS操作系统和Windows操作系统,以及AWS等云平台. 用户可以访问Docker官网的Get Docker(https://www.docker.com/products/overview)页面,查看获取Docker的方式,以及Docker支持的平台类型,如图2-2所示.   图2-2 获取Docker 在Get Docker

Docker技术入门与实战(第2版)1.1 什么是Docker

初识容器与Docker 如果说主机时代大家比拼的是单个服务器物理性能(如CPU主频和内存),那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力. 伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中.从20世纪60年代IBM推出的大型主机虚拟化,到后来以Xen.KVM为代表的虚拟机虚拟化,再到现在以Docker为代表的容器技术,虚拟化技术自身也在不断进行创新和突破. 传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则更为优雅,它充分利用

Docker技术入门与实战(第2版)3.1 获取镜像

使用Docker镜像 镜像(image)是Docker三大核心概念中最为重要的,自Docker诞生之日起"镜像"就是相关社区最为热门的关键词. Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库. 本章将介绍围绕镜像这一核心概念的具体操作,包括如何使用pull命令从Docker Hub仓库中下载镜像到本地,如何查看本地已有的镜像信息和管

Docker技术入门与实战(第2版)2.3 配置Docker服务

2.3 配置Docker服务 为了避免每次使用docker命令都要用特权身份,可以将当前用户加入安装中自动创建的docker用户组: $ sudo usermod -aG docker USER_NAME 用户更新组信息后,退出并重新登录后即可生效. 另外,Docker服务支持多种启动参数.以Ubuntu 14.04系统为例,Docker服务的默认配置文件为/etc/default/docker,可以通过修改其中的DOCKER_OPTS来修改服务启动的参数,例如,下一行代码让Docker服务可以

Docker技术入门与实战(第2版)3.4 删除镜像

3.4 删除镜像 1.?使用标签删除镜像 使用docker rmi命令可以删除镜像,命令格式为docker rmi IMAGE [IMAGE...],其中IMAGE可以为标签或ID. 例如,要删除掉myubuntu:latest镜像,可以使用如下命令: $ docker rmi myubuntu:latest Untagged: myubuntu:latest 读者可能会担心,本地的ubuntu:latest镜像是否会受此命令的影响.无需担心,当同一个镜像拥有多个标签的时候,docker rmi

Docker技术入门与实战(第2版)3.7 上传镜像

3.7 上传镜像 可以使用docker push命令上传镜像到仓库,默认上传到Docker Hub官方仓库(需要登录).命令格式为: docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG] 用户在Docker Hub网站注册后可以上传自制的镜像.例如用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker push命令上传镜像: $ docker tag