关于本书的内容有任何问题,请联系 刘博
第1章 Docker基础 1 1.1 Docker的概念 2 1.1.1 什么是Docker 2 1.1.2 镜像与容器 2 1.1.3 容器与虚拟机 3 1.1.4 Docker引擎 3 1.1.5 Docker生态系统 4 1.2 Docker的应用 4 1.2.1 实现应用程序快速、一致的交付 4 1.2.2 响应式部署和应用程序 5 1.2.3 运行更多的工作负载 5 1.2.4 部署微服务应用 5 1.3 Docker架构 5 1.3.1 Docker客户端 6 1.3.2 Docker守护进程 6 1.3.3 Docker注册中心 6 1.3.4 Docker对象 6 1.4 Docker底层技术 7 1.4.1 名称空间 7 1.4.2 控制组 8 1.4.3 联合文件系统 9 1.4.4 容器格式 9 1.5 安装Docker 10 1.5.1 Docker的版本 10 1.5.2 Docker所支持的平台 11 1.5.3 安装Docker的准备工作 11 1.5.4 使用软件仓库安装Docker CE 14 1.5.5 通过便捷脚本安装Docker CE 15 1.5.6 卸载Docker 16 1.5.7 安装Docker之后的配置 16 1.6 docker命令行的使用 19 1.6.1 docker命令行接口类型 19 1.6.2 docker命令列表 19 1.6.3 docker命令的基本用法 21 1.6.4 docker命令示例 22 1.7 Docker API 22 1.7.1 Docker API类型 22 1.7.2 使用Docker API 23 1.8 Docker配置文件格式 23 1.8.1 JSON格式 23 1.8.2 YAML格式 24 1.9 习题 26 第2章 Docker镜像 27 2.1 Docker镜像基础 28 2.1.1 进一步理解镜像的概念 28 2.1.2 镜像的基本信息与标识 28 2.1.3 镜像描述文件Dockerfile 29 2.1.4 父镜像与基础镜像 29 2.1.5 镜像的分层结构 30 2.1.6 镜像操作命令 32 2.2 Docker镜像的基本操作 32 2.2.1 拉取镜像 32 2.2.2 显示镜像列表 33 2.2.3 设置镜像标签 35 2.2.4 查看镜像详细信息 36 2.2.5 查看镜像的构建历史以验证 镜像分层 36 2.2.6 查找镜像 37 2.2.7 删除本地镜像 38 2.2.8 Docker镜像的导入和导出 39 2.3 Docker注册中心 40 2.3.1 Docker注册中心与仓库 40 2.3.2 Docker Hub 41 2.3.3 阿里云的容器镜像服务 47 2.3.4 私有Docker注册中心 49 2.4 习题 51 第3章 Docker容器 52 3.1 Docker容器基础 53 3.1.1 进一步理解容器的概念 53 3.1.2 容器的基本信息与标识 53 3.1.3 可写的容器层 54 3.1.4 磁盘上的容器大小 54 3.1.5 “写时拷贝”策略 55 3.1.6 容器操作命令 58 3.2 Docker容器的基本操作 58 3.2.1 创建和运行容器 58 3.2.2 启动和停止容器 64 3.2.3 查看容器信息 65 3.2.4 进入容器执行操作 67 3.2.5 删除容器 69 3.2.6 导出与导入容器 69 3.2.7 基于容器创建镜像 70 3.3 限制容器运行的资源 72 3.3.1 限制容器的内存使用 72 3.3.2 限制容器的CPU使用 74 3.3.3 块IO带宽限制 75 3.3.4 资源限制的实现机制——控制组 77 3.3.5 动态更改容器的配置 77 3.4 容器监控 78 3.4.1 Docker容器监控命令 78 3.4.2 使用cAdvisor监控容器 79 3.5 容器的日志管理 81 3.5.1 使用docker logs命令查看容器 日志 81 3.5.2 配置日志驱动重定向容器的 日志记录 82 3.6 习题 83 第4章 Docker网络 84 4.1 Docker网络基础 85 4.1.1 Docker容器网络模型 85 4.1.2 Linux网络基础 87 4.1.3 单主机与多主机的Docker网络 88 4.1.4 docker run命令的网络配置用法 88 4.1.5 docker network命令的网络 配置用法 89 4.2 配置容器的网络连接 90 4.2.1 使用默认桥接网络 90 4.2.2 使用主机网络 94 4.2.3 使用none网络模式 95 4.2.4 使用container网络模式 96 4.2.5 用户自定义桥接网络 97 4.3 容器与外部的网络通信 105 4.3.1 容器访问外部网络 105 4.3.2 从外部网络访问容器 106 4.4 容器之间的网络通信 109 4.4.1 容器之间的网络通信的解决 方案 109 4.4.2 以传统方式建立容器连接 110 4.5 习题 113 第5章 Docker存储 114 5.1 Docker存储驱动及其选择 115 5.1.1 概述 115 5.1.2 Docker版本所支持的存储驱动 116 5.1.3 Docker存储驱动所支持的底层 文件系统 116 5.1.4 选择存储驱动需考虑的其他 事项 117 5.1.5 检查当前的存储驱动 117 5.2 使用overlay2存储驱动 118 5.2.1 使用overlay2存储驱动的要求 118 5.2.2 配置Docker使用overlay2存储 驱动 119 5.2.3 overlay2存储驱动的工作机制 122 5.2.4 容器使用overlay2存储驱动的 读写机制 126 5.2.5 OverlayFS与Docker性能 127 5.3 迁移Docker根目录 127 5.4 Docker存储的挂载类型 128 5.4.1 Docker卷与存储驱动 128 5.4.2 选择合适的挂载类型 129 5.4.3 docker run命令的存储配置 基本用法 130 5.5 使用Docker卷 130 5.5.1 卷的优势 130 5.5.2 选择-v或--mount选项 131 5.5.3 创建和管理卷 131 5.5.4 启动带有卷的容器 132 5.5.5 使用容器填充卷 133 5.5.6 使用只读卷 133 5.5.7 删除卷 133 5.6 使用绑定挂载 134 5.6.1 绑定挂载的功能限制 134 5.6.2 选择-v或--mount选项 134 5.6.3 容器使用绑定挂载 135 5.6.4 使用只读的绑定挂载 136 5.6.5 配置SELinux标签 137 5.7 使用tmpfs挂载 137 5.7.1 tmpfs挂载的特点 138 5.7.2 选择--tmpfs或--mount选项 138 5.7.3 在容器中使用tmpfs挂载 138 5.7.4 指定tmpfs参数 139 5.8 使用卷容器 139 5.8.1 通过卷容器实现容器之间的 数据共享 139 5.8.2 通过卷容器来备份、恢复和迁移 数据卷 140 5.9 容器的数据共享 140 5.9.1 容器与主机共享数据 140 5.9.2 容器之间共享数据 141 5.10 习题 141 第6章 开发基于Docker的 应用程序 143 6.1 开发Docker镜像 144 6.1.1 进一步了解Dockerfile 144 6.1.2 通过Dockerfile构建镜像的基本 方法 144 6.1.3 Dockerfile常用指令 146 6.1.4 Dockerfile示例 152 6.1.5 基于Dockerfile构建镜像 153 6.1.6 创建基础镜像 156 6.1.7 使用多阶段构建 157 6.1.8 编写Dockerfile的通用准则和 建议 159 6.1.9 管理镜像 163 6.2 Docker的应用程序开发准则 163 6.2.1 尽可能缩减Docker镜像的 大小 163 6.2.2 持久化应用程序数据 164 6.2.3 尽可能使用Swarm集群服务 164 6.2.4 测试和部署时使用持续集成和 持续部署 164 6.2.5 了解开发环境和生产环境的 区别 165 6.3 将应用程序Docker化 165 6.3.1 Docker化应用程序的基本流程 165 6.3.2 将Node.js应用程序Docker化 165 6.3.3 开发Node.js应用程序 166 6.3.4 创建应用程序的镜像 169 6.3.5 基于应用程序镜像运行容器 171 6.4 习题 171 第7章 自动化构建与持续集成 173 7.1 概述 174 7.1.1 镜像的自动化构建 174 7.1.2 持续集成 175 7.2 Docker Hub结合GitHub实现 自动化构建 176 7.2.1 在GitHub上创建代码仓库 176 7.2.2 将Docker Hub连接到GitHub 账户 178 7.2.3 在Docker Hub上创建镜像 仓库 179 7.2.4 配置自动化构建选项和规则 181 7.2.5 创建自动化构建项目 182 7.2.6 基于代码仓库标签的自动化 构建 184 7.2.7 通过构建触发器触发自动化 构建 186 7.2.8 使用Webhook 186 7.3 通过阿里云镜像服务实现自动化 构建 187 7.3.1 设置代码源 187 7.3.2 创建代码仓库 189 7.3.3 开始构建 190 7.4 基于Jenkins和Docker组建 持续集成环境 192 7.4.1 准备工作 192 7.4.2 部署GitLab服务器 193 7.4.3 部署Docker注册服务器 195 7.4.4 部署并配置Jenkins服务器 195 7.4.5 新建Jenkins项目并进行构建 200 7.4.6 通过GitLab自动触发Jenkins 构建项目 203 7.4.7 利用Jenkins的Docker插件来 构建和推送镜像 207 7.5 实现应用程序的持续集成和 自动化部署 209 7.5.1 准备工作 209 7.5.2 部署持续集成环境 210 7.5.3 准备源代码并将其提交到代码 仓库 211 7.5.4 为Tale应用程序构建镜像并 推送到Docker注册服务器 211 7.5.5 新建Maven项目进行构建并 实现自动化部署 212 7.5.6 实现项目的自动化构建 216 7.6 习题 217 第8章 Docker容器编排 218 8.1 Docker容器编排基础 219 8.1.1 Docker Compose的架构 219 8.1.2 使用Docker Compose的基本 步骤 220 8.1.3 Docker Compose的特性 220 8.1.4 Docker Compose的应用场合 220 8.1.5 Docker Compose安装 221 8.1.6 Docker Compose入门示例 222 8.2 Compose文件 225 8.2.1 Compose文件格式的不同版本 225 8.2.2 Compose文件结构 226 8.2.3 服务定义 227 8.2.4 卷存储定义 231 8.2.5 网络定义 232 8.3 Compose命令行 232 8.3.1 Compose命令行格式 232 8.3.2 Compose主要命令简介 233 8.4 Compose的环境变量 235 8.4.1 Compose使用环境变量的方式 236 8.4.2 不同位置定义的环境变量的 优先级 237 8.5 在Compose中设置网络 238 8.5.1 默认网络的配置 238 8.5.2 更新容器 239 8.5.3 使用links选项 239 8.5.4 指定自定义网络 239 8.5.5 使用现有网络 240 8.6 容器编排示例 240 8.6.1 示例一:实现Web负载均衡 240 8.6.2 示例二:在Linux上部署 ASP.NET与SQL Server 242 8.7 共享Compose通用配置 246 8.7.1 使用多个Compose文件 246 8.7.2 Compose文件追加和覆盖 配置规则 248 8.8 在生产环境中使用Compose 248 8.8.1 针对生产环境修改Compose 文件 248 8.8.2 部署应用程序更改 249 8.8.3 在单主机上运行Compose 249 8.9 习题 249 第9章 多主机部署与管理 250 9.1 通过Docker Machine部署和 管理多主机 251 9.1.1 Docker Machine概述 251 9.1.2 Docker Machine安装 252 9.1.3 Docker Machine驱动 252 9.1.4 通过Docker Machine远程 安装和部署Docker 253 9.1.5 通过Docker Machine管理 Docker主机 255 9.2 跨主机容器网络 256 9.2.1 容器的跨主机通信方式 256 9.2.2 使用macvlan网络 257 9.2.3 使用overlay网络 260 9.3 跨主机监控 266 9.3.1 使用Weave Scope进行故障 诊断与监控 266 9.3.2 Prometheus基础 270 9.3.3 部署Prometheus系统监控 Docker主机和容器 273 9.4 习题 285 第10章 Docker Swarm 集群 287 10.1 Docker Swarm基础 288 10.1.1 Docker Swarm模式 288 10.1.2 Docker Swarm主要概念 288 10.1.3 Swarm节点工作机制 290 10.1.4 Swarm服务工作机制 291 10.1.5 使用PKI管理Swarm安全性 292 10.1.6 Swarm任务状态 293 10.2 Docker Swarm基本操作 294 10.2.1 设置运行环境 294 10.2.2 创建Swarm集群 295 10.2.3 将节点加入Swarm集群 295 10.2.4 将服务部署到Swarm集群 296 10.2.5 增加和缩减服务 297 10.2.6 故障迁移与重新平衡 298 10.2.7 删除Swarm服务 299 10.2.8 对服务进行滚动更新 300 10.2.9 管理节点 302 10.2.10 发布服务端口 304 10.3 管理Swarm服务网络 306 10.3.1 配置overlay网络 306 10.3.2 创建和配置连接overlay 网络的Swarm服务 308 10.3.3 服务发现与内部容器之间的 通信 309 10.3.4 在overlay网络上使用 独立容器 311 10.4 通过堆栈在Swarm集群中部署 分布式应用 311 10.4.1 Docker堆栈概述 312 10.4.2 示例一:Swarm堆栈部署 入门 314 10.4.3 示例二:Swarm集群多节点的 堆栈部署 317 10.5 管理敏感数据 319 10.5.1 Docker机密数据的应用 320 10.5.2 Docker如何管理机密数据 320 10.5.3 Docker机密数据管理命令 320 10.5.4 示例一:Docker机密数据 操作入门 321 10.5.5 示例二:配置Nginx服务使用 机密数据 322 10.5.6 在Compose文件中使用Docker 机密数据 324 10.5.7 将Docker机密数据置入 镜像中 326 10.6 存储服务配置数据 326 10.6.1 Docker配置数据概述 326 10.6.2 示例一:Docker配置数据操作 入门 327 10.6.3 示例二:配置Nginx服务使用 配置数据 327 10.6.4 替换服务的配置数据 328 10.7 习题 329 第11章 生产环境中的Docker 运维 330 11.1 配置和管理Docker守护进程 331 11.1.1 配置并运行Docker守护 进程 331 11.1.2 排查Docker守护进程故障 332 11.1.3 使用systemd控制Docker 334 11.2 配置Docker对象 335 11.2.1 配置对象使用自定义元数据 335 11.2.2 删除不用的对象 336 11.2.3 格式化命令和日志的输出 336 11.3 Docker安全 337 11.3.1 Docker安全机制 337 11.3.2 保护Docker守护进程套接字 340 11.3.3 其他Docker安全措施 342 11.4 使用插件扩展Docker 343 11.4.1 Docker插件概述 343 11.4.2 Docker插件安装和使用示例 344 11.4.3 Docker插件开发示例 345 11.5 离线部署和使用Docker 346 11.5.1 离线安装Docker 346 11.5.2 在离线环境中导入镜像 347 11.5.3 离线建立私有Docker注册 中心 348 11.6 习题 348
本书通过不断调整与优化,形成了结构合理、循序渐进、容量适度的10个教学单元:计算机基础知识、计算机硬件基础、计...
本书是一本采用任务驱动式体例编写的ECharts数据可视化技术教材,以通俗易懂的语言和丰富实用的任务,帮助读者...
本书是面向PHP语言和MySQL数据库初学者的一本入门教材,使用通俗易懂的语言、丰富的图解和实用的案例,详细讲...
本书为Java基础入门教材,适合初学者使用。全书共13章,第1~2章主要讲解Java技术的一些基础知识,内容包...
本书全面、系统地介绍银河麒麟桌面操作系统的基础知识、WPS Office的基本操作,以及其他信息技术的相关内容...
我要评论