工业和信息化精品系列教材——云计算技术

Docker容器技术 配置、部署与应用(第2版)(微课版)

Docker、容器技术、系统运维
分享 推荐 0 收藏 0 阅读 37
彭晓东 , 岳晓瑞 , 杜毅 (主编) 978-7-115-66092-3

关于本书的内容有任何问题,请联系 初美呈

在内容组织方面,本书采用项目式结构,每个项目通过学习目标明确教学任务。项目中每个任务分为任务说明、知识引入和任务实现三个部分,每个项目的最后是项目实训和项目总结。
在内容编写方面,本书重点突出、难点分散、循序渐进。本书在介绍Docker基本知识和使用的基础上,以Docker Engine为例,重点讲解Docker在应用程序开发和部署方面的实施,包括多容器应用程序定义、应用程序容器化、镜像自动化构建与持续集成,以及应用程序的Kubernetes集群部署。
本书的任务实现环节含有大量动手实践内容,实例涉及Java、Python、Node.js等语言。

内容摘要

本书从Docker运维工程师的视角系统地讲解Docker容器的配置、部署与应用,共分为8个项目,包括Docker安装、Docker快速入门、Docker网络与存储配置、Docker容器与守护进程运维、定义和运行多容器应用程序、应用程序容器化、自动化构建与持续集成、Kubernetes部署容器化应用程序。本书重点讲解Docker在应用程序开发和部署方面的实施。本书内容丰富,注重实践性和可操作性,项目中的每个任务都有相应的操作示范,并穿插大量实例,便于读者快速上手。 本书可作为职业院校计算机相关专业课程的教材,也可作为软件开发人员、IT实施和运维工程师学习Docker容器技术的参考书,还可作为相关机构的培训教材。

目录

目录
项目1 1
Docker安装 1
任务1.1 了解Docker 1
任务说明 1
知识引入 1
1.1.1 什么是Docker 1
1.1.2 Docker的优势 2
1.1.3 Docker架构 2
1.1.4 应用程序部署方式的演变 4
任务实现 4
任务1.1.1 了解Docker用例 4
任务1.1.2 调查国内的Docker应用现状 6
任务1.2 安装Docker 8
任务说明 8
知识引入 8
1.2.1 Docker Engine 8
1.2.2 Docker Desktop 9
任务实现 11
任务1.2.1 安装Docker Engine 11
任务1.2.2 安装Docker Engine之后的配置 14
任务1.3 Docker命令行使用 15
任务说明 15
知识引入 15
1.3.1 Docker的命令行接口 15
1.3.2 docker命令列表 15
任务实现 17
任务1.3.1 熟悉docker命令的基本语法 17
任务1.3.2 运行一个容器 19
项目实训 19
项目实训1 安装Docker Engine 20
项目实训2 使用docker命令 20
项目总结 20
项目2 21
Docker快速入门 21
任务2.1 Docker镜像的使用与操作 21
任务说明 21
知识引入 22
2.1.1 什么是镜像 22
2.1.2 镜像的基本信息 22
2.1.3 镜像描述文件Dockerfile 23
2.1.4 Docker镜像操作命令 24
任务实现 25
任务2.1.1 掌握镜像的基本操作 25
任务2.1.2 验证镜像的分层结构 27
任务2.2 Docker容器的使用与操作 28
任务说明 28
知识引入 29
2.2.1 什么是容器 29
2.2.1 容器的基本信息 29
2.2.3 可写的容器层 29
2.2.4 Docker容器操作命令 30
2.2.5 Docker容器的生命周期 31
任务实现 32
任务2.2.1 创建并同时启动容器 32
任务2.2.2 掌握容器的其他常用操作 34
任务2.3 Docker注册中心的使用与操作 37
任务说明 37
知识引入 37
2.3.1 Docker注册中心 37
2.3.2 镜像仓库 38
任务实现 39
任务2.3.1 配置镜像加速器 39
任务2.3.2 使用阿里云容器镜像服务 40
任务2.3.3 自建Docker注册中心 44
任务2.4 构建镜像 45
任务说明 45
知识引入 46
2.4.1 基于容器生成镜像 46
2.4.2 Dockerfile格式 46
2.4.3 Dockerfile常用指令 47
2.4.4 区分RUN、CMD和ENTRYPOINT指令 52
2.4.5 镜像构建工具 53
任务实现 54
任务2.4.1 基于Dockerfile构建镜像 54
任务2.4.2 测试构建缓存 56
项目实训 57
项目实训1 Ubuntu镜像操作 57
项目实训2 Apache Web容器操作 57
项目实训3 使用自建的Docker注册中心 58
项目实训4 构建在Ubuntu系统上运行Nginx的镜像 58
项目总结 58
项目3 60
Docker网络与存储配置 60
任务3.1 Docker网络配置与管理 60
任务说明 60
知识引入 61
3.1.1 Docker网络概述 61
3.1.2 容器的网络模式 61
3.1.3 容器之间的通信 65
3.1.4 容器与外部网络之间的通信 65
3.1.5 容器的网络配置语法 66
3.1.6 Docker网络管理语法 67
任务实现 67
任务3.1.1 将容器连接到默认桥接网络 67
任务3.1.2 创建用户自定义桥接网络并连接容器 70
任务3.1.3 设置端口映射以允许外部网络访问容器 76
任务3.2 Docker存储配置与管理 77
任务说明 77
知识引入 77
3.2.1 容器本地存储与Docker存储驱动 77
3.2.2 容器与数据存储持久化 78
3.2.3 挂载类型及其选择 79
3.2.4 Docker卷管理命令 81
3.2.5 容器的文件系统挂载语法 81
任务实现 82
任务3.2.1 容器使用卷存储 82
任务3.2.2 容器使用绑定挂载 86
项目实训 89
项目实训1 创建和使用用户自定义桥接网络 89
项目实训2 使用Docker卷 90
项目实训3 使用绑定挂载 90
项目实训4 测试容器填充卷 90
项目总结 90
项目4 91
Docker容器与守护 进程运维 91
任务4.1 Docker容器配置进阶 91
任务说明 91
知识引入 91
4.1.1 容器的资源限制 91
4.1.2 容器的自动重启 95
4.1.3 在容器中运行多个服务 95
4.1.4 容器健康检查机制 95
4.1.5 运行时选项覆盖Dockerfile指令 96
任务实现 98
任务4.1.1 配置容器的自动重启策略 98
任务4.1.2 在容器中使用supervisord管理PHP和Nginx服务 100
任务4.1.3 测试容器健康检查功能 101
任务4.2 容器监控与日志管理 102
任务说明 102
知识引入 102
4.2.1 Docker监控工具 102
4.2.2 Docker容器日志工具 102
4.2.3 容器日志驱动 103
任务实现 105
任务4.2.1 熟悉Docker监控命令的使用 105
任务4.2.2 使用cAdvisor监控容器 105
任务4.2.3 将容器的日志重定向到Linux日志系统 108
任务4.2.4 使用Logspout收集所有容器的日志 109
任务4.3 配置和管理Docker守护进程 111
任务说明 111
知识引入 112
4.3.1 Docker守护进程的启动 112
4.3.2 Docker守护进程的配置 113
4.3.3 Docker的实时恢复功能 114
任务实现 115
任务4.3.1 从Docker守护进程获取实时事件 115
任务4.3.2 查看Docker守护进程日志 116
任务4.3.3 测试Docker的实时恢复功能 116
任务4.3.4 开启Docker守护进程的远程访问 117
任务4.4 管理Docker对象 118
任务说明 118
知识引入 118
任务实现 118
任务4.4.1 管理Docker对象的标记 118
任务4.4.2 删除未使用的Docker对象 119
项目实训 119
项目实训1 容器的高级配置 119
项目实训2 实施容器监控 119
项目实训3 管理容器日志 120
项目实训4 配置和管理Docker守护进程 120
项目总结 120
项目5 121
定义和运行多容器应用程序 121
任务5.1 Compose入门 121
任务说明 121
知识引入 121
5.1.1 为什么要使用Compose 121
5.1.2 Compose的工作机制 122
5.1.3 Compose的特点 124
5.1.4 Compose的应用场景 124
5.1.5 Compose的版本演变 125
5.1.6 使用Compose的基本步骤 126
任务实现 使用Compose部署WordPress 126
任务5.2 编写Compose文件 129
任务说明 129
知识引入 129
5.2.1 Compose文件结构 129
5.2.2 服务定义 130
5.2.3 网络定义 135
5.2.4 卷定义 136
任务实现 137
任务5.2.1 编写定义单个服务的Compose文件 137
任务5.2.2 编写定义多个服务的Compose文件 139
任务5.3 使用Compose部署和管理应用程序 142
任务说明 142
知识引入 142
5.3.1 Compose命令行语法格式 142
5.3.2 Compose常用命令 143
5.3.3 Compose环境变量 145
5.3.4 组合使用多个Compose文件 146
任务实现 148
任务5.3.1 从源代码开始构建、部署和管理应用程序 148
任务5.3.2 更改Compose应用程序以适应不同环境 152
项目实训 154
项目实训1 使用Compose部署Web负载均衡应用程序 154
项目实训2 从源代码开始构建、部署和管理应用程序 155
项目总结 155
项目6 156
应用程序容器化 156
任务6.1 构建应用程序镜像 156
任务说明 156
知识引入 156
6.1.1 编写Dockerfile应遵循的准则和建议 156
6.1.2 创建自己的基础镜像 158
6.1.3 确定应用程序镜像包含的内容 159
6.1.4 应用程序镜像的构建和管理 159
任务实现 159
任务6.1.1 基于scratch构建简单的镜像 159
任务6.1.2 制作一个基于VNC的Firefox镜像 161
任务6.1.3 多阶段构建镜像 162
任务6.2 对应用程序进行容器化 163
任务说明 164
知识引入 164
6.2.1 应用程序容器化的基本步骤 164
6.2.2 部署容器化应用程序的方式 164
6.2.3 容器化过程中的应用程序代码处理 165
6.2.4 容器化应用程序镜像大小优化 165
6.2.5 容器化应用程序的数据持久化 165
任务实现 容器化Node.js应用程序 166
任务6.3 Java应用程序容器化 169
任务说明 169
知识引入 169
6.3.1 Java的特点 169
6.3.2 Java的Web应用程序开发技术 170
6.3.3 Java应用程序服务器 170
6.3.4 Maven工具与Docker Maven插件 171
6.3.5 Spring Boot应用程序 171
任务实现 172
任务6.3.1 容器化简单的Java应用程序 172
任务6.3.2 容器化Tomcat应用程序 174
任务6.3.3 容器化Spring Boot应用程序 176
任务6.4 Python应用程序容器化 180
任务说明 180
知识引入 181
6.4.1 Python程序 181
6.4.2 Python Web框架及其部署技术 181
6.4.3 Python官方镜像的基本使用 182
任务实现 183
任务6.4.1 容器化Flask应用程序 183
任务6.4.2 容器化Django应用程序 187
项目实训 192
项目实训1 容器化Spring Boot应用程序 192
项目实训2 使用Compose部署LAMP平台 193
项目实训3 使用Compose部署Django应用程序 193
项目总结 193
项目7 194
自动化构建与持续 集成 194
任务7.1 实现Docker镜像的自动化构建 194
任务说明 194
知识引入 195
7.1.1 代码管理与代码分支 195
7.1.2 持续集成与持续部署的概念 195
7.1.3 Docker镜像的自动化构建 196
7.1.4 GitLab与GitLab Runner 197
任务实现 198
任务7.1.1 部署GitLab服务器 198
任务7.1.2 基于GitLab实现Docker镜像自动化构建 202
任务7.2 基于Docker实现持续集成和持续部署 208
任务说明 209
知识引入 209
7.2.1 Docker与CI/CD的结合 209
7.2.2 CI/CD实施工具 210
7.2.3 CI/CD平台的组建思路 210
7.2.4 Jenkins的项目类型 211
7.2.5 Jenkins的流水线代码语法 212
任务实现 213
任务7.2.1 部署Jenkins服务器 213
任务7.2.2 使用Jenkins的流水线项目实施CI/CD 217
任务7.2.3 通过GitLab自动触发项目自动化构建和部署 224
项目实训 227
项目实训1 搭建GitLab平台实现Docker镜像自动化构建 227
项目实训2 结合Docker和Jenkins实现持续集成和持续部署 227
项目总结 227
项目8 228
Kubernetes部署容器化应用程序 228
任务8.1 部署Kubernetes集群 228
任务说明 228
知识引入 229
8.1.1 容器编排解决方案 229
8.1.2 Kubernetes集群的组成 229
8.1.3 Kubernetes集群的部署工具 231
8.1.4 Kubernetes的对象和资源 232
8.1.6 使用YAML文件描述应用程序 232
8.1.6 Kubernetes对象管理方法 233
任务实现 234
任务8.1.1 基于kind部署Kubernetes集群 234
任务8.1.2 在Kubernetes集群中运行并发布应用程序 237
任务8.2 在Kubernetes集群中部署开发的应用程序 240
任务说明 240
知识引入 241
8.2.1 将开发的应用程序部署到Kubernetes的基本流程 241
8.2.2 Jenkins的Maven项目CI/CD流程 241
任务实现 241
任务8.2.1 在Kubernetes集群中手动部署开发的应用程序 241
任务8.2.2 基于CI/CD平台将应用程序自动部署到Kubernetes集群 246
项目实训 251
项目实训1 手动将Python应用程序部署到Kubernetes 251
项目实训2 自动触发Maven项目构建并部署到Kubernetes 251
项目总结 252

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

岳晓瑞,女,湖北城市建设职业技术学院副教授,华中科技大学电子与通信专业硕士毕业,智能建造国家第二批教师创新团队核心成员,湖北信息技术职业教育集团常务理事,学校WPS办公应用职业技能等级证书试点负责人,学校《计算机应用基础》校级在线开放课程负责人。主要从事信息技术、职业教育等方向研究。先后承担《信息技术基础》、《python 程序设计》、《图形图像处理》、《管理信息系统》等课程,主持和参与编写8本,教材参与国家级、省级课题10余项,发表职业教育类论文20余篇,获发明专利1项,荣获湖北省住建厅“优秀共产党员”称号,多次获学校“最满意课堂”、“优秀教师”和“先进教育工作者”等称号。

同系列书

相关图书

人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部