更多书籍文章点击进入>> CiCi岛php
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍html
对于应用程序,不管是在私有云部署仍是在公有云部署,本书都列出了丰富实用的解决方案和示例。 git
即便不具有Docker相关知识,基于书中实用的解决方案,开发人员也能在阅读几章以后打包和部署分布式应用程序。若是你是一位运维人员,你将很快掌握如何使用Docker来改善本身的工做方式。若是你是一位IT专业人士,你将可以学习到如何解决平常问题,好比建立、运行、共享和部署Docker镜像。 github
管理容器、挂载数据卷和容器链接 docker
建立和共享镜像 shell
单主机或多主机的Docker网络 数据库
处理Docker配置与开发等进阶问题 编程
使用Kubernetes在分布式集群中部署多容器的应用程序 安全
使用为Docker优化的新一代操做系统 服务器
学习用于应用程序部署、持续集成、服务发现和编排的工具
在Amazon AWS、Google GCE和Microsoft Azure上使用Docker
监控容器,并探讨不一样的应用程序用例
对于应用程序,不管是在私有云部署仍是在公有云部署,本书都列出了丰富实用的解决方案和示例。
即便不具有Docker相关知识,基于书中实用的解决方案,开发人员也能在阅读几章以后打包和部署分布式应用程序。若是你是一位运维人员,你将很快掌握如何使用Docker来改善本身的工做方式。若是你是一位IT专业人士,你将可以学习到如何解决平常问题,好比建立、运行、共享和部署Docker镜像。
管理容器、挂载数据卷和容器链接
建立和共享镜像
单主机或多主机的Docker网络
处理Docker配置与开发等进阶问题
使用Kubernetes在分布式集群中部署多容器的应用程序
使用为Docker优化的新一代操做系统
学习用于应用程序部署、持续集成、服务发现和编排的工具
在Amazon AWS、Google GCE和Microsoft Azure上使用Docker
监控容器,并探讨不一样的应用程序用例
本书结构明晰,示例丰富详实,是全面实用的Docker入门教程。做者全面介绍了Docker相关各类工具和平台,涵盖网络、镜像管理、配置以及包括Kubernetes和Mesos在内的编排和调度生态系统,对私有云和公有云上部署的应用程序都给出了丰富实用的解决方案和示例。
Sébastien Goasguen,Citrix高级开源解决方案架构师,主要从事Apache CloudStack项目,帮助开发CloudStack生态系统。他目前是Apache CloudStack项目的副总裁,也是Apache libcloud项目管理委员会的成员。 译者简介: 刘斌 具备10余年软件开发经验,关注后台开发技术和各类编程语言。作过电子商务、金融、企业系统以及Android手机开发,写过Delphi,也兼作系统管理员和DBA,最近在作与Docker相关的工做。 我的主页:liubin.org 微信公众号:西小口物语(xxk_talks)
本书赞誉 xi
前言 xiii
第1 章 Docker 入门 1
1.0 简介 1
1.1 在Ubuntu 14.04 上安装Docker 2
1.2 在CentOS 6.5 上安装Docker 3
1.3 在CentOS 7 上安装Docker 4
1.4 使用Vagrant 建立本地Docker 主机 4
1.5 在树莓派上安装Docker 6
1.6 在OS X 上经过Docker Toolbox 安装Docker 7
1.7 在OS X 上经过Boot2Docker 安装Docker 9
1.8 在Windows 8.1 台式机上运行Boot2Docker 13
1.9 使用Docker Machine 在云中建立Docker 主机 14
1.10 使用Docker 实验版二进制文件 18
1.11 在Docker 中运行Hello World 18
1.12 之后台方式运行Docker 容器 20
1.13 建立、启动、中止和移除容器 21
1.14 使用Dockerfile 构建Docker 镜像 22
1.15 在单一容器中使用Supervisor 运行WordPress 24
1.16 使用两个连接在一块儿的容器运行WordPress 博客程序 26
1.17 备份在容器中运行的数据库 28
1.18 在宿主机和容器之间共享数据 30
1.19 在容器之间共享数据 31
1.20 对容器进行数据复制 32
第2 章 建立和共享镜像 34
2.0 简介 34
2.1 将对容器的修改提交到镜像 35
2.2 将镜像和容器保存为tar 文件进行共享 36
2.3 编写你的第一个Dockerfile 37
2.4 将Flask 应用打包到镜像 40
2.5 根据最佳实践优化Dockerfile 42
2.6 经过标签对镜像进行版本管理 43
2.7 使用Docker provider 从Vagrant 迁移到Docker 45
2.8 使用Packer 构建Docker 镜像 47
2.9 将镜像发布到Docker Hub 50
2.10 使用ONBUILD 镜像 53
2.11 运行私有registry 54
2.12 为持续集成/部署在Docker Hub 上配置自动构建 56
2.13 使用Git 钩子和私有registry 创建本地自动构建环境 60
2.14 使用Conduit 进行持续部署 61
第3 章 Docker网络 63
3.0 简介 63
3.1 查看容器的IP地址 64
3.2 将容器端口暴露到主机上 65
3.3 在Docker中进行容器连接 67
3.4 理解Docker容器网络 69
3.5 选择容器网络模式 72
3.6 配置Docker 守护进程iptables 和IP 转发设置 74
3.7 经过Pipework 理解容器网络 75
3.8 定制Docker 网桥设备 80
3.9 在Docker 中使用OVS 81
3.10 在Docker 主机间建立GRE 隧道 83
3.11 在Weave 网络上运行容器 85
3.12 在AWS 上运行Weave 网络 87
3.13 在Docker 主机上部署flannel 覆盖网络 89
3.14 在多台Docker 主机中使用Docker Network 90
3.15 深刻Docker Network 命名空间配置 94
第4 章 开发和配置Docker 96
4.0 简介 96
4.1 管理和配置Docker 守护进程 97
4.2 从源代码编译本身的Docker 二进制文件 98
4.3 为开发Docker 运行Docker 测试集 100
4.4 使用新的Docker 二进制文件替换当前的文件 101
4.5 使用nsenter 102
4.6 runc 简介 104
4.7 远程访问Docker 守护进程 106
4.8 经过Docker 远程API 完成自动化任务 107
4.9 从远程安全访问Docker 守护进程 109
4.10 使用docker-py 访问远程Docker 守护进程 111
4.11 安全使用docker-py 113
4.12 更改存储驱动程序 113
第5 章 Kubernetes 116
5.0 简介 116
5.1 理解Kubernetes 架构 118
5.2 用于容器间链接的网络pod 120
5.3 使用Vagrant 建立一个多节点的Kubernetes 集群 121
5.4 在Kubernetes 集群上经过pod 启动容器 124
5.5 利用标签查询Kubernetes 对象 126
5.6 使用replication controller 管理pod 的副本数 127
5.7 在一个pod 中运行多个容器 129
5.8 使用集群IP 服务进行动态容器连接 131
5.9 使用Docker Compose 建立一个单节点Kubernetes 集群 135
5.10 编译Kubernetes 构建本身的发布版本 139
5.11 使用hyperkube 二进制文件启动Kubernetes 组件 141
5.12 浏览Kubernetes API 142
5.13 运行Kubernetes 仪表盘 146
5.14 升级老版本API 147
5.15 为Kubernetes 集群添加身份验证支持 149
5.16 配置Kubernetes 客户端链接到远程集群 150
第6 章 为Docker 优化的操做系统 152
6.0 简介 152
6.1 在Vagrant 中体验CoreOS Linux 发行版 153
6.2 使用cloud-init 在CoreOS 上启动容器 155
6.3 经过Vagrant 启动CoreOS 集群,在多台主机上运行容器 157
6.4 在CoreOS 集群上经过fleet 启动容器 160
6.5 在CoreOS 实例之间部署flannel 覆盖网络 162
6.6 使用Project Atomic 运行Docker 容器 164
6.7 在AWS 上启动Atomic 实例运行Docker 165
6.8 快速体验在Ubuntu Core Snappy 上运行Docker 167
6.9 在AWS EC2 上启动Ubuntu Core Snappy 实例 169
6.10 在RancherOS 中运行Docker 容器 173
第7 章 Docker 生态环境:工具 175
7.0 简介 175
7.1 使用Docker Compose建立WordPress站点 176
7.2 使用Docker Compose在Docker上对Mesos和Marathon进行测试 179
7.3 在Docker Swarm 集群上运行容器 181
7.4 使用Docker Machine建立跨云计算服务提供商的Swarm集群 183
7.5 使用Kitematic UI 管理本地容器 185
7.6 使用Docker UI 管理容器 187
7.7 使用Wharfee 交互式shell 189
7.8 使用Ansible 的Docker模块对容器进行编排 190
7.9 在Docker主机集群中使用Rancher管理容器 193
7.10 使用Lattice 在集群中运行容器 196
7.11 经过Apache Mesos 和Marathon 运行容器 198
7.12 在Mesos 集群上使用Mesos Docker 容器化 202
7.13 使用registrator 发现Docker 服务 204
第8 章 云计算中的Docker 208
8.0 简介 208
8.1 在公有云中运行Docker 209
8.2 在AWS EC2 上启动Docker 主机 212
8.3 在Google GCE 上启动Docker 主机 215
8.4 在Microsoft Azure 上启动Docker 主机 218
8.5 在AWS 上使用Docker Machine 启动Docker 主机 220
8.6 在Azure 上使用Docker Machine 启动Docker 主机 222
8.7 在Docker 容器中运行云服务提供商的CLI 224
8.8 使用Google Container registry 存储Docker 镜像 226
8.9 在GCE Google-Container 实例中使用Docker 229
8.10 经过GCE 在云中使用Kubernetes 231
8.11 配置使用EC2 Container Service 234
8.12 建立一个ECS 集群 237
8.13 在ECS 集群中启动Docker 容器 240
8.14 利用AWS Beanstalk 对Docker 的支持在云中运行应用程序 244
第9 章 监控容器 248
9.0 简介 248
9.1 使用docker inspect 命令获取容器的详细信息 249
9.2 获取运行中容器的使用统计信息 251
9.3 在Docker 主机上监听Docker 事件 252
9.4 使用docker logs 命令获取容器的日志 254
9.5 使用Docker 守护进程以外的日志记录驱动程序 254
9.6 使用Logspout 采集容器日志 257
9.7 管理Logspout 路由来存储容器日志 259
9.8 使用Elasticsearch 和Kibana 对容器日志进行存储和可视化 261
9.9 使用Collectd 对容器指标进行可视化 262
9.10 使用cAdvisor 监控容器资源使用情况 267
9.11 经过InfluxDB、Grafana 和cAdvisor 监控容器指标 269
9.12 使用Weave Scope 对容器布局进行可视化 270
第10 章 应用用例 272
10.0 简介 272
10.1 CI/CD:构建开发环境 273
10.2 CI/CD:使用Jenkins 和Apache Mesos 构建持续交付工做流 276
10.3 ELB:使用confd 和registrator 建立动态负载平衡器 280
10.4 DATA:使用Cassandra 和Kubernetes 构建兼容S3 的对象存储 286
10.5 DATA:使用Docker Network 构建MySQL Galera 集群 290
10.6 DATA:以动态方式为MySQL Galera 集群配置负载平衡器 292
10.7 DATA:构建Spark 集群 294
关于做者 298
关于封面 298
我已经在云计算领域(主要是 IaaS 层)工做了 10 余年。Amazon AWS、Google GCE 和Microsoft Azure 提供大规模的云计算服务已经有几年了,绝不夸张地说,访问一台服务器从未像如今这样方便、快速。对我来讲,其真正的价值在于能够经过 API 来访问这些服务。咱们如今能够经过编程来建立基础设施和部署应用。这些可编程层可以帮助咱们达到更高级别的自动化,有利于企业更快地将产品推向市场,作出更多的创新,以及更好地为用户服务。
然而,尽管咱们在配置管理和编排上耗费了大量的精力,可是对于在一个分布式环境中进行应用程序打包、配置和服务组装等方面依旧没有取得太大的进步。部署和运行一个可扩展、可容错的分布式应用程序仍然是比较困难的。
直到我试用 Docker 并明白了它为咱们带来的可能性以后,我才成为 Docker 的疯狂粉丝。Docker 为 Linux 容器带来了全新的用户体验。它不是要提供与容器相对的彻底虚拟化技术,而是要为应用程序的打包和运行提供便利。一旦你开始使用 Docker 并享受它所带来的全新体验,就会同时体会到另外一个好处:你会开始思考如何进行合成和聚类分析。
容器帮助咱们更多地思考如何进行功能隔离,这反过来又迫使咱们在分布式环境中对应用进行解耦,而后再将其粘合在一块儿。
“这本书对Docker生态系统进行了很好的阐述,很是适合对容器感兴趣的读者。” ——Darren Shepherd,Rancher Labs联合创始人 “这些范例对于帮助咱们在本身的平台上快速将Docker运用于生产环境相当重要。” ——Mathieu Buffenoir,Bity CTO
本篇文章由一文多发平台ArtiPub自动发布