草庐IT

《赵渝强》《Docker+Kubernetes容器实战派》新书上市!!!

赵渝强老师 2023-03-28 原文

用一本书掌握Docker与Kubernetes核心内容!!!

本书基于作者多年的教学与实践经验编写,分为上下两篇,共20章。

  • 上篇(第1~11章)介绍Docoker,包含:Docker入门、Docker的镜像、Docker的容器、Docker的网络通信、使用Docker Compose进行服务编排、使用Docker Machine进行远程管理、使用Docker Swarm构建集群、在Docker中实现持续集成与持续部署、基于Consul实现Docker的服务注册与发现、利用图形工具管理Docker及Docker应用实战。
  • 下篇(第12~20章)介绍Kubernetes,包含:Kubernetes体系架构、部署Kubernetes集群、Kubernetes中的最小可部署对象Pod、使用控制器管理Pod、通过Service访问Pod、持久化存储、Kubernetes的安全认证、Kubernetes中的日志收集与监控、Kubernetes集成与运维管理。

本书目录
上篇 Docker从原理到实战


第1章 Docker入门
1.1 为什么需要容器技术
1.2 Docker简介
1.3 Docker的体系架构与基本概念
1.4 安装Docker
1.4.1 安装Linux操作系统 /6
1.4.2 使用YUM方式安装Docker /16
1.4.3 使用二进制包方式安装Docker /18
1.4.4 验证Docker环境 /21
1.5 【实战】在Docker中部署第一个应用

第2章 Docker的镜像
2.1 什么是Docker的镜像
2.1.1 使用Docker默认的镜像存储路径 /27
2.1.2 自定义Docker的镜像存储路径 /28
2.2 使用Docker的公有镜像仓库
2.2.1 【实战】访问Docker官方的公有镜像仓库 /29
2.2.2 【实战】配置和使用阿里云Docker镜像加速仓库 /32
2.3 使用命令行工具管理Docker的镜像
2.4 构建自己的镜像
2.4.1 【实战】使用“docker commit”命令构建镜像 /36
2.4.2 【实战】使用Dockerfile文件构建镜像 /39
2.4.3 Dockerfile文件详解 /40
2.4.4 【实战】使用Dockerfile文件的综合案例 /42
2.5 搭建私有镜像仓库Harbor
2.5.1 安装Docker和Docker Compose /45
2.5.2 安装与配置Harbor /46
2.5.3 【实战】在Docker中使用Harbor /48

第3章 Docker的容器
3.1 Docker容器的基本概念与操作
3.2 Docker的日志
3.2.1 【实战】访问Docker引擎的日志 /53
3.2.2 【实战】访问Docker应用的日志 /54
3.3 管理容器的资源
3.3.1 什么是Linux CGroup /56
3.3.2 【实战】Docker对CPU的使用 /62
3.3.3 【实战】Docker对内存的使用 /64
3.3.4 【实战】Docker对I/O带宽的使用 /65
3.4 管理Docker容器中的数据
3.4.1 在Docker容器中实现数据管理的两种方式 /67
3.4.2 【实战】使用数据卷管理Docker容器中的数据 /68
3.4.3 【实战】使用数据卷容器管理Docker容器中的数据 /71

第4章 Docker的网络通信
4.1 Docker容器网络通信的基本原理
4.2 使用命令查看Docker的网络配置信息
4.3 Docker的4种网络通信模式
4.3.1 bridge模式 /80
4.3.2 host模式 /82
4.3.3 container模式 /83
4.3.4 none模式 /85
4.4 容器间的通信
4.4.1 【实战】通过IP地址进行通信 /86
4.4.2 【实战】通过Docker DNS Server进行通信 /87
4.4.3 【实战】通过Joined方式进行通信 /88
4.4.4 容器间的跨节点通信 /89
4.5 容器的网络访问控制
4.5.1 容器内的应用访问外部网络 /95
4.5.2 从外部网络访问容器内的应用 /96

第5章 使用Docker Compose进行服务编排
5.1 配置Docker Compose
5.2 进行服务编排
5.2.1 【实战】使用手动方式部署应用 /99
5.2.2 【实战】使用Docker Compose部署应用 /101
5.2.3 【实战】使用Docker Compose进行服务的在线扩容/缩容 /102
5.2.4 【实战】在Docker Compose中控制模块启动和停止的顺序 /104
5.3 Docker Compose中的网络
5.3.1 Docker Compose中的默认网络环境 /108
5.3.2 在Docker Compose中自定义模块的网络环境 /109

第6章 使用Docker Machine进行远程管理
6.1 使用Docker Machine
6.1.1 安装Docker Machine /112
6.1.2 在远端宿主机上安装Docker /112
6.2 Docker Machine的基本用法
6.2.1 【实战】使用Docker Machine的命令 /115
6.2.2 【实战】管理远端的Docker节点 /116
6.3 Docker Machine的高级用法
6.3.1 【实战】使用Docker Machine创建基于VirtualBox的虚拟主机 /118
6.3.2 【实战】使用Docker Machine创建基于vSphere的虚拟主机 /120

第7章 使用Docker Swarm构建集群
7.1 Docker Swarm集群的体系架构
7.2 构建Docker Swarm集群
7.3 在Docker Swarm集群中部署应用与HAProxy
7.3.1 【实战】在集群中部署应用 /126
7.3.2 【实战】测试集群的高可用性 /128
7.3.3 【实战】使用HAProxy为集群添加外部负载均衡功能 /130
7.3.4 【实战】实现服务的滚动更新 /131
7.4 Docker Swarm集群的数据持久化
7.4.1 【实战】通过volume实现集群的数据持久化 /133
7.4.2 【实战】通过NFS实现集群的数据持久化 /134
7.5 Docker Swarm集群的负载均衡
7.5.1 【实战】测试Docker Swarm集群的负载均衡 /138
7.5.2 选择Docker Swarm集群的负载均衡模式 /139

第8章 在Docker中实现持续集成与持续部署
8.1 什么是持续集成与持续部署(CI/CD)
8.2 Jenkins简介与部署
8.2.1 Docker与Jenkins集成的体系架构 /143
8.2.2 【实战】部署Jenkins /144
8.2.3 【实战】使用Jenkins部署第一个应用 /146
8.3 基于Jenkins实现Docker应用的持续集成与持续部署
8.3.1 【实战】准备私有代码仓库SVN /150
8.3.2 开发Dockerfile文件 /152
8.3.3 【实战】集成Jenkins和Docker /152

第9章 基于Consul实现Docker的服务注册与发现
9.1 服务的注册与发现
9.1.1 什么是服务的注册与发现 /155
9.1.2 为什么需要服务的注册与发现 /156
9.1.3 常见的服务注册中心 /159
9.2 注册中心Consul的基本使用
9.2.1 Consul的安装与启动 /160
9.2.2 【实战】使用JSON文件在Consul中注册服务 /161
9.2.3 【实战】使用API在Consul中注册服务 /163
9.3 集成Consul与Docker
9.3.1 Docker服务注册与发现的体系架构 /166
9.3.2 【实战】使用Registrator镜像实现Docker服务的注册 /167
9.3.3 【实战】使用Consul-Template实现Docker服务的发现 /170

第10章 利用图形工具管理Docker
10.1 单机环境中的Docker图形工具:Docker UI
10.1.1 部署Docker UI /173
10.1.2 【实战】使用Docker UI管理镜像与容器 /174
10.2 轻量级的Docker图形工具:Portainer
10.2.1 在单机环境中部署Portainer /177
10.2.2 【实战】使用Portainer管理Docker的镜像与容器 /179
10.2.3 【实战】使用Portainer管理远端主机上的Docker /180
10.2.4 在Docker Swarm集群中部署Portainer /182
10.3 开源的Docker图形工具――Shipyard
10.3.1 Shipyard的组件 /184
10.3.2 部署Shipyard /184
10.3.3 【实战】使用Shipyard创建容器 /187

第11章 Docker应用实战
11.1 Docker与数据库
11.1.1 在Docker容器中部署MySQL /188
11.1.2 数据库不适合Docker容器化的原因 /189
11.2 【实战】Docker与Python
11.3 【实战】Docker与PHP /192

下篇 Kubernetes从原理到实战


第12章 Kubernetes体系架构
12.1 什么是Kubernetes
12.2 Kubernetes集群
12.2.1 集群的架构体系 /198
12.2.2 Kubernetes的核心组件 /198
12.2.3 Kubernetes的常用附加组件 /199
12.3 Kubernetes的对象
12.3.1 对象的管理 /200
12.3.2 对象与命名空间 /201
12.3.3 对象的标签 /202

第13章 部署Kubernetes集群
13.1 Kubernetes的部署方式
13.1.1 使用kubeadmin部署Kubernetes集群 /204
13.1.2 使用YUM方式部署Kubernetes集群 /208
13.1.3 使用二进制包部署Kubernetes集群 /212
13.1.4 使用minikube工具部署Kubernetes单机版集群 /231
13.1.5 Kubernetes集群的高可用 /236
13.2 Kubernetes的客户端工具
13.2.1 Kubernetes图形管理工具――DashBoard UI /237
13.2.2 Kubernetes命令行管理工具――kubectl /240
13.3 【实战】使用Kubectl在Kubernetes中部署第一个应用

第14章 Kubernetes中的最小可部署对象Pod
14.1 什么是Pod
14.2 【实战】Pod的基本使用方法
14.3 Pod中的容器
14.3.1 基础容器 /251
14.3.2 初始化容器 /252
14.3.3 临时容器 /253
14.3.4 业务容器 /254
14.4 Pod的生命周期
14.4.1 Pod的阶段与容器的状态 /255
14.4.2 Pod中容器的重启策略 /256
14.4.3 【实战】Pod的健康检查 /257
14.5 Pod的调度策略
14.5.1 Pod的创建过程 /262
14.5.2 【实战】自定义Pod调度的约束策略 /262
14.6 Pod资源的使用限制
14.7 Pod的镜像拉取策略
14.8 Pod的配置管理
14.8.1 为什么需要配置管理 /268
14.8.2 【实战】使用ConfigMap管理Pod的配置信息 /268
14.8.3 【实战】使用Secret管理Pod的配置信息 /275

第15章 使用控制器管理Pod
15.1 为什么需要控制器
15.2 Deployment控制器
15.2.1 【实战】创建和使用Deployment控制器 /282
15.2.2 【实战】验证Deployment控制器的不同状态 /286
15.2.3 【实战】Deployment控制器的清理策略 /289
15.2.4 应用的部署 /292
15.2.5 编写Deployment控制器的规则 /304
15.3 DaemonSet控制器
15.3.1 DaemonSet控制器的创建 /305
15.3.2 DaemonSet控制器的调度 /307
15.4 Job控制器
15.4.1 【实战】单工作队列的Job串行方式 /307
15.4.2 【实战】多工作队列的Job并行方式 /308
15.4.3 Job的终止与清理 /310
15.5 CronJob控制器
15.5.1 【实战】运行第一个CronJob控制器 /313
15.5.2 CronJob控制器中的时间表示 /314
15.5.3 CronJob控制器的限制 /315
15.6 StatefulSets控制器
15.6.1 【实战】创建StatefulSets控制器 /316
15.6.2 StatefulSets控制器的扩容/缩容 /317
15.6.3 StatefulSets控制器的更新/回滚 /318

第16章 通过Service访问Pod
16.1 Service的概念与使用
16.1.1 【实战】通过Service向外部暴露Pod /321
16.1.2 Service的多端口设置 /323
16.1.3 集群内部的DNS服务 /324
16.1.4 【实战】无头Service /325
16.2 Service的发布类型
16.2.1 NodePort /328
16.2.2 ClusterIP /329
16.2.3 LoadBalance /331
16.2.4 ExternalName /332
16.3 虚拟IP与Service的代理模式
16.3.1 userspace代理模式 /333
16.3.2 iptables代理模式 /334
16.3.3 IPVS代理模式 /336
16.4 集群外部的请求访问集群内应用的最佳方式――Ingress
16.4.1 Ingress是什么 /339
16.4.2 【实战】使用Ingress Controller创建Ingress /340
16.4.3 【实战】使用Ingress的注解 /344
16.4.4 基于Ingress的高可用架构 /348

第17章 持久化存储
17.1 Kubernetes持久化存储方式
17.1.1 【实战】使用节点数据卷 /350
17.1.2 【实战】使用网络数据卷 /351
17.1.3 【实战】使用临时数据卷 /353
17.2 持久卷
17.2.1 持久卷是什么 /355
17.2.2 【实战】第一个持久卷示例 /355
17.2.3 持久卷的访问模式 /357
17.2.4 【实战】持久卷的回收策略 /359
17.3 持久卷声明
17.3.1 持久卷和持久卷声明的区别 /361
17.3.2 【实战】在Pod中使用持久卷声明 /362
17.3.3 storageClass详解 /364
17.4 【实战】实现持久卷的动态供给

第18章 Kubernetes的安全认证
18.1 Kubernetes的安全框架
18.2 Kubernetes的用户认证
18.3 Kubernetes的鉴权管理
18.3.1 基于角色的访问控制(RBAC鉴权) /379
18.3.2 基于属性的访问控制(ABAC鉴权) /384
18.3.3 基于节点的访问控制(node鉴权) /386
18.3.4 基于Webhook的访问控制 /387
18.4 管理服务账号(Service Account)
18.4.1 服务账号与用户账号 /391
18.4.2 【实战】创建和使用服务账号 /391
18.4.3 服务账号的工作机制 /396

第19章 Kubernetes中的日志收集与监控
19.1 收集哪些日志
19.2 日志收集方案
19.2.1 初识ELK /399
19.2.2 日志收集的架构 /399
19.2.3 日志收集方案详解 /400
19.3 实现Kubernetes集群的日志收集
19.3.1 安装ELK /402
19.3.2 【实战】采集Kubernetes系统组件的日志 /405
19.3.3 【实战】采集Nginx 应用的日志 /410
19.3.4 【实战】采集Tomcat应用的日志 /414
19.4 监控Kubernetes
19.4.1 Kubernetes监控方案 /418
19.4.2 【实战】部署Kubernetes监控系统 /419

第20章 Kubernetes集成与运维管理
20.1 Jenkins与Kubernetes的持续集成与持续部署
20.1.1 基于Kubernetes的Jenkins集群架构 /427
20.1.2 【实战】Jenkins与Kubernetes的集成 /428
20.2 使用Helm简化Kubernetes应用的部署和管理
20.2.1 什么是Helm /435
20.2.2 部署Helm /435
20.2.3 【实战】使用Helm管理Kubernetes /437

有关《赵渝强》《Docker+Kubernetes容器实战派》新书上市!!!的更多相关文章

  1. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  2. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  3. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  4. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

  5. ruby - 更新 gem 时 Docker 包安装缓存问题 - 2

    我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby​​应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了

  6. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  7. 你真正了解什么是接口测试么?接口实战一“篇”入魂 - 2

    最近在工作中,看到一些新手测试同学,对接口测试存在很多疑问,甚至包括一些从事软件测试3,5年的同学,在聊到接口时,也是一知半解;今天借着这个机会,对接口测试做个实战教学,顺便总结一下经验,分享给大家。计划拆分成4个模块跟大家做一个分享,(接口测试、接口基础知识、接口自动化、接口进阶)感兴趣的小伙伴记得关注,希望对你的日常工作和求职面试,带来一些帮助。注:文章较长有5000多字,希望小伙伴们认真看完,当然有些内容对小白同学不是太友好,如果你需要详细了解其中的一些概念或者名词,请在文章之后留言,后续我将针对大家的疑问,整理输出一些大家感兴趣的文章。随着开发模式的迭代更新,前后端分离已不是新的概念,

  8. 转转测试环境docker化实践 - 2

        测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境    转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境    随着微服务化的进

  9. FIFO实战学习-同步FIFO/异步FIFO-格雷码 - 2

    目录FIFO一.自定义同步FIFO1.1代码设计1.2Testbech1.3行为仿真***学习位宽计算函数$clog2()***$clog2()系统函数使用,可以不关注***分布式资源或者BLOCKBRAM二.异步FIFO2.1在FIFO判满的时候有两种方式:2.2异步FIFO为什么要使用格雷码2.2.1介绍格雷码2.2.2格雷码在异步FIFO中的应用2.2.2格雷码判满2.4二进制与格雷码之间的转换2.4.1二进制码转换为格雷码的方法2.4.2格雷码转换为二进制码的方法2.3实现框图2.5实现及仿真代码2.6仿真图验证2.7结论FIFO  这篇更多的是记录FIFO学习,参考了众多优秀的文章,

  10. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

随机推荐