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

简介:

初识容器与Docker

如果说主机时代大家比拼的是单个服务器物理性能(如CPU主频和内存),那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力。

伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中。从20世纪60年代IBM推出的大型主机虚拟化,到后来以Xen、KVM为代表的虚拟机虚拟化,再到现在以Docker为代表的容器技术,虚拟化技术自身也在不断进行创新和突破。

传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。因此,有人甚至把它称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切地称为“容器云”。

Docker毫无疑问正是众多容器技术中的佼佼者,是容器技术发展过程中耀眼的一抹亮色。那么,什么是Docker?它会带来哪些好处?它跟现有虚拟化技术又有何关系?

本章首先会介绍Docker项目的起源和发展过程,之后会为大家剖析Docker和相关容器技术,以及它在DevOps等场景带来的巨大便利。最后,还将阐述Docker在整个虚拟化领域中的技术定位。


1.1 什么是Docker


1.?Docker开源项目背景

Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发起者是dotCloud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目(包括Docker三剑客、Kubernetes等),逐渐形成了围绕Docker容器的生态体系。

由于Docker在业界造成的影响力实在太大,dotCloud公司后来也直接改名为Docker Inc,并专注于Docker相关技术和产品的开发。

 

图1-1 Docker官方网站

Docker项目已加入了Linux基金会,并遵循Apache2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。在Linux基金会最近一次关于“最受欢迎的云计算开源项目”的调查中,Docker仅次于2010年发起的OpenStack项目,并仍处于上升趋势。

现在主流的Linux操作系统都已经支持Docker。例如,红帽公司的RHEL 6.5/CentOS 6.5往上的操作系统、Ubuntu 14.04往上的操作系统,都已经在软件源中默认带有Docker软件包。Google公司宣称在其PaaS(Platform as a Service)平台及服务产品中广泛应用了Docker容器。IBM公司跟Docker公司达成了战略合作伙伴关系。微软公司在其云平台Azure上加强了对Docker的支持。公有云提供商亚马逊也推出了AWS EC2 Container服务,提供对Docker和容器业务的支持。

Docker的构想是要实现“Build, Ship and Run Any App, Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。

基于Linux平台上的多项开源技术,Docker提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云平台。可以说,Docker首次为应用的开发、运行和部署提供了“一站式”的实用解决方案。

2.?Linux容器技术——巨人的肩膀

跟大部分新兴技术的诞生一样,Docker也并非“从石头缝里蹦出来的”,而是站在前人的肩膀上,其中最重要的就是Linux容器(Linux Containers,LXC)技术。

IBM DeveloperWorks网站关于容器技术的描述十分准确:“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。”

当然,LXC也经历了长期的演化。最早的容器技术可以追溯到1982年Unix系列操作系统上的chroot工具(直到今天,主流的Unix、Linux操作系统仍然支持和带有该工具)。早期的容器实现技术包括Sun Solaris操作系统上的Solaris Containers(2004年发布),FreeBSD操作系统上的FreeBSD jail(2000年左右出现),以及GNU/Linux上的Linux-VServer和OpenVZ。

在LXC之前,这些相关技术经过多年的演化已经十分成熟和稳定,但是由于种种原因,它们并没有被很好地集成到主流的Linux内核中,用户使用起来并不方便。例如,如果用户要使用OpenVZ技术,需要先手动给操作系统打上特定的内核补丁方可使用,而且不同版本并不一致。类似的困难造成在很长一段时间内,这些优秀的技术只流传于技术人员的小圈子中。

后来LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新引入的内核特性,实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC终于被集成到了主流Linux内核中,进而成为了Linux系统轻量级容器技术的事实标准。从技术层面来看,LXC已经趟过了绝大部分的“坑”,完成了容器技术实用化的大半历程。

3.?从Linux容器到Docker

在LXC的基础上,Docker进一步优化了容器的使用体验,让它进入了寻常百姓家。

首先,Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以更简单明了地管理和使用容器;其次,Docker通过引入分层文件系统构建和高效的镜像机制,降低了迁移难度,极大地提升了用户体验。用户操作Docker容器就像操作应用自身一样简单。

早期的Docker代码实现是直接基于LXC的。自0.9版本开始,Docker开发了libcontainer项目,作为更广泛的容器驱动实现,从而替换掉了LXC的实现。目前,Docker还积极推动成立了runC标准项目,试图让容器支持不再局限于Linux操作系统,而是更安全、更具扩展性。

简单地讲,读者可以将Docker容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止都十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。

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

相关文章
|
19小时前
|
存储 缓存 监控
【Docker 专栏】Docker 容器性能调优实战
【5月更文挑战第8天】本文探讨了Docker容器的性能调优技巧,包括理解容器性能指标(如CPU、内存、网络和磁盘I/O)并进行相应调优。重点讲述了CPU和内存的限制设置,网络配置优化以及磁盘I/O性能提升方法。通过实例展示了如何解决高CPU使用率问题,强调了根据应用需求进行调优的重要性,以实现更高效、稳定的容器运行。
【Docker 专栏】Docker 容器性能调优实战
|
1天前
|
前端开发 API 数据库
【Docker专栏】Docker Compose实战:编排多容器应用
【5月更文挑战第7天】Docker Compose是Docker的多容器管理工具,通过YAML文件简化多容器应用部署。它能一键启动、停止服务,保证开发、测试和生产环境的一致性。安装后,创建`docker-compose.yml`文件定义服务,如示例中的web和db服务。使用`docker-compose up -d`启动服务,通过`docker-compose ps`、`stop`、`down`和`logs`命令管理服务。
【Docker专栏】Docker Compose实战:编排多容器应用
|
1天前
|
应用服务中间件 持续交付 nginx
【Docker专栏】Docker入门指南:快速构建你的第一个容器
【5月更文挑战第7天】Docker 入门指南:容器化应用利器。了解 Docker 核心概念——镜像、容器和仓库。安装 Docker 后,运行官方 `hello-world` 验证安装,再尝试运行 `nginx` Web 服务器。通过端口映射访问容器内服务,学习管理容器命令。创建自定义镜像,编写 Dockerfile,实现 Python Web 应用容器化。Docker 助力高效开发与运维,探索更多自动化部署与微服务场景。
【Docker专栏】Docker入门指南:快速构建你的第一个容器
|
1天前
|
运维 Linux Docker
Docker详解(十一)——Docker容器CPU资源限额实战Docker详解
Docker详解(十一)——Docker容器CPU资源限额实战
17 5
|
3天前
|
Docker 容器
电子好书发您分享《4天实战 轻松玩转docker4天实战 轻松玩转docker》
📚 《4天实战:轻松玩转Docker》电子书分享🚀。通过4天的学习,快速掌握Docker容器技术。阿里云链接:[阅读全书](https://developer.aliyun.com/ebook/7445/20547?spm=a2c6h.26392459.ebook-detail.4.73e72e17w6wZGj)。书中包含丰富实例和图片,助你轻松上手!PNG图像示意。
23 2
|
9天前
|
安全 Linux 数据库
Docker 入门详解
通过遵循这些步骤,你将能够快速入门 Docker 并开始探索容器化的世界,关注 V 哥,技术之路一起成长。
|
9天前
|
存储 虚拟化 数据中心
|
11天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
13天前
|
存储 Apache Swift
无限套娃_docker入门(镜像、容器、仓库)
无限套娃_docker入门(镜像、容器、仓库)
27 0
|
13天前
|
Linux 虚拟化 Docker
docker入门
docker入门
20 2