《第一本Docker书(修订版)》——第1章 简介 1.1Docker简介

第1章 简介

在计算世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化(hypervisor virtualization,HV)有所不同,管理程序虚拟化通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。

由于“客居”于操作系统,容器只能运行与底层宿主机相同或相似的操作系统,这看起来并不是非常灵活。例如,可以在Ubuntu服务器中运行RedHat Enterprise Linux,但却无法在Ubuntu服务器上运行Microsoft Windows。

相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认为,由于虚拟机所虚拟的是一个完整的操作系统,这无疑增大了攻击范围,而且还要考虑管理程序层潜在的暴露风险。

尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中,容器技术非常流行。最常见的一个例子就是“权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进程。如果权限隔离监牢中正在运行的进程被入侵者攻破,入侵者便会发现自己“身陷囹圄”,因为权限不足被困在容器创建的目录中,无法对宿主机进行进一步的破坏。

最新的容器技术引入了OpenVZ、Solaris Zones以及Linux容器(如lxc)。使用这些新技术,容器不再仅仅是一个单纯的运行环境。在自己的权限范围内,容器更像是一个完整的宿主机。对Docker来说,它得益于现代Linux内核特性,如控件组(control group)、命名空间(namespace)技术,容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好地共存。

容器经常被认为是精益技术,因为容器需要的开销有限。和传统的虚拟化以及半虚拟化(paravirtualization)相比,容器运行不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。

尽管有着光辉的历史,容器仍未得到广泛的认可。一个很重要的原因就是容器技术的复杂性:容器本身就比较复杂,不易安装,管理和自动化也很困难。而Docker就是为改变这一切而生。

1.1 Docker简介

Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由Docker公司(www.docker.com,前dotCloud公司,PaaS市场中的老牌提供商)的团队编写,基于Apache 2.0开源授权协议发行。
那么Docker有什么特别之处呢?Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker极其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限的宿主机。而Docker的目标就是要提供以下这些东西。

1.1.1 提供一个简单、轻量的建模方式
Docker上手非常快,用户只需要几分钟,就可以把自己的程序“Docker化”(Dockerize)。Docker依赖于“写时复制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到了“随心所至,代码即改”的境界。

随后,就可以创建容器来运行应用程序了。大多数Docker容器只需不到1秒钟即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户可以尽可能充分地利用系统资源。

1.1.2 职责的逻辑分离
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境的一致性,从而降低那种“开发时一切都正常,肯定是运维的问题”的风险。

1.1.3 快速、高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。

1.1.4 鼓励使用面向服务的架构
Docker还鼓励面向服务的架构和微服务架构[1]。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。

注意
如果你愿意,当然不必拘泥于这种模式,你可以轻松地在一个容器内运行多个进程的应用程序。

时间: 2024-09-11 13:04:39

《第一本Docker书(修订版)》——第1章 简介 1.1Docker简介的相关文章

《第一本Docker书(修订版)》——第2章 安装Docker 2.1安装Docker的先决条件

第2章 安装Docker Docker的安装既快又简单.目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux).除此之外,Docker还支持Debian.CentOS.Fedora.Oracle Linux等衍生系统和相关的发行版.如果使用虚拟环境,甚至也可以在OS X和Microsoft Windows中运行Docker. 目前来讲,Docker团队推荐在Ubuntu.Debian或者RH

《第一本Docker书(修订版)》——导读

** 前言 **Scott Collier是一位高级主任系统工程师,就职于Red Hat的系统设计及工程团队.该团队根据从销售.市场以及工程团队收集到的数据,甄别并提供高价值的解决方案,并为内外部用户开发参考架构.Scott是Red Hat认证构架师(RHCA),具有超过15年的IT从业经验,他现在专注于Docker.OpenShift以及Red Hat系列产品.John是一位连续创业者,同时也是高可用性.可扩展性基础设备专家.John现在在自己创建的Bulletproof公司担任CTO,这是一

《第一本Docker书(修订版)》——2.9 Docker守护进程

2.9 Docker守护进程 安装完Docker后,需要确认Docker的守护进程是否运行.Docker以root权限运行它的守护进程,来处理普通用户无法完成的操作(如挂载文件系统).docker程序是Docker守护进程的客户端程序,同样也需要以root身份运行.用户可以使用docker daemon命令控制Docker守护进程. 注意 在Docker 1.8之前,Docker守护进程是通过-d标志来控制的,而没有docker daemon子命令. 当Docker软件包安装完毕后,默认会立即启

《第一本Docker书(修订版)》——2.5 在Windows中安装Docker Toolbox

2.5 在Windows中安装Docker Toolbox 如果使用的是Microsoft Windows系统,也可以使用Docker Toolbox工具快速上手Docker.Docker Toolbox是一个Docker组件的集合,还包括一个极小的虚拟机,在Windows宿主机上安装了一个支持命令行工具,并提供了一个Docker环境. Docker Toolbox自带了很多组件,包括: VirtualBox:Docker客户端:Docker Compose(参见第7章):Kitematic--

《第一本Docker书(修订版)》——2.4 在OS X中安装Docker Toolbox

2.4 在OS X中安装Docker Toolbox 如果使用的是OS X系统,则可以使用Docker Toolbox[23]快速上手Docker.Docker Toolbox是一个Docker组件的集合,还包括一个极小的虚拟机,在OS X宿主机上会安装与之对应的命令行工具,并提供了一个Docker环境. Docker Toolbox自带了很多组件,包括: VirtualBox:Docker客户端:Docker Compose(参见第7章):Kitematic--一个 Docker和Docker

《第一本Docker书(修订版)》——1.2 Docker组件

1.2 Docker组件 我们来看看Docker的核心组件: Docker客户端和服务器,也称为Docker引擎:Docker镜像:Registry:Docker容器.1.2.1 Docker客户端和服务器Docker是一个客户端/服务器(C/S)架构的程序.Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果.Docker守护进程有时也称为Docker引擎.Docker提供了一个命令行工具docker以及一整套RESTful API[2]来与守

《第一本Docker书(修订版)》——2.12 小结

2.12 小结 在本章向大家介绍了在各种平台上安装Docker的方法,还介绍了如何管理Docker守护进程. 在下一章中,我们将开始正式使用Docker.我们将从容器的基础知识开始,介绍基本的Docker操作.如果读者已经安装好了Docker,并做好了准备,那么请翻到第3章吧.

《第一本Docker书(修订版)》——2.6 使用本书的Docker Toolbox示例

2.6 使用本书的Docker Toolbox示例 本书中的一些示例可能会要求通过网络接口或网络端口连接到某个容器,通常这个地址是Docker服务器的localhost或IP地址.因为Docker Toolbox创建了一个本地虚拟机,它拥有自己的网络接口和IP地址,所以我们需要连接的是Docker Toolbox的地址,而不是你的localhost或你的宿主机的IP地址. 要想得到Docker Toolbox的IP地址,可以查看DOCKER_HOST环境变量的值.当在OS X或者Windows上

《第一本Docker书(修订版)》——1.7 Docker资源

1.7 Docker资源 Docker官方主页(http://www.docker.com/).Docker Hub(http://hub.docker.com).Docker官方博客(http://blog.docker.com/).Docker官方文档(http://docs.docker.com/).Docker快速入门指南(http://www.docker.com/tryit/).Docker的GitHub源代码(https://github.com/docker/docker).Do