前言
Docker这一容器化技术目前正处于新浪潮的中心,这一浪潮波及了应用的构建、打包和部署。它有可能影响计算机技术的方方面面,从应用程序的开发流程到应用程序如何部署以及跨大规模数据中心进行垂直和水平扩展。
尽管Docker非常流行,但它依然是一个非常新的项目,许多人并没有真正理解什么是Docker。如果你也是其中一员,那么本书会帮你迈出第一步,并让你见识到容器化所承诺的巨大潜力。我的目标是通过本书引领你进入容器化的世界,这些目标可以概括为以下几种方式。
通过实践来学习:我常在自己的书中提及这一点,我相信学习技术最好的方式就是获取并使用它。为了做到这一点,我让你从几种流行的Linux系统中进行选择,并介绍如何在所选的系统上安装Docker,而且还给出使用Docker做各种事情的实际例子——从运行简单的容器到构建和管理自己的容器镜像。之后学习会延伸至编排和管理容器的工具和技术。
如何通过Docker受益:我描述了在容器中创建和运行应用程序的好处,而不是安装软件包(如RPM或者Deb格式)并直接从硬盘上运行非容器化的应用程序。除了运行应用程序,我还描述了容器化如何为软件开发人员和系统管理人员带来益处。
Docker的本质特性:我描述了Docker如何利用诸如Linux容器(LXC)技术保持容器与宿主机上运行的其他应用程序隔离或者如何有选择性地介入宿主机系统。这些特性包括Docker如何使用命名空间、元数据以及独立的文件系统来管理容器化应用并保证其安全。
阅读本书并不需要读者了解Docker或者容器化方面的知识,读者可以将本书作为Docker的入门书。当然,本书也探讨了更高级的Docker话题,如编排和容器的开发。
随着阅读的深入,读者将看到运行、调查、停止和启动、保存以及管理容器的具体方法。开始创建容器时,我讨论了一些技巧,这些技巧将有助于读者创建高效地构建和运行的容器镜像。我还将带读者逐步研究其他人为了生成自己的容器而创建的构建文件(其被称为Dockerfile)。
阅读本书大体上并不需要Linux容器,或者Docker容器的知识。不过,话虽如此,有些技术在Docker容器内部和外部都会用到,了解其中的一些会有助于更加得心应手地使用Docker。
了解一些Docker运行环境的知识有助于更好地使用Docker容器。Docker构建在Linux技术之上,并与特定的高级特性相结合,包括用于管理Linux命名空间的Linux容器(LXC),以及用于管理容器对系统资源(如CPU和内存)的访问的Cgroups。
即使是与Docker容器最基本的交互,也依赖于底层的Linux技术。你可能听说过Docker可以运行在Windows或者Mac系统之上,但在这些系统上运行Docker始终依赖Linux虚拟机。换句话说,没有Linux就没有Docker容器。同样,每个容器自身通常都是从基础镜像构建的,而这个基础镜像又是从特定的Linux发行版创建的。
因此,如果没有Linux系统的使用经验,你会发现,了解Linux的如下方面及相关技术会很有用。
目录
[第一部分 开启容器之旅
第1章 使用Docker对应用进行容器化
1.1 了解容器化应用的优缺点
1.1.1 容器化应用不是直接在宿主机上运行的应用
1.1.2 容器化应用不是直接在虚拟机上运行的应用
1.1.3 了解容器的优点
1.1.4 了解容器化应用面临的挑战
1.2 了解容器的组成
1.2.1 Docker项目
1.2.2 Docker Hub Registry
1.2.3 Docker镜像和容器
1.2.4 docker命令
1.3 探究容器
1.4 小结
[第2章 搭建容器运行时环境
2.1 标准Linux系统的Docker配置
2.1.1 Ubuntu的Docker配置
2.1.2 Fedora的Docker配置
2.1.3 Red Hat Enterprise Linux的Docker配置
2.1.4 其他操作系统的Docker配置
2.2 容器式Linux系统的Docker配置
2.2.1 Atomic Host的Docker配置
2.2.2 CoreOS的Docker配置
2.3 小结