封面
版权信息
内容提要
前言
第1章 Docker基础
1.1 Docker的概念
1.1.1 什么是Docker
1.1.2 镜像与容器
1.1.3 容器与虚拟机
1.1.4 Docker引擎
1.1.5 Docker生态系统
1.2 Docker的应用
1.2.1 实现应用程序快速、一致的交付
1.2.2 响应式部署和应用程序
1.2.3 运行更多的工作负载
1.2.4 部署微服务应用
1.3 Docker架构
1.3.1 Docker客户端
1.3.2 Docker守护进程
1.3.3 Docker注册中心
1.3.4 Docker对象
1.4 Docker底层技术
1.4.1 名称空间
1.4.2 控制组
1.4.3 联合文件系统
1.4.4 容器格式
1.5 安装Docker
1.5.1 Docker的版本
1.5.2 Docker所支持的平台
1.5.3 安装Docker的准备工作
1.5.4 使用软件仓库安装Docker CE
1.5.5 通过便捷脚本安装Docker CE
1.5.6 卸载Docker
1.5.7 安装Docker之后的配置
1.6 docker命令行的使用
1.6.1 docker命令行接口类型
1.6.2 docker命令列表
1.6.3 docker命令的基本用法
1.6.4 docker命令示例
1.7 Docker API
1.7.1 Docker API类型
1.7.2 使用Docker API
1.8 Docker配置文件格式
1.8.1 JSON格式
1.8.2 YAML格式
1.9 习题
第2章 Docker镜像
2.1 Docker镜像基础
2.1.1 进一步理解镜像的概念
2.1.2 镜像的基本信息与标识
2.1.3 镜像描述文件Dockerfile
2.1.4 父镜像与基础镜像
2.1.5 镜像的分层结构
2.1.6 镜像操作命令
2.2 Docker镜像的基本操作
2.2.1 拉取镜像
2.2.2 显示镜像列表
2.2.3 设置镜像标签
2.2.4 查看镜像详细信息
2.2.5 查看镜像的构建历史以验证镜像分层
2.2.6 查找镜像
2.2.7 删除本地镜像
2.2.8 Docker镜像的导入和导出
2.3 Docker注册中心
2.3.1 Docker注册中心与仓库
2.3.2 Docker Hub
2.3.3 阿里云的容器镜像服务
2.3.4 私有Docker注册中心
2.4 习题
第3章 Docker容器
3.1 Docker容器基础
3.1.1 进一步理解容器的概念
3.1.2 容器的基本信息与标识
3.1.3 可写的容器层
3.1.4 磁盘上的容器大小
3.1.5 “写时拷贝”策略
3.1.6 容器操作命令
3.2 Docker容器的基本操作
3.2.1 创建和运行容器
3.2.2 启动和停止容器
3.2.3 查看容器信息
3.2.4 进入容器执行操作
3.2.5 删除容器
3.2.6 导出与导入容器
3.2.7 基于容器创建镜像
3.3 限制容器运行的资源
3.3.1 限制容器的内存使用
3.3.2 限制容器的CPU使用
3.3.3 块IO带宽限制
3.3.4 资源限制的实现机制——控制组
3.3.5 动态更改容器的配置
3.4 容器监控
3.4.1 Docker容器监控命令
3.4.2 使用cAdvisor监控容器
3.5 容器的日志管理
3.5.1 使用docker logs命令查看容器日志
3.5.2 配置日志驱动重定向容器的日志记录
3.6 习题
第4章 Docker网络
4.1 Docker网络基础
4.1.1 Docker容器网络模型
4.1.2 Linux网络基础
4.1.3 单主机与多主机的Docker网络
4.1.4 docker run命令的网络配置用法
4.1.5 docker network命令的网络配置用法
4.2 配置容器的网络连接
4.2.1 使用默认桥接网络
4.2.2 使用主机网络
4.2.3 使用none网络模式
4.2.4 使用container网络模式
4.2.5 用户自定义桥接网络
4.3 容器与外部的网络通信
4.3.1 容器访问外部网络
4.3.2 从外部网络访问容器
4.4 容器之间的网络通信
4.4.1 容器之间的网络通信的解决方案
4.4.2 以传统方式建立容器连接
4.5 习题
第5章 Docker存储
5.1 Docker存储驱动及其选择
5.1.1 概述
5.1.2 Docker版本所支持的存储驱动
5.1.3 Docker存储驱动所支持的底层文件系统
5.1.4 选择存储驱动需考虑的其他事项
5.1.5 检查当前的存储驱动
5.2 使用overlay2存储驱动
5.2.1 使用overlay2存储驱动的要求
5.2.2 配置Docker使用overlay2存储驱动
5.2.3 overlay2存储驱动的工作机制
5.2.4 容器使用overlay2存储驱动的读写机制
5.2.5 OverlayFS与Docker性能
5.3 迁移Docker根目录
5.4 Docker存储的挂载类型
5.4.1 Docker卷与存储驱动
5.4.2 选择合适的挂载类型
5.4.3 docker run命令的存储配置基本用法
5.5 使用Docker卷
5.5.1 卷的优势
5.5.2 选择-v或--mount选项
5.5.3 创建和管理卷
5.5.4 启动带有卷的容器
5.5.5 使用容器填充卷
5.5.6 使用只读卷
5.5.7 删除卷
5.6 使用绑定挂载
5.6.1 绑定挂载的功能限制
5.6.2 选择-v或--mount选项
5.6.3 容器使用绑定挂载
5.6.4 使用只读的绑定挂载
5.6.5 配置SELinux标签
5.7 使用tmpfs挂载
5.7.1 tmpfs挂载的特点
5.7.2 选择--tmpfs或--mount选项
5.7.3 在容器中使用tmpfs挂载
5.7.4 指定tmpfs参数
5.8 使用卷容器
5.8.1 通过卷容器实现容器之间的数据共享
5.8.2 通过卷容器来备份、恢复和迁移数据卷
5.9 容器的数据共享
5.9.1 容器与主机共享数据
5.9.2 容器之间共享数据
5.10 习题
第6章 开发基于Docker的应用程序
6.1 开发Docker镜像
6.1.1 进一步了解Dockerfile
6.1.2 通过Dockerfile构建镜像的基本方法
6.1.3 Dockerfile常用指令
6.1.4 Dockerfile示例
6.1.5 基于Dockerfile构建镜像
6.1.6 创建基础镜像
6.1.7 使用多阶段构建
6.1.8 编写Dockerfile的通用准则和建议
6.1.9 管理镜像
6.2 Docker的应用程序开发准则
6.2.1 尽可能缩减Docker镜像的大小
6.2.2 持久化应用程序数据
6.2.3 尽可能使用Swarm集群服务
6.2.4 测试和部署时使用持续集成和持续部署
6.2.5 了解开发环境和生产环境的区别
6.3 将应用程序Docker化
6.3.1 Docker化应用程序的基本流程
6.3.2 将Node.js应用程序Docker化
6.3.3 开发Node.js应用程序
6.3.4 创建应用程序的镜像
6.3.5 基于应用程序镜像运行容器
6.4 习题
第7章 自动化构建与持续集成
7.1 概述
7.1.1 镜像的自动化构建
7.1.2 持续集成
7.2 Docker Hub结合GitHub实现自动化构建
7.2.1 在GitHub上创建代码仓库
7.2.2 将Docker Hub连接到GitHub账户
7.2.3 在Docker Hub上创建镜像仓库
7.2.4 配置自动化构建选项和规则
7.2.5 创建自动化构建项目
7.2.6 基于代码仓库标签的自动化构建
7.2.7 通过构建触发器触发自动化构建
7.2.8 使用Webhook
7.3 通过阿里云镜像服务实现自动化构建
7.3.1 设置代码源
7.3.2 创建代码仓库
7.3.3 开始构建
7.4 基于Jenkins和Docker组建持续集成环境
7.4.1 准备工作
7.4.2 部署GitLab服务器
7.4.3 部署Docker注册服务器
7.4.4 部署并配置Jenkins服务器
7.4.5 新建Jenkins项目并进行构建
7.4.6 通过GitLab自动触发Jenkins构建项目
7.4.7 利用Jenkins的Docker插件来构建和推送镜像
7.5 实现应用程序的持续集成和自动化部署
7.5.1 准备工作
7.5.2 部署持续集成环境
7.5.3 准备源代码并将其提交到代码仓库
7.5.4 为Tale应用程序构建镜像并推送到Docker注册服务器
7.5.5 新建Maven项目进行构建并实现自动化部署
7.5.6 实现项目的自动化构建
7.6 习题
第8章 Docker容器编排
8.1 Docker容器编排基础
8.1.1 Docker Compose的架构
8.1.2 使用Docker Compose的基本步骤
8.1.3 Docker Compose的特性
8.1.4 Docker Compose的应用场合
8.1.5 Docker Compose安装
8.1.6 Docker Compose入门示例
8.2 Compose文件
8.2.1 Compose文件格式的不同版本
8.2.2 Compose文件结构
8.2.3 服务定义
8.2.4 卷存储定义
8.2.5 网络定义
8.3 Compose命令行
8.3.1 Compose命令行格式
8.3.2 Compose主要命令简介
8.4 Compose的环境变量
8.4.1 Compose使用环境变量的方式
8.4.2 不同位置定义的环境变量的优先级
8.5 在Compose中设置网络
8.5.1 默认网络的配置
8.5.2 更新容器
8.5.3 使用links选项
8.5.4 指定自定义网络
8.5.5 使用现有网络
8.6 容器编排示例
8.6.1 示例一:实现Web负载均衡
8.6.2 示例二:在Linux上部署ASP.NET与SQL Server
8.7 共享Compose通用配置
8.7.1 使用多个Compose文件
8.7.2 Compose文件追加和覆盖配置规则
8.8 在生产环境中使用Compose
8.8.1 针对生产环境修改Compose文件
8.8.2 部署应用程序更改
8.8.3 在单主机上运行Compose
8.9 习题
第9章 多主机部署与管理
9.1 通过Docker Machine部署和管理多主机
9.1.1 Docker Machine概述
9.1.2 Docker Machine安装
9.1.3 Docker Machine驱动
9.1.4 通过Docker Machine远程安装和部署Docker
9.1.5 通过Docker Machine管理Docker主机
9.2 跨主机容器网络
9.2.1 容器的跨主机通信方式
9.2.2 使用macvlan网络
9.2.3 使用overlay网络
9.3 跨主机监控
9.3.1 使用Weave Scope进行故障诊断与监控
9.3.2 Prometheus基础
9.3.3 部署Prometheus系统监控Docker主机和容器
9.4 习题
第10章 Docker Swarm集群
10.1 Docker Swarm基础
10.1.1 Docker Swarm模式
10.1.2 Docker Swarm主要概念
10.1.3 Swarm节点工作机制
10.1.4 Swarm服务工作机制
10.1.5 使用PKI管理Swarm安全性
10.1.6 Swarm任务状态
10.2 Docker Swarm基本操作
10.2.1 设置运行环境
10.2.2 创建Swarm集群
10.2.3 将节点加入Swarm集群
10.2.4 将服务部署到Swarm集群
10.2.5 增加和缩减服务
10.2.6 故障迁移与重新平衡
10.2.7 删除Swarm服务
10.2.8 对服务进行滚动更新
10.2.9 管理节点
10.2.10 发布服务端口
10.3 管理Swarm服务网络
10.3.1 配置overlay网络
10.3.2 创建和配置连接overlay网络的Swarm服务
10.3.3 服务发现与内部容器之间的通信
10.3.4 在overlay网络上使用独立容器
10.4 通过堆栈在Swarm集群中部署分布式应用
10.4.1 Docker堆栈概述
10.4.2 示例一:Swarm堆栈部署入门
10.4.3 示例二:Swarm集群多节点的堆栈部署
10.5 管理敏感数据
10.5.1 Docker机密数据的应用
10.5.2 Docker如何管理机密数据
10.5.3 Docker机密数据管理命令
10.5.4 示例一:Docker机密数据操作入门
10.5.5 示例二:配置Nginx服务使用机密数据
10.5.6 在Compose文件中使用Docker机密数据
10.5.7 将Docker机密数据置入镜像中
10.6 存储服务配置数据
10.6.1 Docker配置数据概述
10.6.2 示例一:Docker配置数据操作入门
10.6.3 示例二:配置Nginx服务使用配置数据
10.6.4 替换服务的配置数据
10.7 习题
第11章 生产环境中的Docker运维
11.1 配置和管理Docker守护进程
11.1.1 配置并运行Docker守护进程
11.1.2 排查Docker守护进程故障
11.1.3 使用systemd控制Docker
11.2 配置Docker对象
11.2.1 配置对象使用自定义元数据
11.2.2 删除不用的对象
11.2.3 格式化命令和日志的输出
11.3 Docker安全
11.3.1 Docker安全机制
11.3.2 保护Docker守护进程套接字
11.3.3 其他Docker安全措施
11.4 使用插件扩展Docker
11.4.1 Docker插件概述
11.4.2 Docker插件安装和使用示例
11.4.3 Docker插件开发示例
11.5 离线部署和使用Docker
11.5.1 离线安装Docker
11.5.2 在离线环境中导入镜像
11.5.3 离线建立私有Docker注册中心
11.6 习题
更新时间:2025-04-02 16:09:57