内容简介
本书由Docker 公司前服务与支持副总裁James Turnbull 编写,是的Docker 开发指南。本书会指导读者完成Docker 的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解Docker 适用于什么场景。书中先介绍Docker 及其组件的基础知识,然后用Docker 构建容器和服务来完成各种任务:利用Docker 为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker 的API,如何扩展Docker。
本书适合对Docker 或容器开发感兴趣的系统管理员、运维人员和开发人员阅读。
目录
第1 章 简介
1.1 Docker 简介
1.1.1 提供一个简单、轻量的建模方式
1.1.2 职责的逻辑分离
1.1.3 快速、的开发生命周期
1.1.4 鼓励使用面向服务的架构
1.2 Docker 组件
1.2.1 Docker 客户端和服务器
1.2.2 Docker 镜像
1.2.3 Registry
1.2.4 容器
1.3 我们能用Docker 做什么
1.4 Docker 与配置管理
1.5 Docker 的技术组件
1.6 本书的内容
1.7 Docker 资源
第2 章 安装Docker
2.1 安装Docker 的先决条件
2.2 在Ubuntu 中安装Docker
2.2.1 检查前提条件
2.2.2 安装Docker
2.2.3 Docker 与UFW
2.3 在Red Hat 和Red Hat 系发行版中安装Docker
2.3.1 检查前提条件
2.3.2 安装Docker
2.3.3 在Red Hat 系发行版中启动Docker 守护进程
2.4 在OS X 中安装Boot2Docker
2.4.1 在OS X 中安装Boot2Docker
2.4.2 在OS X 中启动Boot2Docker
2.4.3 测试Boot2Docker
2.5 在Windows 中安装Boot2Docker
2.5.1 在Windows 中安装Boot2Docker
2.5.2 在Windows 中启动Boot2Docker
2.5.3 测试Boot2Docker
2.6 使用本书的Boot2Docker 示例
2.7 Docker 安装脚本
2.8 二进制安装
2.9 Docker 守护进程
2.9.1 配置Docker 守护进程
2.9.2 检查Docker 守护进程是否正在运行
2.10 升级Docker
2.11 Docker 图形用户界面
2.12 小结
第3 章 Docker 入门
3.1 确保Docker 已经就绪
3.2 运行我们的第一个容器
3.3 使用第一个容器
3.4 容器命名
3.5 重新启动已经停止的容器
3.6 附着到容器上
3.7 创建守护式容器
3.8 容器内部都在干些什么
3.9 查看容器内的进程
3.10 在容器内部运行进程
3.11 停止守护式容器
3.12 自动重启容器
3.13 深入容器
3.14 删除容器
3.15 小结
第4 章 使用Docker 镜像和仓库
4.1 什么是Docker 镜像
4.2 列出镜像
4.3 拉取镜像
4.4 查找镜像
4.5 构建镜像
4.5.1 创建Docker Hub 账号
4.5.2 用Docker 的commit 命令创建镜像
4.5.3 用Dockerfile构建镜像
4.5.4 基于Dockerfile构建新镜像
4.5.5 指令失败时会怎样
4.5.6 Dockerfile 和构建缓存
4.5.7 基于构建缓存的Dockerfile模板
4.5.8 查看新镜像
4.5.9 从新镜像启动容器
4.5.10 Dockerfile 指令
4.6 将镜像推送到Docker Hub
4.7 删除镜像
4.8 运行自己的Docker Registry
4.8.1 从容器运行Registry
4.8.2 测试新Registry
4.9 其他可选Registry 服务
4.10 小结
第5 章 在测试中使用Docker
5.1 使用Docker 测试静态网站
5.1.1 Sample 网站的初始Dockerfile
5.1.2 构建Sample 网站和Nginx镜像
5.1.3 从Sample 网站和Nginx 镜像构建容器
5.1.4 修改网站
5.2 使用Docker 构建并测试Web应用程序
5.2.1 构建Sinatra 应用程序
5.2.2 创建Sinatra 容器
5.2.3 构建Redis 镜像和容器
5.2.4 连接到Redis 容器
5.2.5 连接Redis
5.2.6 让Docker 容器互连
5.2.7 使用容器连接来通信
5.3 Docker 用于持续集成
5.3.1 构建Jenkins 和Docker服务器
5.3.2 创建新的Jenkins 作业
5.3.3 运行Jenkins 作业
5.3.4 与Jenkins 作业有关的下一步
5.3.5 Jenkins 设置小结
5.4 多配置的Jenkins
5.4.1 创建多配置作业
5.4.2 测试多配置作业
5.4
摘要与插图
DevOps未死,ContainerOps已到发现Docker项目还是2013年中,我正在为构架一个Micro Service的游戏云而测试各种PaaS平台和产品。研究CloudFoundry的过程中,被Warden子项目吸引,转而在GitHub中寻找类似的、更容易使用和部署的容器虚拟化解决方案,一个Linux Container的框架Docker成为我的选。2013年底在深圳举行的ECUG Con(实效云时效用户组大会)是我第一次在大型的技术会议上宣讲Docker开源技术,此时它已经被Golang社区评为2013年的十大杀手级应用,也是这次会议我开始了Docker技术布道之旅。从LXC的框架到Container引擎,再到如今的SaaS平台,Docker在开源社区的强大推动下快速向前演进,ContainerOps平台或是Docker的下一个里程碑。
对Docker研究得越多,就越容易被它在网络、安全方面的各种问题所困扰,忘却了Docker使用Union FileSystem技术带来的巨大技术变革的机会。当超越容器虚拟化引擎的标签去看Docker时,发现它是实现Application版本管理的技术选择。比起从源代码的某个分支或标签起够建Application的版本,Union FileSystem更适于实现从开发到运维的版本管理。随着OverlayFS被Linux内核3.18合并到主干,Docker也会在的版本中支持它(也许在你读这本书的时候就已经支持了)。不管是AUFS还是OverlayFS将摆脱被认为是嵌入式设备的文件格式,成为应用版本管理的技术基石。
在一次技术布道之后,有听众和我交流如何使用Gnome Desktop的Docker容器为团队提供标准的Android开发环境。正值Docker在刚刚发布的1.2版本中加入了Device特性,我建议他可以使用这个特性为Desktop加入真机的调试功能。此时我才意识到开发环境甚至是桌面环境是可以通过Docker容器来实现统一的。当微软公司和Docker深度合作的新闻震惊所有人时,才发现微软早在多年前就布局容器虚拟化的技术。Windows成为一个(FreeBSD有容器引擎Jails,Solaris有容器引擎Zones)能运行容器的主流操作系统。Windows操作系统可以通过容器化技术运行多个Windows的容器,Docker引擎也终于有了打通所有平台的机会。不管是Linux还是Windows,开发环境都可以被容器管理起来,开发配置管理将会变得简单。
当软件的开发环境、版本管理、交付和运行都以Docker为工具Container为基础进行流转时,就构成了以Container为核心的开发和运维流程,软件的构架也因此发生改变(Micro Service的构架方式可能会因此流行)。但持续集成、持续部署和自动化运维等生产理念没有改变,只是增加了Container的解决方案,未来必定会有基于Docker的平台来管理整个开发和生产的流程。
DevOps未死,ContainerOps已到。
在此感谢三位译者李兆海、刘斌和巨震的辛苦工作,把第一本Docker技术书籍带入中国。这不仅是一本Docker技术的入门书籍,也介绍了很多Docker的实践,是学习Docker的选择。尽管没有参与此书的翻译,甚为遗憾;不过我会继续努力在国内推广Docker开源技术。
马全一
Docker 中文社区和 docker.cn 项目创始人,Docker 开源技术布道师,构架师
……