Docker+Kubernetes应用开发与快速上云

作者
李文强
丛书名
出版社
机械工业出版社
ISBN
9787111643012
简要
简介
内容简介书籍计算机书籍 Docker是目前最流行的容器技术之一,Kubernetes(简称k8s)是目前最流行的容器编排平台之一,本书主要围绕Docker和k8s进行讲解。 本书共分为11章。前7章主要讲解Docker相关内容,从发展简史到基础概念,从市场趋势、应用场景到各环境的安装,从基础操作命令到Docker应用持续开发的工作流程,从主流的编程语言实践到数据库容器化。第8~10章主要讲解Kubernetes的相关内容,从主体架构、核心概念到开发、生产环境搭建以及集群故障处理,从应用部署、伸缩、回滚到应用访问,从云端理念到将应用部署到容器云服务。第11章主要讲解容器化之后的DevOps实践,从DevOps的理念到CI、CD的流程和实践,最后讲述如何使用Azure DevOps、Tencent Hub以及自建的TeamCity来完成CI/CD,并附有相关参考流程讲解。
目录
前言
第1章 走进Docker 1
1.1 主流的互联网公司均在使用Docker 1
1.2 什么是Docker 4
1.3 容器简史 4
1.4 打消偏见,迎接Docker 5
1.5 Docker和虚拟机 6
1.6 Docker的三个基本概念 8
1.6.1 镜像:一个特殊的文件系统 8
1.6.2 容器:镜像运行时的实体 9
1.6.3 仓库:集中存放镜像文件的地方 9
1.7 Docker版本概述 11
第2章 Docker的市场趋势和主要应用场景 12
2.1 Docker的市场趋势 12
2.2 Docker的主要应用场景 15
2.2.1 简化配置,无须处理复杂的环境依赖关系 15
2.2.2 搭建轻量、私有的PaaS环境、标准化开发、测试和生产环境 15
2.2.3 简化和标准化代码流水线,助力敏捷开发和DevOps实践 16
2.2.4 隔离应用 17
2.2.5 整合服务器资源 17
2.2.6 现代应用 17
2.2.7 调试能力 18
2.2.8 快速部署 18
2.2.9 混合云应用、跨环境应用、可移植应用 18
2.2.10 物联网和边缘计算 18
第3章 安装和运行 20
3.1 Windows 10下的安装 20
3.1.1 配置Docker本地环境 22
3.1.2 运行一个简单的demo 23
3.2 Ubuntu下的安装 25
3.2.1 了解Ubuntu 25
3.2.2 使用Hyper-V快速安装Ubuntu 25
3.2.3 配置外网 27
3.2.4 使用SSH远程Ubuntu 30
3.2.5 安装Docker 33
3.3 CentOS 下的安装 37
3.3.1 了解CentOS 37
3.3.2 使用CentOS 7 安装Docker 38
3.4 基于树莓派搭建个人网盘 41
3.4.1 什么是树莓派 41
3.4.2 开启SSH 43
3.4.3 安装Docker 44
3.4.4 基于树莓派的一行命令搭建个人网盘 46
第4章 Docker命令基础知识 48
4.1 登 录 49
4.1.1 OPTIONS说明 49
4.1.2 登录Docker Hub 49
4.1.3 登录到腾讯云镜像仓库 50
4.2 拉取镜像 51
4.2.1 OPTIONS说明 51
4.2.2 从Docker Hub拉取镜像 51
4.2.3 从腾讯云镜像仓库拉取镜像 52
4.3 列出本地镜像 53
4.3.1 OPTIONS说明 53
4.3.2 按名称和标签列出镜像 54
4.3.3 筛选 55
4.4 运行镜像 58
4.4.1 OPTIONS说明 58
4.4.2 简单运行 60
4.5 列出容器 61
4.5.1 OPTIONS说明 61
4.5.2 查看正在运行的容器 61
4.5.3 显示正在运行和已停止的容器 61
4.5.4 筛选 62
4.5.5 根据指定模板输出 62
4.6 查看镜像详情 63
4.7 删除镜像 64
4.7.1 OPTIONS说明 64
4.7.2 批量删除 65
4.8 清理未使用的镜像 65
4.9 磁盘占用分析 67
4.10 删除容器 68
4.10.1 OPTIONS说明 68
4.10.2 停止容器再删除 68
4.10.3 强制删除正在运行的容器 69
4.10.4 删除所有已停止的容器 69
4.11 镜像构建 70
4.11.1 OPTIONS说明 70
4.11.2 简单构建 71
4.12 镜像历史 73
4.12.1 OPTIONS说明 73
4.12.2 查看镜像历史 74
4.12.3 格式化输出 74
4.13 修改镜像名称和标签 75
4.14 镜像推送 76
4.14.1 推送到Docker Hub 76
4.14.2 推送到腾讯云镜像仓库 77
4.15 使用Kitematic来管理Docker容器 77
第5章 Docker持续开发工作流 81
5.1 基于Docker容器的内部循环开发工作流 81
5.1.1 开发 82
5.1.2 编写Dockerfile 83
5.1.3 创建自定义镜像 90
5.1.4 定义docker-compose 91
5.1.5 启动Docker应用 97
5.1.6 测试 99
5.1.7 部署或继续开发 100
5.2 Visual Studio和Docker 100
5.2.1 使用VS自动生成工程的Dockerfile文件 101
5.2.2 VS支持的容器业务协调程序 102
5.2.3 使用VS发布镜像 104
5.3 使用 Visual Studio Code玩转Docker 105
5.3.1 官方扩展插件Docker 105
5.3.2 Docker Compose扩展插件 109
第6章 Docker应用开发之旅 111
6.1 使用.NET Core开发云原生应用 111
6.1.1 什么是“云原生” 112
6.1.2 .NET Core简介 112
6.1.3 官方镜像 114
6.1.4 Kestrel 115
6.1.5 按环境加载配置 118
6.1.6 查看和设置容器的环境变量 119
6.1.7 ASP.NET Core内置的日志记录提供程序 121
6.1.8 编写一个简单的Demo输出日志 122
6.1.9 使用“docker logs”查看容器日志 124
6.1.10 使用“docker stats”查看容器资源使用 125
6.1.11 如何解决容器应用的时区问题 125
6.2 使用Docker搭建Java开发环境 127
6.2.1 官方镜像 127
6.2.2 使用Docker搭建Java开发环境 127
6.2.3 Docker资源限制 130
6.2.4 防止Java容器应用被杀 130
6.3 使用Go推送钉钉消息 131
6.3.1 Go的优势 131
6.3.2 官方镜像 132
6.3.3 使用Go推送钉钉消息 133
6.4 使用Python实现简单爬虫 140
6.4.1 关于Python 140
6.4.2 官方镜像 140
6.4.3 使用Python抓取博客列表 141
6.5 使用PHP搭建个人博客站点 145
6.5.1 官方镜像 146
6.5.2 编写简单的“Hello world” 146
6.5.3 使用WordPress镜像搭建个人博客站点 148
6.5.4 修改PHP的文件上传大小限制 151
6.6 使用Node.js搭建团队技术文档站点 151
6.6.1 官方镜像 152
6.6.2 编写一个简单的Web服务器 152
6.6.3 使用Hexo搭建团队技术文档站点 154
第7章 数据库容器化 161
7.1 什么是数据库 161
7.2 关系型数据库和非关系型数据库对比 162
7.3 主流的数据库 162
7.4 数据库容器化 163
7.5 SQL Server容器化 163
7.5.1 镜像说明 164
7.5.2 运行SQL Server 容器镜像 165
7.5.3 管理SQL Server 168
7.6 如何持久保存数据 174
7.6.1 方式一:使用主机 175
7.6.2 方式二:使用数据卷 178
7.7 MongoDB容器化 179
7.7.1 适用场景 179
7.7.2 不适用场景 180
7.7.3 镜像说明 180
7.7.4 运行MongoDB容器镜像 180
7.7.5 管理MongoDB 181
7.8 Redis容器化 184
7.8.1 优势 184
7.8.2 运行Redis镜像 185
7.8.3 使用redis-cli 185
7.8.4 使用Redis Desktop Manager管理Redis 186
7.8.5 既好又快地实现排行榜 187
7.9 MySQL容器化 191
7.9.1 镜像说明 191
7.9.2 运行MySQL容器镜像 192
7.9.3 管理MySQL 194
第8章 搭建Kubernetes集群 198
8.1 Docker+ Kubernetes已成为云计算的主流 198
8.1.1 什么是Kubernetes 198
8.1.2 Kubernetes正在塑造应用程序开发和管理的未来 199
8.2 Kubernetes主体架构 199
8.2.1 主要核心组件 200
8.2.2 基本概念 202
8.3 使用Minikube部署本地Kubernetes集群 208
8.3.1 什么是Kubernetes集群 208
8.3.2 使用Minikube创建本地Kubernetes实验环境 209
8.4 使用kubectl管理Kubernetes集群 217
8.4.1 概述 217
8.4.2 语法 217
8.4.3 主要命令说明 218
8.4.4 资源类型说明 220
8.4.5 命令标志说明 221
8.4.6 格式化输出 221
8.5 使用kubeadm创建集群 222
8.5.1 kubeadm概述 222
8.5.2 kubelet概述 223
8.5.3 定义集群部署目标和规划 223
8.5.4 开始部署 224
8.5.5 主节点部署 229
8.5.6 工作节点部署 237
8.5.7 安装仪表盘 239
8.6 集群故障处理 243
8.6.1 健康状态检查——初诊 244
8.6.2 进一步诊断分析——听诊三板斧 247
8.6.3 容器调测 252
8.6.4 对症下药 254
8.6.5 部分常见问题处理 255
8.6.6 小结 260
第9章 将应用部署到Kubernetes集群 261
9.1 使用kubectl部署应用 261
9.1.1 kubectl部署流程 261
9.1.2 部署一个简单的Demo网站 262
9.2 应用伸缩和回滚 264
9.2.1 使用“kubectl scale”命令来伸缩应用 264
9.2.2 使用“kubectl autoscale”命令来自动伸缩应用 265
9.2.3 使用“kubectl run”命令快速运行应用 265
9.2.4 使用“kubectl set”命令更新应用 266
9.2.5 使用“kubectl rollout”命令回滚应用 268
9.3 通过Service访问应用 269
9.3.1 通过Pod IP访问应用 269
9.3.2 通过ClusterIP Service在集群内部访问 270
9.3.3 通过NodePort Service在外部访问集群应用 272
9.3.4 通过LoadBalancer Service在外部访问集群应用 274
9.3.5 Microsoft SQL Server数据库实战 276
9.4 使用Ingress负载分发微服务 278
9.4.1 Demo规划 279
9.4.2 准备Demo并完成部署 279
9.4.3 创建部署资源 280
9.4.4 创建服务资源 282
9.4.5 创建Ingress资源并配置转发规则 283
9.5 利用Helm简化Kubernetes应用部署 286
9.5.1 Helm基础 287
9.5.2 安装Helm 287
9.5.3 使用Visual Studio 2019为Helm编写一个简单的应用 289
9.5.4 定义charts 293
9.5.5 使用Helm部署Demo 296
9.5.6 Helm常用操作命令 301
第10章 将应用托管到云端 303
10.1 什么是云计算 303
10.1.1 为什么要上云 304
10.1.2 云计算的三种部署方式 305
10.1.3 云服务的类型 305
10.2 Docker+k8s是上云的不二选择 306
10.2.1 上云的问题 306
10.2.2 利用Docker+k8s解决传统应用上云问题 306
10.3 主流云计算容器服务介绍 307
10.3.1 亚马逊AWS 307
10.3.2 微软Azure 308
10.3.3 阿里云 310
10.3.4 腾讯云 311
10.4 自建还是托管 312
10.4.1 自建容器服务存在的问题 312
10.4.2 云端容器服务的优势 313
10.5 一般应用服务部署流程 313
10.5.1 创建集群和节点 314
10.5.2 创建命名空间和镜像 314
10.5.3 创建服务 317
10.5.4 配置镜像触发器 323
10.5.5 推送镜像 324
10.6 如何节约云端成本 325
10.6.1 无须过度购买配置,尽量使用自动扩展 325
10.6.2 最大化地利用服务器资源 325
10.6.3 使用Ingress节约负载均衡资源 326
10.6.4 使用NFS盘节约存储成本 327
10.7 问题处理 327
10.7.1 镜像拉取问题 327
10.7.2 绑定云硬盘之后Pod的调度问题 329
10.7.3 远程登录 329
10.7.4 利用日志来排查问题 330
第11章 容器化后DevOps之旅 332
11.1 DevOps基础知识 332
11.1.1 什么是DevOps 332
11.1.2 为什么需要DevOps 333
11.1.3 DevOps对应用程序发布的影响 335
11.1.4 如何实施DevOps 335
11.2 Docker与持续集成和持续部署 336
11.2.1 Docker与持续集成和持续部署 336
11.2.2 参考流程 338
11.3 使用Azure DevOps完成CI/CD 340
11.3.1 适用于容器的CI/CD流程 341
11.3.2 使用Azure DevOps配置一个简单的CI/CD流程 341
11.4 使用Tencent Hub完成CI/CD 347
11.4.1 关于Tencent Hub 347
11.4.2 使用Tencent Hub配置一个简单的CI流程 348
11.4.3 直接使用容器服务的镜像构建功能 360
11.5 使用内部管理工具完成CI/CD流程 361
11.5.1 一个简单的CI/CD流程 361
11.5.2 关于TeamCity 361
11.5.3 运行TeamCity Server 363
11.5.4 运行TeamCity Agent 364
11.5.5 连接和配置Agent 366
11.5.6 创建项目以及配置CI 367
11.5.7 使用Jenkins完成CI/CD 372




有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4