具体描述
Docker是一个开源的应用容器引擎,开发者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
本书由Docker公司前服务与支持副总裁James Turnbull编写,是Docker开发指南。本书专注于Docker 1.9及以上版本,指导读者完成Docker的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解Docker适用于什么场景。书中先介绍Docker及其组件的基础知识,然后介绍用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
作者简介
作者简介
James是一位技术作家,还是一名开源极客。他的大作是一本讲述流行开源日志工具的书——The LogStash Book。James还写了两本关于Puppet的书,一本是Pro Puppet,另一本是较早的Pulling Strings with Puppet: Configuration Management Made Easy。此外,James还写了Pro Linux System Administration、Pro Nagios 2.0和Hardening Linux这三本书。
James是Kickstarter公司的CTO。之前,James曾担任Docker公司服务与支持副总裁、Venmo公司工程副总裁和Puppet Labs的技术运维副总裁。
译者简介
李兆海,网名Googol Lee。使用Googol这个名字真的是因为“10的100次方”这个意思,和后来的Google公司没有一点儿关系。多年后端程序员,早期以C、C++为主,后来转向Python,现在以Go为生。曾写过《Golang初探》发表于2011年2月号《程序员》。Docker早期使用者。平时喜欢乱翻书,遇到感兴趣的都会研究一番。Twitter账户@googollee。
刘斌,具有10余年软件开发经验,关注后台开发技术和各种编程语言。做过电子商务、金融、企业系统以及Android手机开发;写过Delphi,也兼做系统管理员和DBA(现在都改叫DevOps了);既做后台应用,也要调用前台CSS和JavaScript,可还是不敢自称“全栈”(Full Stack);今又舶来“增长黑客”(Growth Hacker),我想我要做一个“增长工程师”(Growth Engineer)。个人主页 http://liubin.org。
巨震,北京大学软件工程硕士,服务器端开发者。目前就职于创业公司,使用Node.js、Golang进行服务器端开发。2013年年底开始研究Docker,是Docker中文社区的活跃贡献者,负责Docker技术文章和视频的翻译、校对工作。生活中喜欢美食、骑行,热衷于PC硬件,喜爱折腾,热爱一切计算机相关的技术,坚信技术改变世界。崇拜的技术传奇人物是前id Software首席程序员、现Oculus VR首席技术官John Carmack。
目录信息
1.1 Docker简介 2
1.1.1 提供一个简单、轻量的建模方式 2
1.1.2 职责的逻辑分离 3
1.1.3 快速、高效的开发生命周期 3
1.1.4 鼓励使用面向服务的架构 3
1.2 Docker组件 3
1.2.1 Docker客户端和服务器 4
1.2.2 Docker镜像 5
1.2.3 Registry 5
1.2.4 容器 5
1.3 能用Docker做什么 6
1.4 Docker与配置管理 7
1.5 Docker的技术组件 8
1.6 本书的内容 9
1.7 Docker资源 10
第2章 安装Docker 11
2.1 安装Docker的先决条件 12
2.2 在Ubuntu和Debian中安装Docker 13
2.2.1 检查前提条件 14
2.2.2 安装Docker 16
2.2.3 Docker与UFW 17
2.3 在Red Hat和Red Hat系发行版中安装Docker 17
2.3.1 检查前提条件 18
2.3.2 安装Docker 19
2.3.3 在Red Hat系发行版中启动Docker守护进程 21
2.4 在OS X中安装Docker Toolbox 22
2.4.1 在OS X中安装Docker Toolbox 22
2.4.2 在OS X中启动Docker Toolbox 23
2.4.3 测试Docker Toolbox 24
2.5 在Windows中安装Docker Toolbox 24
2.5.1 在Windows中安装Docker Toolbox 25
2.5.2 在Windows中启动Docker Toolbox 25
2.5.3 测试Docker Toolbox 26
2.6 使用本书的Docker Toolbox示例 26
2.7 Docker安装脚本 27
2.8 二进制安装 28
2.9 Docker守护进程 28
2.9.1 配置Docker守护进程 29
2.9.2 检查Docker守护进程是否正在运行 30
2.10 升级Docker 31
2.11 Docker用户界面 32
2.12 小结 32
第3章 Docker入门 33
3.1 确保Docker已经就绪 33
3.2 运行我们的第一个容器 34
3.3 使用第一个容器 36
3.4 容器命名 38
3.5 重新启动已经停止的容器 39
3.6 附着到容器上 40
3.7 创建守护式容器 40
3.8 容器内部都在干些什么 41
3.9 Docker日志驱动 42
3.10 查看容器内的进程 43
3.11 Docker统计信息 44
3.12 在容器内部运行进程 44
3.13 停止守护式容器 45
3.14 自动重启容器 46
3.15 深入容器 47
3.16 删除容器 48
3.17 小结 49
第4章 使用Docker镜像和仓库 50
4.1 什么是Docker镜像 50
4.2 列出镜像 52
4.3 拉取镜像 55
4.4 查找镜像 57
4.5 构建镜像 58
4.5.1 创建Docker Hub账号 59
4.5.2 用Docker的commit命令创建镜像 60
4.5.3 用Dockerfile构建镜像 62
4.5.4 基于Dockerfile构建新镜像 65
4.5.5 指令失败时会怎样 67
4.5.6 Dockerfile和构建缓存 68
4.5.7 基于构建缓存的Dockerfile模板 69
4.5.8 查看新镜像 70
4.5.9 从新镜像启动容器 70
4.5.10 Dockerfile指令 74
4.6 将镜像推送到Docker Hub 88
4.7 删除镜像 92
4.8 运行自己的Docker Registry 94
4.8.1 从容器运行Registry 94
4.8.2 测试新Registry 95
4.9 其他可选Registry服务 96
4.10 小结 96
第5章 在测试中使用Docker 97
5.1 使用Docker测试静态网站 97
5.1.1 Sample网站的初始Dockerfile 98
5.1.2 构建Sample网站和Nginx镜像 100
5.1.3 从Sample网站和Nginx镜像构建容器 102
5.1.4 修改网站 104
5.2 使用Docker构建并测试Web应用程序 105
5.2.1 构建Sinatra应用程序 105
5.2.2 创建Sinatra容器 107
5.2.3 扩展Sinatra应用程序来使用Redis 110
5.2.4 将Sinatra应用程序连接到Redis容器 113
5.2.5 Docker内部连网 114
5.2.6 Docker Networking 119
5.2.7 使用容器连接来通信 131
5.2.8 连接容器小结 132
5.3 Docker用于持续集成 132
5.3.1 构建Jenkins和Docker服务器 133
5.3.2 创建新的Jenkins作业 137
5.3.3 运行Jenkins作业 141
5.3.4 与Jenkins作业有关的下一步 143
5.3.5 Jenkins设置小结 143
5.4 多配置的Jenkins 143
5.4.1 创建多配置作业 143
5.4.2 测试多配置作业 147
5.4.3 Jenkins多配置作业小结 149
5.5 其他选择 149
5.5.1 Drone 149
5.5.2 Shippable 149
5.6 小结 149
第6章 使用Docker构建服务 151
6.1 构建第一个应用 151
6.1.1 Jekyll基础镜像 152
6.1.2 构建Jekyll基础镜像 153
6.1.3 Apache镜像 153
6.1.4 构建Jekyll Apache镜像 154
6.1.5 启动Jekyll网站 155
6.1.6 更新Jekyll网站 158
6.1.7 备份Jekyll卷 159
6.1.8 扩展Jekyll示例网站 161
6.2 使用Docker构建一个Java应用服务 161
6.2.1 WAR文件的获取程序 161
6.2.2 获取WAR文件 162
6.2.3 Tomecat7应用服务器 163
6.2.4 运行WAR文件 165
6.2.5 基于Tomcat应用服务器的构建服务 166
6.3 多容器的应用栈 169
6.3.1 Node.js镜像 169
6.3.2 Redis基础镜像 172
6.3.3 Redis主镜像 173
6.3.4 Redis副本镜像 174
6.3.5 创建Redis后端集群 174
6.3.6 创建Node容器 178
6.3.7 捕获应用日志 180
6.3.8 Node程序栈的小结 183
6.4 不使用SSH管理Docker容器 183
6.5 小结 185
第7章 Docker编配和服务发现 186
7.1 Docker Compose 187
7.1.1 安装Docker Compose 187
7.1.2 获取示例应用 188
7.1.3 docker-compose.yml文件 191
7.1.4 运行Compose 193
7.1.5 使用Compose 195
7.1.6 Compose小结 197
7.2 Consul、服务发现和Docker 197
7.2.1 构建Consul镜像 199
7.2.2 在本地测试Consul容器 202
7.2.3 使用Docker运行Consul集群 203
7.2.4 启动具有自启动功能的Consul节点 206
7.2.5 启动其余节点 207
7.2.6 配合Consul,在Docker里运行一个分布式服务 212
7.3 Docker Swarm 221
7.3.1 安装Swarm 222
7.3.2 创建Swarm集群 222
7.3.3 创建容器 225
7.3.4 过滤器 227
7.3.5 策略 229
7.3.6 小结 230
7.4 其他编配工具和组件 230
7.4.1 Fleet和etcd 230
7.4.2 Kubernetes 231
7.4.3 Apache Mesos 231
7.4.4 Helios 231
7.4.5 Centurion 231
7.5 小结 231
第8章 使用Docker API 233
8.1 Docker API 233
8.2 初识Remote API 234
8.3 测试Docker Remote API 236
8.3.1 通过API来管理Docker镜像 237
8.3.2 通过API管理Docker容器 239
8.4 改进TProv应用 242
8.5 对Docker Remote API进行认证 246
8.5.1 建立证书授权中心 246
8.5.2 创建服务器的证书签名请求和密钥 248
8.5.3 配置Docker守护进程 250
8.5.4 创建客户端证书和密钥 251
8.5.5 配置Docker客户端开启认证功能 253
8.6 小结 254
第9章 获得帮助和对Docker进行改进 255
9.1 获得帮助 255
9.1.1 Docker用户、开发邮件列表及论坛 255
9.1.2 IRC上的Docker 256
9.1.3 GitHub上的Docker 256
9.2 报告Docker的问题 257
9.3 搭建构建环境 257
9.3.1 安装Docker 257
9.3.2 安装源代码和构建工具 257
9.3.3 检出源代码 258
9.3.4 贡献文档 258
9.3.5 构建开发环境 259
9.3.6 运行测试 261
9.3.7 在开发环境中使用Docker 261
9.3.8 发起pull request 262
9.3.9 批准合并和维护者 263
9.4 小结 264
· · · · · · (收起)
读后感
这本书是Docker公司服务与支持副总裁James Turnbull自出版的电子书The Docker Book的中文版,这本英文著作,是全球第一本Docker著作。 2014年12月出版的《第一本Docker书》是英文原著The Docker Book的1.3.1版,其内容是基于Docker 1.0.0及以上版本写的。 2016年3月出版的《第...
挺好的一本docker入门书,docker官方团队出品。除了理论,还有很多实例,照着操作一篇就基本上熟悉docker的命令和使用场景了。docker命令设计,非常清晰直观,除了命令,制作镜像,应用场景搞熟练应该就算入门了。 在公司内网从docker官网下镜像实在太慢了,还是需要有一个私有...
这本书是Docker公司服务与支持副总裁James Turnbull自出版的电子书The Docker Book的中文版,这本英文著作,是全球第一本Docker著作。 2014年12月出版的《第一本Docker书》是英文原著The Docker Book的1.3.1版,其内容是基于Docker 1.0.0及以上版本写的。 2016年3月出版的《第...
这本书思路清晰,各个章节使用独立的实例来教学。是一本非常好的入门书。 ----------------------------------------------------------------------
作為初學者的首選工具書,這本書在內容編排 語言表達 等方面做的都非常好,讓讀者閱讀起來非常輕鬆,毫無枯燥感。作為一本docker學習的工具書,告诉读者docker是什么,它能为我们解决什么等,也得到了專家的認可,不愧第一,是一本值得一讀的好書。 -------------
用户评价
我一直觉得,学习一门新技术,最怕的就是理论和实践脱节。很多书上来就讲一大堆高深的原理,让你感觉云里雾里,等真正动手操作的时候,又发现书中的例子已经过时,或者根本跑不通。而《第一本Docker书 修订版》在这方面做得就非常出色。它并没有忽视理论的重要性,但更强调的是如何将理论付诸实践。我尤其喜欢书中关于Docker镜像构建的部分,从Dockerfile的编写规范,到各种指令的详细讲解,再到如何优化镜像的大小和构建速度,这些都是非常实用的技巧。以前我对构建镜像总是一知半解,有时候辛辛苦苦构建出来的镜像体积巨大,部署起来也慢。看了这本书,我才明白原来很多细微之处的优化,能带来质的飞跃。而且,书中对Docker Compose的使用讲解也让我受益匪浅。在开发和测试环境中,需要快速部署多个关联服务的场景非常普遍,而Docker Compose就像一个瑞士军刀,能够非常方便地编排和管理这些服务。我跟着书中的例子,搭建了一个简单的Web应用环境,从编写docker-compose.yml文件,到启动、停止、查看日志,整个过程都流畅无比。这让我深刻体会到Docker在简化部署流程、提高开发效率方面的巨大价值。
作为一名对DevOps概念比较感兴趣的开发者,我一直希望能找到一本能够系统性地介绍Docker在CI/CD流程中应用的图书。在翻阅《第一本Docker书 修订版》之前,我对Docker的理解更多停留在单机环境下的应用,比如运行一个Web服务器或者数据库。这本书却打破了我的固有认知,它非常深入地探讨了Docker如何融入到整个软件生命周期中。从代码提交后的自动化构建,到镜像的存储和分发,再到最终的容器部署和监控,书中都给出了详实的指导和案例。我特别对书中关于Docker Registry的使用讲解印象深刻,了解了如何搭建私有Registry,如何管理镜像的版本,以及如何与其他CI/CD工具(比如Jenkins)进行集成。这让我看到了Docker在企业级应用中的广阔前景,也让我意识到,掌握Docker不仅仅是学习一个工具,更是理解一种现代化的软件交付模式。这本书就像一扇窗,让我看到了更广阔的技术图景,激发了我对DevOps更深入的学习和探索。
老实说,我一开始对《第一本Docker书 修订版》并没有抱太大的期望,毕竟市面上关于Docker的书籍已经很多了,我之前也看过几本,总觉得内容有些重复或者不够深入。但是,这本书给了我很大的惊喜。它并没有试图涵盖Docker的所有细节,而是精选了最核心、最常用的功能,并以一种非常系统和深入的方式进行了讲解。我尤其欣赏书中对Docker网络和存储部分的阐述,这些部分往往是很多初学者容易忽略或者感到困惑的地方。通过书中详细的解释和实例,我终于理解了Docker网络的不同模式(bridge, host, none),以及它们各自的适用场景。同样,对Docker卷(volume)的管理和使用,也让我能够更有效地持久化容器数据,避免数据丢失的风险。这本书的深度和广度都恰到好处,既能满足初学者的需求,也能为有一定基础的读者提供新的启发。它让我对Docker有了更全面、更深刻的认识,也为我今后的Docker实践打下了坚实的基础。
我是一个对新技术充满好奇但又比较“懒”的学习者,我不喜欢看那些长篇大论、概念堆砌的书。我更倾向于那种能够快速上手,并且能看到实际效果的书籍。《第一本Docker书 修订版》恰恰满足了我的这种需求。这本书的章节划分非常清晰,每一个小节都围绕着一个具体的Docker功能或者应用场景展开,读起来一点也不费劲。我最喜欢的是书中那些“小贴士”和“注意事项”,它们往往能帮助我避开一些常见的坑,节省了很多不必要的时间。而且,这本书的排版也很舒服,代码示例清晰易读,图片和图表的运用也恰到好处,能够帮助我更好地理解复杂的概念。我试着用书中的方法部署了一个前后端分离的应用,整个过程比我之前手动部署要快了不止一倍,而且部署的稳定性和可重复性也大大提高。最重要的是,我感觉自己真的学会了如何使用Docker来解决实际问题,而不是仅仅停留在理论层面。这种“学以致用”的感觉,让我对学习Docker充满了动力。
这本书的出现,简直就像为我这样在docker大海中摸索了许久但始终找不到方向的“老菜鸟”量身定做的一样。当初决定学习Docker,纯粹是因为工作中频繁遇到容器化部署的需求,看到身边同事们谈论Docker如数家珍,感觉自己再不学就要被时代抛弃了。但市面上关于Docker的书籍实在太多,内容也参差不齐,我试着翻了几本,不是过于理论化,就是例子太陈旧,看得我头昏脑涨,信心也一点点被消磨。直到我无意中发现了《第一本Docker书 修订版》,我才真正找到了“家”。从最基础的概念讲起,比如什么是容器,它和虚拟机有什么区别,Docker的优势又体现在哪里,这些我一直迷迷糊糊的地方,在这本书里都得到了清晰的解释。作者的语言风格非常平实易懂,不会用太多晦涩的专业术语来吓唬人,而是用一种循序渐进的方式,带着我一步步走进Docker的世界。更重要的是,书中提供的实践操作指导非常详细,每一个命令的背后都解释了它是什么,为什么这样用,以及可能产生的结果。我照着书中的步骤一步步操作,感觉自己真的在一点点地掌握这门技术,而不是像之前那样只是机械地复制粘贴。这种“学有所得”的成就感,是其他很多技术书籍无法给予的。
适合初学。例子里有些错误。
当作入门书相当不错。前几就章讲基本用法,其实这个就够普通使用了,后几章讲例子,也很时丰富。完全对得起书名。
适合初学。例子里有些错误。
docker用这个入门简直太棒了,浅显易懂,后面K8S走起,哈哈哈
棒棒棒 Windows上也好好用啊