具体描述
本书围绕已应用于多个项目的Docker技术展开讲解,前半部分以浅显的语言介绍基础概念、不同操作系统下的安装流程、多种命令与镜像创建等理论。主要内容集中于后半部分的实际操作,包括数据库应用、服务器应用、编程语言应用、安全应用、网络配置等,非常适合一线技术人员直接应用于实际业务,便于着手实践。
作者简介
李在弘
目前管理PYRASIS.COM个人网站,编写并发布了多种技术文档。曾在NC Software参与开发游戏《天堂永恒》(Lineage Eternal),并在Ntreev开发移动游戏服务器,还曾负责FFS File System Driver for Windows开源项目。最近正在研究Cocos2d-x移动游戏引擎的Tizen应用,现在主要关注操作系统内核、文件系统、软件开发自动化、游戏引擎、云平台、分布式处理系统。梦想打造个性化的全自动家居,以及设立开源基金会。
网站 http://pyrasis.com
主要著作 《Windows项目必备实用工具:Subversion, Trac, CruiseControl.NET》 《Amazon Web Service技术解析》
目录信息
1.1 虚拟机与Docker 3
1.1.1 虚拟机 4
1.1.2 Docker 5
1.1.3 Linux容器 6
1.2 Docker镜像与容器 8
第2章 安装Docker 11
2.1 Linux 11
2.1.1 自动安装脚本 11
2.1.2 Ubuntu 11
2.1.3 RedHat Enterprise Linux、CentOS 12
2.1.4 使用最新二进制文件 12
2.2 Mac OS X 13
2.3 Windows 16
第3章 使用Docker 23
3.1 使用search命令搜索镜像 23
3.2 使用pull命令下载镜像 25
3.3 使用images命令列出镜像目录 25
3.4 使用run命令创建容器 25
3.5 使用ps命令查看容器列表 26
3.6 使用start命令启动容器 26
3.7 使用restart命令重启容器 27
3.8 使用attach命令连接容器 27
3.9 使用exec命令从外部运行容器内的命令 27
3.10 使用stop命令终止容器 28
3.11 使用rm命令删除容器 28
3.12 使用rmi命令删除镜像 29
第4章 创建Docker镜像 31
4.1 熟悉Bash 31
4.2 编写Dockerfile 36
4.3 使用build命令创建镜像 37
第5章 查看Docker 39
5.1 使用history命令查看镜像历史 39
5.2 使用cp命令复制文件 40
5.3 使用commit命令从容器的修改中创建镜像 40
5.4 使用diff命令检查容器文件的修改 40
5.5 使用inspect命令查看详细信息 41
第6章 灵活使用Docker 43
6.1 搭建Docker私有仓库 43
6.1.1 存储镜像数据到本地 43
6.1.2 使用push命令上传镜像 44
6.1.3 存储镜像数据到Amazon S3 45
6.1.4 使用默认认证 46
6.2 连接Docker的容器 52
6.3 连接到其他服务器的Docker 容器 53
6.4 使用Docker数据卷 56
6.5 使用Docker数据卷容器 59
6.6 创建Docker基础镜像 60
6.6.1 创建Ubuntu基础镜像 60
6.6.2 创建CentOS基础镜像 61
6.6.3 创建空基础镜像 62
6.7 在Docker内运行Docker 64
第7章 详细了解Dockerfile 67
7.1 .dockerignore 68
7.2 FROM 68
7.3 MAINTAINER 69
7.4 RUN 69
7.5 CMD 70
7.6 ENTRYPOINT 71
7.7 EXPOSE 73
7.8 ENV 73
7.9 ADD 74
7.10 COPY 76
7.11 VOLUME 77
7.12 USER 77
7.13 WORKDIR 78
7.14 ONBUILD 79
第8章 使用Docker部署应用程序 81
8.1 向一台服务器部署应用程序 81
8.1.1 在开发者PC安装Git并创建仓库 82
8.1.2 在开发者PC中使用Node.js编写Web服务器 83
8.1.3 在开发者PC中编写Dockerfile文件 84
8.1.4 在开发者PC中生成SSH 密钥 85
8.1.5 在服务器端安装Git并创建仓库 86
8.1.6 在服务器中安装Docker 87
8.1.7 在服务器中安装SSH密钥 88
8.1.8 在服务器中安装Git Hook 89
8.1.9 在开发者PC中推送源代码 90
8.2 向多台服务器部署应用程序 91
8.2.1 在开发者PC安装Git并创建仓库 92
8.2.2 在开发者PC中使用Node.js编写Web 服务器 93
8.2.3 在开发者PC中编写Dockerfile文件 94
8.2.4 在开发者PC中生成SSH密钥 95
8.2.5 在部署服务器安装Git并创建仓库 96
8.2.6 在部署服务器中生成SSH密钥 97
8.2.7 在部署服务器中安装Docker 98
8.2.8 在部署服务器中安装Docker注册服务器 99
8.2.9 在部署服务器中安装SSH密钥 100
8.2.10 在部署服务器中安装Git Hook 101
8.2.11 在应用程序服务器中安装Docker 103
8.2.12 在应用程序服务器中安装SSH 密钥 104
8.2.13 在开发者PC中推送源代码 105
第9章 Docker监控 107
9.1 编写监控服务器Dockerfile 108
9.2 编写应用程序服务器Dockerfile 111
9.3 在Web 浏览器中查看图表 114
第10章 在Amazon Web Services中使用Docker 117
10.1 在Amazon EC2中使用Docker 117
10.2 在AWS Elastic Beanstalk中使用Docker 119
10.2.1 在AWS控制台部署Docker应用程序 119
10.2.2 使用Docker Hub公开仓库镜像 129
10.2.3 使用Docker Hub私有仓库的镜像 131
10.2.4 使用Git部署Elastic Beanstalk Docker应用程序 139
第11章 在Google Cloud Platform中使用Docker 145
11.1 安装Goolge Cloud SDK 145
11.2 在Compute Engine中使用Docker 147
11.3 在Container Engine中使用Docker 148
第12章 使用Docker Hub 151
12.1 加入Docker Hub 151
12.2 使用push命令上传镜像 153
12.3 创建Docker Hub私有仓库 155
12.4 使用Docker Hub Automated Build 157
第13章 使用Docker Remote API 167
13.1 使用Docker Remote API Python库 169
13.1.1 创建并启动容器 169
13.1.2 创建镜像 173
13.1.3 显示容器列表 175
13.1.4 显示镜像列表 176
13.1.5 其他示例与函数 176
13.2 使用Docker Remote API Python库进行HTTPS通信 187
13.2.1 创建证书 187
13.2.2 使用Python库 191
第14章 使用CoreOS 193
14.1 在VirtualBox中安装CoreOS 196
使用systemd运行服务 205
14.2 使用Vagrant安装CoreOS 206
14.3 使用etcd 211
14.3.1 创建etcd键与目录 211
14.3.2 输出etcd键与目录列表 212
14.3.3 设置自动删除etcd键与目录 212
14.3.4 监视etcd键 213
14.3.5 etcd其他命令 214
14.4 使用fleet 214
14.4.1 输出fleet机器列表 215
14.4.2 使用fleet运行Unit 215
14.4.3 输出fleet Unit列表 217
14.4.4 查看fleet Unit状态 217
14.4.5 测试fleet的自动恢复功能 218
14.4.6 使用fleet专用选项 219
14.4.7 灵活使用fleet Unit文件模板 222
14.4.8 灵活使用fleet sidekick模型 224
14.4.9 fleet其他命令 227
14.5 在云服务中使用CoreOS 227
14.5.1 在Amazon EC2中使用CoreOS 227
14.5.2 在Google Compute Engine中使用CoreOS 229
第15章 使用Docker搭建WordPress 博客 231
15.1 编写WordPress Dockerfile文件 232
15.2 编写MySQL数据库Dockerfile文件 233
15.3 创建WordPress与数据库容器 236
第16章 使用Docker构建Ruby on Rails应用 237
16.1 安装Ruby与Rails 238
16.2 编写Rails Dockerfile 240
16.3 编写PostgreSQL数据库Dockerfile 文件 245
16.4 创建Rails与数据库容器 247
第17章 使用Docker构建Django应用 249
17.1 安装Django 250
17.2 编写Django Dockerfile文件 253
17.3 编写Oracle数据库Dockerfile文件 258
17.4 创建Django与数据库容器 261
第18章 Docker应用案例 263
18.1 与负载平衡相关的自动伸缩 263
18.2 整合开发、测试、运营 264
18.3 轻松迁移服务 265
18.4 用于测试 267
第19章 Docker命令与选项列表 269
19.1 attach 270
19.2 build 271
19.3 Commit 273
19.4 cp 273
19.5 create 274
19.6 diff 277
19.7 events 277
19.8 exec 278
19.9 export 280
19.10 history 280
19.11 images 281
19.12 import 281
19.13 info 282
19.14 inspect 283
19.15 kill 284
19.16 load 284
19.17 login 285
19.18 logout 286
19.19 logs 286
19.20 port 287
19.21 pause 287
19.22 ps 287
19.23 pull 288
19.24 push 289
19.25 restart 289
19.26 rm 289
19.27 rmi 290
19.28 run 291
19.29 save 296
19.30 search 297
19.31 start 297
19.32 stop 298
19.33 tag 298
19.34 top 299
19.35 unpause 299
19.36 version 300
19.37 wait 300
附录 编译Docker 301
· · · · · · (收起)
读后感
用户评价
这本书的封面设计简直是一场视觉盛宴,厚重的深蓝色调配上简洁有力的白色字体,立刻给人一种专业、可靠的感觉。光是捧在手里,就能感受到作者在内容组织上的匠心独运。我原本以为这会是一本枯燥的技术手册,但翻开目录,就被那种清晰的逻辑结构所吸引。作者似乎非常清楚初学者会遇到的痛点,从最基础的Linux概念讲起,循序渐进地引入容器化的理念,每一个章节的过渡都自然流畅,没有那种生硬的跳跃感。特别是关于镜像构建的部分,讲解得深入浅出,即便是第一次接触`Dockerfile`的人也能迅速掌握核心语法和最佳实践。作者没有满足于理论的阐述,而是大量穿插了实际操作的截图和代码片段,这对于动手能力强的读者来说简直是福音。读完前几章,我已经不再是那个对“虚拟化”和“容器化”感到迷茫的新手,而是有了一个清晰的知识地图,知道下一步该往哪个方向深入探索。这种由表及里、层层递进的叙述方式,无疑是这本书最大的亮点之一。
坦率地说,这本书在性能优化和高级网络调试方面的深度,远超出了我最初的预期。我原本以为它会止步于基础的容器运行和管理,但令人惊喜的是,作者专门开辟了一整个章节来讨论如何榨干Docker的每一分性能。内容涵盖了cgroup参数的精细调优、使用`overlay2`存储驱动的底层差异,甚至还涉及到了如何利用`--ulimit`来限制容器资源的过度消耗。尤其是在网络部分,书中对CNI(Container Network Interface)的介绍,以及如何自定义网络驱动来满足特定高并发场景的需求,提供了非常实用的指导方针。这些内容对于正在将Docker推向生产环境,并开始关注资源效率和稳定性的工程师来说,具有极高的参考价值。很多其他书籍只是一带而过的内容,在这里却被挖掘到了足够深入的层面,显示出作者深厚的实战背景。
这本书的排版和组织结构,体现了一种对读者体验的极致追求。插图和代码块的间距把握得恰到好处,代码块的语法高亮清晰易读,即便是长时间盯着屏幕阅读,眼睛也不会感到特别疲劳。更值得称赞的是,作者非常注重知识点的回顾和总结。在每个大的主题结束后,都会有一个“关键点回顾”的小结,用项目符号的形式提炼出本章的核心要点,这对于快速复习和巩固知识点非常有帮助。我经常在阅读完一个复杂的概念后,回头看一眼这个小结,马上就能将零散的知识点串联起来,形成一个完整的知识体系。此外,书中提供的配套资源链接(虽然我没有全部使用),也显示了作者构建一个全面学习生态的意图,而不是简单地完成一本教材的撰写任务。这让这本书不仅仅是一本“工具书”,更像是一个持续进化的学习伴侣。
这本书的实战案例部分,简直是为我们这些渴望将理论付诸实践的工程师量身定做的宝典。我最欣赏的一点是,作者选择了几个极具代表性的应用场景进行深度剖析,比如微服务部署、数据持久化以及CI/CD流程的集成。这些都不是那种教科书式的、脱离实际的空洞示例,而是真实项目开发中经常会遇到的难题。举例来说,在处理网络配置时,书中详细对比了`bridge`、`host`和`overlay`模式的优劣,并通过实际的命令演示了如何为复杂的应用栈配置内部通信,这比我之前在网上零散搜索的资料要系统和权威得多。而且,作者在讲解每一个`docker-compose.yml`文件的配置时,都会配上详尽的注释,让你不仅知道“怎么做”,更明白“为什么这么做”。这种深度解析,极大地提升了我对Docker生态系统底层工作原理的理解,让我感觉自己不再是简单地调用命令,而是真正驾驭了这个强大的工具。
与其他同类书籍相比,这本书的语言风格显得尤为平实而又充满人文关怀。作者似乎非常懂得读者的学习曲线,在一些容易产生混淆的关键概念上,会特意采用类比的方式进行解释,比如用“轻量级虚拟机”和“进程隔离”来区分Docker与传统虚拟机的差异,这种解释方式非常直观,能迅速在脑海中建立起正确的认知模型。即便是处理诸如存储卷(Volumes)的挂载机制、SELinux或AppArmor的安全上下文等偏硬核的内容时,作者也尽量避免了晦涩难懂的专业术语堆砌,而是用一种娓娓道来的语气,将复杂的安全策略和资源管理逻辑剖析得清清楚楚。阅读过程中,我感觉就像是有一位经验丰富的前辈坐在旁边,耐心地解答每一个疑问,而不是面对一堆冷冰冰的代码文档。这种人情味十足的写作风格,极大地降低了学习的心理门槛。
14年韩国出版的书,今年才有中文版,太旧,而且太基础,不如直接看文档(因为图书馆采购了就借来看看啊 20161201
14年韩国出版的书,今年才有中文版,太旧,而且太基础,不如直接看文档(因为图书馆采购了就借来看看啊 20161201
14年韩国出版的书,今年才有中文版,太旧,而且太基础,不如直接看文档(因为图书馆采购了就借来看看啊 20161201
翻译和校对垃圾中的垃圾,连目录都能有错字
14年韩国出版的书,今年才有中文版,太旧,而且太基础,不如直接看文档(因为图书馆采购了就借来看看啊 20161201