本节书摘来自异步社区《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》一书中的第1章,第1.3节,作者: 【美】Christopher Negus(克里斯托弗•尼格斯)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.3 探究容器
由于围绕Docker和容器的开发节奏很快,现在任何书籍所能做的最好的就是将你带到一条正确的路上。本书中,这就意味着一开始会给出一套靠谱示例来说明当前Docker和精选的一组支持工具是如何工作的。之后,这条大路就会展示位于地平线上的新特性和新工具。
无论你是想使用和管理容器,还是担负容器开发的任务,本书会让你以所有人都需要的一些事情起步,包括以下几项。
搭建Docker:许多完整的Linux系统和一些面向容器的特定Linux系统上都可以使用Docker。因此,本书开始部分的说明会帮你选择一个或多个这样的系统并展示如何启动Docker服务。
搭建Docker registry:Docker把容器镜像保存在registry中并使镜像可以被拉取(下载)到运行Docker的系统中。因此,你可以学习如何创建自己的私有Docker registry并用它保存自己的容器镜像。
如果你想要使用和管理容器,我会为你介绍不同的方法来使用:
普通的单个容器;
一组容器(使用Kubernetes和其他工具来管理它们)。
无论你是创建容器化应用还是只运行容器化应用,它都有助于理解将底层操作系统特性提供给容器的方法。你应该了解的用来支持容器的操作系统的辅助特性包括以下几个。
宿主机权限:设计上限制了容器可以操纵宿主机的范围。开放宿主机权限能让容器直接访问宿主机系统的特性,如宿主机的进程表、设备、特定的CPU以及IPC命名空间。本书稍后会用Fedora Atomic Host演示那些专为访问和修改宿主机系统而设计的容器(被称为超级特权容器)。
存储:你可以在Docker容器中使用挂载来连接宿主机的存储空间,而不是将数据保存在容器中。
网络:有特殊的规则和选项来从容器内管理宿主机的网络接口。
作为软件开发人员,容器既限制了你也让你得以自由。你有能力确保你的应用程序的所有文件都以一种立即可以运行的形式与容器打包在一起。但新的挑战浮现出来,这些挑战要求你重新思考应对下列事项的开发方式。
高效地处理容器层;
通过测试、开发和生产阶段指引软件增强;
在多个容器间划分服务;
在运行时环境中部署、启动和停止容器;
处理你的应用程序所需要的宿主机系统的辅助服务。
Docker有许多强大的特性并且当前可以很好地构建和运行单个容器。但Docker周围的世界并非停滞不前。甚至此时,数以百计的人们每天都在努力扩展用Docker所能完成的工作。
相当数量的工具即将出现,用以支持企业级容器的开发和部署。同样地,人们在不断地创造聪明的容器,并将这些容器以及用于构建这些容器的Dockerfile提供给想要使用和扩展它们的人。为了帮你采取超出本书范围的下一步措施,最后两章描述了以下内容。
更多容器化工具:如此众多的工具被开发出来使用Docker容器,以至于很难搞清全部这些工具。这一章描述了那些你将很快就能用于Docker容器的新兴工具。
容器镜像的示例:为了说明人们使用Docker的创造性方式,我用了整整一章来展示那些已经开放出来让你尝试的很酷的容器。
紧跟着最后一章专门用来帮你评估哪些现存的和即将推出的工具在你力图使用容器扩展自己的道路时对你最为有用。它梳理了当今这些工具能够帮你做什么,以及它们正如何发展以便明天为你服务。