Docker 技术入门与实战

🌙
手机阅读
本文目录结构

Docker 技术入门与实战

编辑推荐

适读人群 :1. 云计算开发人员。2. 网络应用开发与管理人员。 入门 Docker 的首本书,经典畅销书升级,系统化掌握容器技术栈,第 3 版基于 Docker 新 18.x 系列版本。

内容简介

本书从 Docker 基本原理开始,深入浅出地讲解 Docker 的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署 Docker 应用。本书分为四大部分:基础入门、实战案例、进阶技能、开源项目,部分(第 1~8 章)介绍 Docker 与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据卷、端口映射等;第二部分(第 9~16 章)通过案例介绍 Docker 的应用方法,包括与各种操作系统平台、SSH 服务的镜像、Web 服务器与应用、数据库的应用、各类编程语言的接口、容器云等,还介绍了作者在容器实战中的思考与经验总结;第三部分(第 17~21 章)介绍一些进阶技能,如 Docker 核心技术实现原理、安全、高级网络配置、libnetwork 插件化网络功能等;第四部分(第 22~28 章)介绍与容器开发相关的开源项目,包括 Etcd、Docker Machine、Docker Compose、Docker Swarm、Mesos、Kubernetes 等。第 3 版根据 Docker 18.x 系列版本对全书内容进行了全面修订。

作者简介

杨保华,博士,现为甲骨文架构师。研究方向包括分布式系统、大数据和算法设计等,是容器、网络虚拟化、区块链等技术的早期研究者和布道者。他倡导技术创新与产品、市场相结合,曾负责多个大型平台的架构和设计,以及企业系统的实现和实施。他热爱开源文化,曾积极贡献了多个开源项目。

目录

第 3 版前言

第一部分 基础入门

第 1 章 初识 Docker 与容器 3

  • 1.1 什么是 Docker 3
  • 1.2 为什么要使用 Docker 6
  • 1.3 Docker 与虚拟化 8
  • 1.4 本章小结 9

第 2 章 核心概念与安装配置 10

  • 2.1 核心概念 10
  • 2.2 安装 Docker 引擎 11
  • 2.2.1 Ubuntu 环境下安装 Docker 12
  • 2.2.2 CentOS 环境下安装 Docker 14
  • 2.2.3 通过脚本安装 15
  • 2.2.4 macOS 环境下安装 Docker 15
  • 2.2.5 Windows 环境下安装 Docker 23
  • 2.3 配置 Docker 服务 26
  • 2.4 推荐实践环境 27
  • 2.5 本章小结 27

第 3 章 使用 Docker 镜像 28

  • 3.1 获取镜像 28
  • 3.2 查看镜像信息 30
  • 3.3 搜寻镜像 32
  • 3.4 删除和清理镜像 33
  • 3.5 创建镜像 35
  • 3.6 存出和载入镜像 36
  • 3.7 上传镜像 37
  • 3.8 本章小结 38

第 4 章 操作 Docker 容器 39

  • 4.1 创建容器 39
  • 4.2 停止容器 44
  • 4.3 进入容器 46
  • 4.4 删除容器 47
  • 4.5 导入和导出容器 48
  • 4.6 查看容器 49
  • 4.7 其他容器命令 50
  • 4.8 本章小结 52

第 5 章 访问 Docker 仓库 53

  • 5.1 Docker Hub 公共镜像市场 53
  • 5.2 第三方镜像市场 55
  • 5.3 搭建本地私有仓库 56
  • 5.4 本章小结 58

第 6 章 Docker 数据管理 59

  • 6.1 数据卷 59
  • 6.2 数据卷容器 60
  • 6.3 利用数据卷容器来迁移数据 62
  • 6.4 本章小结 62

第 7 章 端口映射与容器互联 63

  • 7.1 端口映射实现容器访问 63
  • 7.2 互联机制实现便捷互访 64
  • 7.3 本章小结 67

第 8 章 使用 Dockerfile 创建镜像 68

  • 8.1 基本结构 68
  • 8.2 指令说明 70
  • 8.2.1 配置指令 71
  • 8.2.2 操作指令 74
  • 8.3 创建镜像 75
  • 8.3.1 命令选项 76
  • 8.3.2 选择父镜像 77
  • 8.3.3 使用。dockerignore 文件 77
  • 8.3.4 多步骤创建 78
  • 8.4 最佳实践 79
  • 8.5 本章小结 80

第二部分 实战案例

第 9 章 操作系统 83

  • 9.1 BusyBox 83
  • 9.2 Alpine 85
  • 9.3 Debian/Ubuntu 86
  • 9.4 CentOS/Fedora 88
  • 9.5 本章小结 89

第 10 章 为镜像添加 SSH 服务 90

  • 10.1 基于 commit 命令创建 90
  • 10.2 使用 Dockerfile 创建 93
  • 10.3 本章小结 95

第 11 章 Web 服务与应用 96

  • 11.1 Apache 96
  • 11.2 Nginx 100
  • 11.3 Tomcat 104
  • 11.4 Jetty 108
  • 11.5 LAMP 109
  • 11.6 持续开发与管理 111
  • 11.7 本章小结 114

第 12 章 数据库应用 115

  • 12.1 MySQL 115
  • 12.2 Oracle Database XE 117
  • 12.3 MongoDB 118
  • 12.4 Redis 124
  • 12.5 Cassandra 126
  • 12.6 本章小结 129

第 13 章 分布式处理与大数据平台 130

  • 13.1 Hadoop 130
  • 13.2 Spark 133
  • 13.3 Storm 136
  • 13.4 Elasticsearch 140
  • 13.5 本章小结 141

第 14 章 编程开发 142

  • 14.1 C/C++ 142
  • 14.2 Java 146
  • 14.3 Python 149
  • 14.3.1 使用 Python 官方镜像 150
  • 14.3.2 使用 PyPy 151
  • 14.3.3 使用 Flask 151
  • 14.3.4 相关资源 154
  • 14.4 JavaScript 154
  • 14.4.1 使用 Node.js 154
  • 14.4.2 相关资源 158
  • 14.5 Go 158
  • 14.6 本章小结 161

第 15 章 容器与云服务 162

  • 15.1 公有云容器服务 162
  • 15.1.1 AWS 162
  • 15.1.2 Google Cloud Platform 163
  • 15.1.3 Azure 164
  • 15.1.4 腾讯云 165
  • 15.1.5 阿里云 165
  • 15.1.6 华为云 166
  • 15.1.7 UCloud 167
  • 15.2 容器云服务 168
  • 15.3 阿里云容器服务 172
  • 15.4 时速云介绍 174
  • 15.5 本章小结 175

第 16 章 容器实战思考 176

  • 16.1 Docker 为什么会成功 176
  • 16.2 研发人员该如何看待容器 177
  • 16.3 容器化开发模式 178
  • 16.4 容器与生产环境 180
  • 16.5 本章小结 182

第三部分 进阶技能

第 17 章 核心实现技术 185

  • 17.1 基本架构 185
  • 17.2 命名空间 187
  • 17.3 控制组 191
  • 17.4 联合文件系统 193
  • 17.5 Linux 网络虚拟化 195
  • 17.6 本章小结 197

第 18 章 配置私有仓库 199

  • 18.1 安装 Docker Registry 199
  • 18.2 配置 TLS 证书 201
  • 18.3 管理访问权限 202
  • 18.4 配置 Registry 205
  • 18.5 批量管理镜像 211
  • 18.6 使用通知系统 214
  • 18.7 本章小结 217

第 19 章 安全防护与配置 218

  • 19.1 命名空间隔离的安全 218
  • 19.2 控制组资源控制的安全 219
  • 19.3 内核能力机制 219
  • 19.4 Docker 服务端的防护 221
  • 19.5 更多安全特性的使用 221
  • 19.6 使用第三方检测工具 222
  • 19.6.1 Docker Bench 222
  • 19.6.2 clair 223
  • 19.7 本章小结 224

第 20 章 高级网络功能 225

  • 20.1 启动与配置参数 225
  • 20.2 配置容器 DNS 和主机名 227
  • 20.3 容器访问控制 228
  • 20.4 映射容器端口到宿主主机的实现 229
  • 20.5 配置容器网桥 231
  • 20.6 自定义网桥 232
  • 20.7 使用 OpenvSwitch 网桥 233
  • 20.8 创建一个点到点连接 235
  • 20.9 本章小结 236

第 21 章 libnetwork 插件化网络功能 237

  • 21.1 容器网络模型 237
  • 21.2 Docker 网络命令 238
  • 21.3 构建跨主机容器网络 241
  • 21.4 本章小结 243

第四部分 开源项目

第 22 章 Etcd—高可用的键值数据库 247

  • 22.1 Etcd 简介 247
  • 22.2 安装和使用 Etcd 248
  • 22.3 使用客户端命令 253
  • 22.3.1 数据类操作 255
  • 22.3.2 非数据类操作 258
  • 22.4 Etcd 集群管理 260
  • 22.4.1 构建集群 260
  • 22.4.2 集群参数配置 263
  • 22.5 本章小结 264

第 23 章 Docker 三剑客之 Machine 265

  • 23.1 Machine 简介 265
  • 23.2 安装 Machine 265
  • 23.3 使用 Machine 266
  • 23.4 Machine 命令 268
  • 23.5 本章小结 272

第 24 章 Docker 三剑客之 Compose 273

  • 24.1 Compose 简介 273
  • 24.2 安装与卸载 274
  • 24.3 Compose 模板文件 277
  • 24.4 Compose 命令说明 292
  • 24.5 Compose 环境变量 299
  • 24.6 Compose 应用案例一:Web 负载均衡 300
  • 24.7 Compose 应用案例二:大数据 Spark 集群 304
  • 24.8 本章小结 309

第 25 章 Docker 三剑客之 Swarm 310

  • 25.1 Swarm 简介 310
  • 25.2 基本概念 311
  • 25.3 使用 Swarm 313
  • 25.4 使用服务命令 316
  • 25.5 本章小结 319

第 26 章 Mesos—优秀的集群资源调度平台 321

  • 26.1 简介 321
  • 26.2 Mesos 安装与使用 322
  • 26.3 原理与架构 330
  • 26.3.1 架构 330
  • 26.3.2 基本单元 331
  • 26.3.3 调度 331
  • 26.3.4 高可用性 332
  • 26.4 Mesos 配置解析 333
  • 26.4.1 通用项 333
  • 26.4.2 master 专属配置项 333
  • 26.4.3 slave 专属配置项 335
  • 26.5 日志与监控 338
  • 26.6 常见应用框架 340
  • 26.7 本章小结 341

第 27 章 Kubernetes—生产级容器集群平台 343

  • 27.1 简介 343
  • 27.2 核心概念 345
  • 27.3 资源抽象对象 348
  • 27.3.1 容器组 348
  • 27.3.2 服务 349
  • 27.3.3 存储卷 350
  • 27.4 控制器抽象对象 351
  • 27.5 其他抽象对象 353
  • 27.6 快速体验 355
  • 27.7 重要组件 359
  • 27.7.1 Etcd 360
  • 27.7.2 kube-apiserver 360
  • 27.7.3 kube-scheduler 361
  • 27.7.4 kube-controller-manager 362
  • 27.7.5 kubelet 363
  • 27.7.6 kube-proxy 364
  • 27.8 使用 kubectl 365
  • 27.8.1 获取 kubectl 365
  • 27.8.2 命令格式 366
  • 27.8.3 全局参数 367
  • 27.8.4 通用子命令 369
  • 27.9 网络设计 372
  • 27.10 本章小结 374

第 28 章 其他相关项目 375

  • 28.1 持续集成 375
  • 28.2 容器管理 377
  • 28.2.1 Portainer 377
  • 28.2.2 Panamax 378
  • 28.2.3 Seagull 378
  • 28.3 编程开发 380
  • 28.4 网络支持 381
  • 28.4.1 Pipework 381
  • 28.4.2 Flannel 项目 382
  • 28.4.3 Weave Net 项目 382
  • 28.4.4 Calico 项目 383
  • 28.5 日志处理 383
  • 28.6 服务代理 385
  • 28.7 标准与规范 389
  • 28.8 其他项目 392
  • 28.9 本章小结 396
  • 附录
  • 附录 A 常见问题总结 398
  • 附录 B Docker 命令查询 404
  • 附录 C 参考资源链接 411

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了