商品详情
前 言Docker及其代表的容器化计算技术一直在不断创新和发展。本书的首版问世于Docker 技术诞生之初。自那时起,后续版本有幸陪伴着容器技术的逐步成熟,见证了容器技术极大地降低了人们使用信息技术的门槛,显著推动了信息行业的演进。过去十年无疑是信息科技发展的黄金时期。大数据和物联网技术的进步,使人们能够以前所未有的方式理解和影响现实世界。区块链技术的出现,提供了一种全新的信任机制,为分布式金融网络铺就了道路。人工智能技术,尤其是大模型的普及,为人们的生活带来了难以想象的便利。在所有这些重大的变革中,容器技术都扮演着重要角色,为这些变革提供了坚实的计算平台支持。为了让读者快速掌握最新的容器技术,本书重点围绕最新的容器技术,补充讲解了新特性(包括高级构建、新的编排工具、增强的安全机制和性能优化等),同时摒弃了不再活跃的工具和项目(如 Docker Machine和Mesos 项目)。全书分为四部分:第一部分简要介绍 Docker 的基础知识和常用命令;第二部分详述在各种典型场景中如何运用容器技术,包括操作系统、Web 服务、数据库、分布式处理和大数据、编程开发以及容器云等;第三部分深入讲解高级容器技巧,包括实现原理、私有仓库、安全防护、高级网络功能和网络插件;第四部分展示与容器相关的开源项目,包括Etcd、Compose、Swarm、Kubernetes等。这些项目让使用容器技术变得更加有效率,使容器平台更加稳定和智能,共同构建了一个繁荣的容器计算生态。在此由衷感谢所有支持本书的读者和同人。众多宝贵的建议和反馈,让本书得以不断完善和提高。多年的畅销记录,是对本书的最大肯定和鼓励。愿信息技术的进步,使世界变得更加美好!
作为陪伴 Docker 技术从诞生到成熟的畅销经典,本书第 4 版紧跟容器技术发展浪潮,构建了贴合当下实践的实用技术体系 ?不仅补充高级构建、新编排工具、增强安全机制与性能优化等新特性,还摒弃了Docker Machine、Mesos 等不再活跃的工具与项目,确保内容的时效性与实用性。全书以 ;基础入门 ?实战案例 ?进阶技能 ?开源项目 为清晰脉络,既深入浅出地讲解 Docker 的核心概念、常用命令与底层实现原理,又通过操作系统、Web 服务、数据库、大数据、多语言开发等丰富场景案例,助力读者快速落地实践;同时详细解析 Etcd、Docker Compose、Swarm、Kubernetes 等核心开源项目,完整覆盖容器生态全景,帮助读者更快、更深入地掌握和使用容器技术。
Docker和容器化计算技术一直在不断创新和发展。十多年前,本书首版面市,见证了 Docker技术的发展,为了让读者更深入地理解和掌握新的容器技术,第4版中补充了一些新特性(如高级构建功能),同时也摒弃了一些过时的工具和项目(如Docker Machine项目)。全书分为四部分:第一部分简要介绍 Docker 的基础知识和常用命令;第二部分详述在各种典型场景中如何运用容器技术,包括操作系统、Web服务、数据库、分布式处理和大数据、编程开发以及容器云等;第三部分深入讲解高级容器技巧,包括实现原理、私有仓库、安全防护、高级网络功能和网络插件;第四部分展示与容器相关的开源项目,包括Etcd、Compose、Swarm、Kubernetes等。这些项目让使用容器技术变得更加有效率,使容器平台更加稳定和智能,共同构建了一个繁荣的容器化计算生态。
杨保华 博士,信息科技行业资深专家。兴趣方向包括分布式系统、人工智能和软件架构等,是容器、网络虚拟化、区块链等技术的早期研究和推动者。他倡导技术创新与产品、市场相结合,曾负责多个大型计算平台产品的架构和设计,以及企业系统的实现和实施。他热爱开源文化,曾积极贡献多个开源项目。
戴王剑 资深计算机专家。十多年来一直从事系统平台、计算机网络、服务器架构设计,负责过多个省级项目的架构设计。
曹亚仑 云原生SRE,十年来一直从事云平台运维稳定性工作,负责过多个重大项目的运维体系建设。现为某云厂商专有云运维专家组成员,历任存储产品线DevOps工程师、云技术经理(TAM)、故障应急值班长。2014年开始从事Docker相关技术研究,并在管控容器化及混合云DevOps项目中进行大量实践。此外,在企业级云原生运维、混合云运维稳定性体系建设及故障应急处置方面有丰富的经验。
目 录?Contents前言第一部分 基础入门第1章 初识Docker与容器 31.1 什么是Docker 31.2 为什么使用Docker 51.3 Docker与虚拟化 71.4 本章小结 8第2章 核心概念与安装配置 92.1 核心概念 92.2 安装Docker引擎 112.2.1 Docker引擎版本 112.2.2 在Linux环境下安装Docker引擎 122.3 安装Docker桌面版 132.3.1 在macOS环境下安装Docker桌面版 142.3.2 在Windows环境下安装Docker桌面版 162.4 配置Docker服务 172.5 推荐实践环境 182.6 本章小结 18第3章 使用Docker镜像 193.1 获取镜像 193.2 查看镜像信息 213.3 搜寻镜像 243.4 删除和清理镜像 243.5 创建镜像 263.6 导出和载入镜像 283.7 上传镜像 293.8 本章小结 29第4章 操作Docker容器 304.1 创建容器 304.1.1 新建容器 304.1.2 启动容器 344.1.3 新建并启动容器 344.1.4 守护态运行 354.1.5 查看容器输出 364.2 停止容器 364.3 进入容器 374.4 删除容器 394.5 导入和导出容器 394.6 查看容器 414.7 其他容器命令 424.8 本章小结 43第5章 访问Docker仓库 455.1 Docker Hub公共镜像市场 455.2 搭建本地私有仓库 495.3 本章小结 51第6章 Docker数据管理 526.1 数据卷 526.2 数据卷容器 546.3 利用数据卷容器迁移数据 556.4 本章小结 56第7章 端口映射与容器互联 577.1 通过端口映射实现容器访问 577.2 通过互联机制实现便捷互访 587.3 本章小结 61第8章 使用Dockerfile创建镜像 628.1 基本结构 628.2 指令说明 658.2.1 基本格式 658.2.2 解析器指令 668.2.3 环境变量替换 688.2.4 .dockerignore文件 698.2.5 FROM 708.2.6 RUN 718.2.7 RUN __mount 718.2.8 RUN __network 748.2.9 CMD 758.2.10 LABEL 768.2.11 EXPOSE 768.2.12 ENV 778.2.13 ADD 788.2.14 COPY 818.2.15 COPY/ADD __link 828.2.16 ENTRYPOINT 838.2.17 VOLUME 878.2.18 关于指定卷的注意事项 888.2.19 USER 888.2.20 WORKDIR 898.2.21 ARG 898.2.22 ONBUILD 938.2.23 STOPSIGNAL停止信号 948.2.24 HEALTHCHECK 948.2.25 SHELL 958.3 创建镜像 978.3.1 命令选项 978.3.2 选择父镜像 988.3.3 使用.dockerignore文件 998.3.4 多步骤创建 998.4 最佳实践 1008.5 本章小结 101第9章 高级镜像构建 1029.1 使用构建器 1029.1.1 创建构建器 1039.1.2 列出构建器 1039.1.3 使用Remote远程构建套件驱动 1049.1.4 构建器磁盘清理 1069.2 多步骤构建 1079.2.1 单步骤构建的问题 1079.2.2 使用多步骤构建 1079.3 多平台镜像 1099.4 使用GitHub Action 1119.5 本章小结 116第二部分 实战案例第10章 操作系统 11910.1 BusyBox 11910.2 Alpine 12010.3 Ubuntu 12110.4 本章小结 123第11章 Web服务与应用 12411.1 Apache 12411.2 Nginx 12911.3 Tomcat 13411.4 Jetty 13511.5 LAMP 13611.6 CMS 13911.6.1 WordPress 13911.6.2 Ghost 14011.7 本章小结 141第12章 数据库应用 14212.1 MySQL 14212.2 MongoDB 14512.3 Redis 15212.4 Memcached 15412.5 本章小结 157第13章 分布式处理与大数据平台 15813.1 RabbitMQ 15813.2 Hadoop 16113.3 Spark 16413.4 Storm 16613.5 Elasticsearch 16913.6 本章小结 172第14章 编程开发 17314.1 C/C十十 17314.1.1 GCC 17314.1.2 LLVM 17614.1.3 Clang 17614.2 Java 17814.2.1 Spring Boot 17914.2.2 相关资源 18214.3 Python 18214.3.1 使用PyPy 18414.3.2 使用Django 18414.3.3 使用Flask 19214.3.4 使用Sentry 19514.3.5 相关资源 19714.4 JavaScript 19714.4.1 使用Node.js 19714.4.2 相关资源 20114.5 Go 20114.5.1 Beego 20414.5.2 Gogs:基于Go的Git服务 20814.5.3 相关资源 20914.6 PHP 20914.6.1 PHP常用框架 21414.6.2 相关资源 21614.7 Rust 21614.8 本章小结 219第15章 容器与云服务 22015.1 云服务简介 22015.2 AWS 22115.3 谷歌云服务 22315.4 Azure 云服务 22615.5 阿里云容器服务 22815.5.1 产品架构 23115.5.2 应用场景 23115.6 腾讯云容器服务 23515.6.1 产品架构 23715.6.2 应用场景 23715.7 本章小结 240第16章 容器实战思考 24116.1 Docker为什么会成功 24116.2 研发人员该如何看待容器 24216.3 容器化开发模式 24316.4 本章小结 247第三部分 进阶技能第17章 核心实现技术 25117.1 基本架构 25117.2 命名空间 25317.3 控制组 25717.4 联合文件系统 26017.5 Linux网络虚拟化 26217.6 本章小结 264第18章 配置私有仓库 26518.1 安装Docker Registry 26518.2 配置TLS证书 26718.3 管理访问权限 26818.4 配置Registry 27218.5 批量管理镜像 27818.6 使用通知系统 28018.7 使用Harbor搭建私有镜像仓库 28318.8 本章小结 287第19章 安全防护与配置 28919.1 命名空间隔离的安全 29019.2 控制组资源控制的安全 29119.3 内核能力机制 29119.4 Docker服务端的防护 29219.5 更多安全特性的使用 29319.6 使用第三方检测工具 29419.7 本章小结 296第20章 高级网络功能 29720.1 启动与配置参数 29720.2 配置容器DNS和主机名 29920.3 容器访问控制 30120.4 映射容器端口到宿主机的实现 30420.5 配置容器网桥 30520.6 自定义网桥 30620.7 使用OpenvSwitch网桥 30720.8 创建一个点到点连接 30920.9 本章小结 310第21章 libnetwork插件化网络功能 31121.1 容器网络模型 31121.2 Docker网络命令 31221.3 构建跨主机容器网络 31521.4 本章小结 318第四部分 开源项目第22章 Etcd高可用的键值数据库 32122.1 安装和使用Etcd 32222.1.1 二进制文件方式 32222.1.2 Docker镜像方式下载 32422.1.3 数据目录 32422.1.4 服务启动参数 32522.2 使用客户端命令 32722.2.1 数据类操作 32922.2.2 非数据类操作 33022.3 Etcd集群管理 33322.3.1 构建集群 33322.3.2 集群配置优化 33622.4 本章小结 338第23章 Docker Compose多容器应用管理 33923.1 安装与卸载 34023.2 Compose模板文件 34223.3 Compose命令说明 35623.3.1 命令对象与格式 35623.3.2 命令选项 35623.3.3 命令使用说明 35723.4 Compose环境变量 36323.4.1 Compose中定义的环境变量 36323.4.2 在Compose文件中使用环境变量 36323.4.3 Compose应用案例一:Web负载均衡 36423.4.4 Compose应用案例二:大数据Spark集群 36923.5 本章小结 373第24章 Docker Swarm模式跨主机容器集群管理 37424.1 Swarm模式简介 37424.2 基本概念 37524.3 使用服务命令 38124.4 本章小结 384第25章 Kubernetes生产级容器集群平台 38525.1 主要版本历史 38625.2 核心概念 38825.2.1 操作资源 38825.2.2 控制器 38925.2.3 辅助概念 39025.3 资源抽象对象 39025.3.1 容器组 39125.3.2 服务 39225.3.3 存储卷 39325.3.4 控制器 39425.3.5 其他抽象对象 39625.4 快速体验 39825.4.1 下载minikube和kubectl 39825.4.2 启动集群 39825.4.3 查看Kubernetes服务 39925.4.4 使用部署控制器管理服务 39925.5 重要组件 40125.6 使用kubectl 40625.6.1 获取kubectl 40625.6.2 命令格式 40725.6.3 全局参数 40825.6.4 通用子命令 40925.6.5 部署命令 41425.6.6 集群管理命令 41525.6.7 诊断命令 41725.6.8 高级命令 42025.6.9 配置命令 42125.6.10 其他命令 42225.7 网络设计 42325.7.1 场景分析 42325.7.2 直接路由 42425.7.3 Overlay网络 42425.8 本章小结 425第26章 其他相关项目 42626.1 持续集成 42626.2 容器管理 43226.3 编程开发 43526.3.1 安装docker_py 43526.3.2 使用示例 43526.4 网络支持 43626.4.1 pipework 43626.4.2 Flannel项目 43626.4.3 Weave Net项目 43726.4.4 Calico 项目 43826.5 日志处理 43926.5.1 Fluentd 43926.5.2 logspout 43926.6 服务代理 44026.6.1 Traefik 44026.6.2 nginx_proxy 44226.7 标准与规范 44326.7.1 runC标准 44326.7.2 开放容器规范 44326.7.3 云应用十二要素 44426.8 其他项目 44526.8.1 OpenStack支持 44526.8.2 dockerize 44626.8.3 Unikernel 44826.9 本章小结 448附录附录A 常见问题总结 450A.1 镜像相关 450A.2 容器相关 452A.3 仓库相关 453A.4 配置相关 453A.5 Docker与虚拟化 455A.6 其他 455附录B 热门镜像介绍 457B.1 MongoDB 457B.2 MySQL 460B.3 Nginx 463B.4 Node.js 466B.5 Redis 468B.6 Ubuntu 471B.7 WordPress 472附录C Docker命令查询 476C.1 基本语法 476C.2 客户端命令 476C.3 服务端命令选项 479C.4 一张图总结Docker命令 482附录D 资源链接 483
本书详细讲解了Docker技术的来源和特点,并结合大量实践案例剖析了使用容器的经验技巧。同时,对于容器生态系统中具有代表性的开源项目,包括Etcd、Compose、Swam、Kubernetes等,也进行了详细介绍和点评。无论是要快速应用容器技术,还是想了解容器生态的相关项目,本书都很有帮助。驱动科技CEO 王鳀本书站在读者的角度对内容进行了完善的组织,详细讲解了Docker技术的前世今生和特点,同时提供了大量实践案例,帮助读者深入浅出地了解并掌握Docker 技术原理和实战经验。无疑,本书能够非常有效地帮助读者更快、更深入地掌握和使用容器技术。华为计算网络与协议实验室主任 郑凯Docker可能是有史以来普及最快的开源技术,我们丝毫不怀疑它将成为技术人员必须掌握的标准技术。如果你还不熟悉Docker,那么现在要做的就是选择一本好书学习相关知识,你会发现学习Docker丝毫不会感到枯燥,因为这正是你一直寻找的解决方案。而本书就是一个非常不错的选择。网易数帆轻舟产品总经理 陈谔Docker容器技术开启了以应用为中心的云计算时代,它让应用的交付与运维变得更简单。本书深入浅出地介绍了Docker容器技术的基础知识、原理机制、实践案例,以及与Docker生态圈相关的技术,比如生产级容器集群管理平台Kubernetes等。我相信无论是新手还是有经验的人员,这本书都能帮助到你。时速云CEO黄启功
- 新华一城书集 (微信公众号认证)
- 上海新华书店官方微信书店
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...