作者 |
金华,胡书敏 黄靖钧 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782107261125 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082548 - 基于Docker的Redis入门与实战--------------------------- 本书围绕“高并发大数据”的项目需求,全面讲述分布式缓存组件Redis的基本语法、核心技术和实战技能。 本书分为13章,第1~7章主要介绍Redis入门知识、Redis基本数据类型、Redis常用命令、Redis服务器和客户端实践技巧、Redis数据库操作技巧、Redis AOF和RDB持久化操作技巧、Redis集群的搭建方式,第8~11章主要介绍Redis同MySQL和MyCAT集群的整合技巧、Redis同lua的整合技巧等,第12、13章主要介绍Redis、Spring Boot和Spring Cloud如何构建微服务应用。 ---------------------------6303987 - Docker从入门到实战--------------------------- 本书从Docker的相关概念与基础知识讲起,结合实际应用,通过不同开发环境的实战例子,详细介绍了Docker的基础知识与进阶实战的相关内容,以引领读者快速入门并提高。本书共19章,分3篇。第1篇容器技术与Docker概念,涵盖的内容有容器技术、Docker简介、安装Docker等。第2篇Docker基础知识,涵盖的内容有Docker基础、Docker镜像、Dockerfile文件、Docker仓库、Docker容器、数据卷、网络管理等。第3篇Docker进阶实战,涵盖的内容有操作系统、编排工具Compose、Web服务器与应用、数据库、编程语言、DockerAPI、私有仓库、集群网络、Docker安全等。本书非常适合所有对Docker感兴趣的入门新手阅读。不管是开发人员还是运维人员,都可以通过本书学习Docker的基本知识。即使不是程序员的读者,本书同样适合,普通用户完全可以把Docker当做一个“好玩的工具”来使用,以体验Docker带来的便捷。 |
目录 |
[套装书具体书目] 6303987 - Docker从入门到实战 - 9787111573289 - 机械工业出版社 - 定价 69 8082548 - 基于Docker的Redis入门与实战 - 9787111684589 - 机械工业出版社 - 定价 79 ---------------------------8082548 - 基于Docker的Redis入门与实战--------------------------- 前言 第1章 构建Redis开发环境 1 1.1 Redis概述 1 1.1.1 对比传统数据库与NoSQL数据库 1 1.1.2 Redis的特点 2 1.1.3 Redis更适合以分布式集群的方式提供服务 2 1.2 了解必要的Docker技能 3 1.2.1 Docker容器、镜像和仓库 3 1.2.2 在Windows上安装Docker 3 1.2.3 Docker镜像相关的命令 4 1.2.4 Docker容器相关的命令 4 1.3 安装和配置基于Docker的Redis环境 5 1.3.1 用docker pull下载最新Redis镜像 5 1.3.2 用docker run启动Redis容器 5 1.3.3 用docker logs观察Redis启动效果 6 1.3.4 通过docker exec进入Redis容器 6 1.3.5 停止、重启和删除Redis容器 7 1.3.6 查看Redis的版本 8 1.3.7 Redis服务器和客户端 8 1.3.8 总结容器和Redis的相关命令 9 1.4 本章小结 10 第2章 实践Redis的基本数据类型 11 2.1 Redis缓存初体验 11 2.1.1 用redis-cli启动客户端并缓存数据 11 2.1.2 设置数据的生存时间 12 2.2 针对字符串的命令 13 2.2.1 读写字符串的set和get命令 13 2.2.2 设置和获取多个字符串的命令 14 2.2.3 对值进行增量和减量操作 15 2.2.4 通过getset命令设置新值 16 2.2.5 针对字符串的其他操作 17 2.3 针对哈希类型变量的命令 17 2.3.1 设置并获取哈希值 18 2.3.2 hsetnx命令 19 2.3.3 针对key的相关操作 19 2.3.4 用hexists命令判断值是否存在 20 2.3.5 对哈希类型数据的删除操作 21 2.4 针对列表类型变量的命令 21 2.4.1 读写列表的命令 21 2.4.2 lpushx和rpushx命令 23 2.4.3 用list模拟堆栈和队列 24 2.4.4 用lrange命令获取指定区间内的数据 25 2.4.5 用lset命令修改列表数据 26 2.4.6 删除列表数据的命令 26 2.5 针对集合的命令 28 2.5.1 读写集合的命令 28 2.5.2 列表和集合类数据的使用场景 29 2.5.3 用sismember命令判断元素是否存在 29 2.5.4 获取集合的交集、并集和差集 29 2.5.5 用srem命令删除集合数据 30 2.6 针对有序集合的命令 31 2.6.1 读写有序集合的命令 31 2.6.2 通过zincrby命令修改元素的分值 33 2.6.3 用zscore命令获取指定元素的分数 33 2.6.4 查看有序集合里的元素排名 34 2.6.5 删除有序集合里的值 35 2.7 本章小结 36 第3章 实践Redis的常用命令 37 3.1 键操作命令 37 3.1.1 用exists命令判断键是否存在 37 3.1.2 用keys命令查找键 38 3.1.3 用scan命令查找键 38 3.1.4 重命名键 39 3.1.5 用del命令删除键 40 3.1.6 关于键生存时间的命令 41 3.2 HyperLogLog相关命令 42 3.2.1 用pfadd添加键值对 42 3.2.2 用pfcount统计基数值 43 3.2.3 用pfmerge进行合并操作 43 3.2.4 统计网站访问总人数 44 3.3 lua脚本相关命令 44 3.3.1 把lua脚本装载到缓存里 45 3.3.2 通过evalsha命令执行缓存中的脚本 45 3.3.3 清空缓存中lua脚本的命令 45 3.3.4 用eval命令执行lua脚本 46 3.4 排序相关命令 46 3.4.1 用sort命令进行排序 46 3.4.2 用by参数指定排序模式 48 3.4.3 用limit参数返回部分排序结果 48 3.4.4 sort命令里get参数的用法 49 3.4.5 通过store参数提升性能 50 3.5 本章小结 51 第4章 实践Redis服务器和客户端的操作 52 4.1 Redis服务器管理客户端的命令 52 4.1.1 获取和设置客户端的名字 52 4.1.2 通过client list命令查看客户端的信息 53 4.1.3 通过client pause命令暂停客户端的命令 53 4.1.4 通过client kill命令中断客户端连接 54 4.1.5 通过shutdown命令关闭服务器和客户端 54 4.2 查看Redis服务器的详细信息 55 4.2.1 通过info命令查看服务器信息 55 4.2.2 查看客户端连接状况 56 4.2.3 观察最大连接数 56 4.2.4 查看每秒执行多少条指令 56 4.2.5 观察内存用量 57 4.2.6 通过command命令查看Redis命令 57 4.2.7 查看指定Redis命令的信息 58 4.2.8 获取指定命令的所有键 58 4.3 查看并修改服务器的常用配置 59 4.3.1 查看服务器的配置 59 4.3.2 通过修改服务器配置设置密码 60 4.3.3 用config rewrite命令改写Redis配置文件 61 4.3.4 启动Redis服务器时加载配置文件 61 4.4 多个客户端连接远端服务器 63 4.4.1 多个Redis客户端连接远端服务器 63 4.4.2 通过docker inspect命令观察IP地址 64 4.4.3 实践客户端命令 65 4.4.4 通过info观察服务器状态 65 4.5 本章小结 66 第5章 Redis数据库操作实战 67 5.1 切换数据库操作 67 5.1.1 查看和设置默认的数据库个数 67 5.1.2 用select命令切换数据库 69 5.2 Redis事务操作 70 5.2.1 事务的概念与ACID特性 70 5.2.2 实现Redis事务的相关命令 70 5.2.3 通过discard命令撤销事务中的操作 71 5.2.4 Redis持久化与事务持久性 72 5.2.5 用watch命令监视指定键 73 5.3 地理位置相关操作 75 5.3.1 用geoadd命令存储地理位置 75 5.3.2 获取地理位置的经纬度信息 76 5.3.3 查询指定范围内的地理信息 76 5.3.4 查询地理位置间的距离 77 5.4 位图数据类型的应用 78 5.4.1 setbit和getbit操作 78 5.4.2 用bitop对位图进行运算 79 5.4.3 bitcount操作 80 5.5 慢查询实战分析 81 5.5.1 慢查询相关的配置参数 81 5.5.2 用slowlog get命令观察慢查询 81 5.5.3 慢查询相关命令 82 5.6 本章小结 83 第6章 Redis数据持久化操作 84 6.1 Redis持久化机制概述 84 6.1.1 基于AOF的持久化机制 84 6.1.2 基于RDB的持久化机制 85 6.2 AOF持久化机制实战 85 6.2.1 AOF配置文件的说明 85 6.2.2 实践AOF持久化 86 6.2.3 观察重写AOF文件的效果 88 6.2.4 模拟数据恢复的流程 89 6.2.5 修复AOF文件 91 6.3 RDB持久化机制实战 91 6.3.1 编写配置文件,生成RDB快照 92 6.3.2 用快照文件恢复数据 93 6.3.3 save和bgsave命令 94 6.4 如何选用持久化方式 94 6.4.1 对比两种持久化方式 95 6.4.2 综合使用两种持久化方式 95 6.4.3 查看持久化状态的命令 96 6.5 本章小结 97 第7章 搭建Redis集群 98 7.1 搭建基于主从复制模式的集群 98 7.1.1 主从复制模式概述 98 7.1.2 用命令搭建主从集群 99 7.1.3 通过配置搭建主从集群 101 7.1.4 配置读写分离效果 103 7.1.5 用心跳机制提高主从复制的可靠性 103 7.1.6 用偏移量检查数据是否一致 104 7.2 搭建哨兵模式的集群 105 7.2.1 哨兵模式概述 105 7.2.2 搭建哨兵模式集群 106 7.2.3 哨兵节点的常用配置 108 7.2.4 哨兵模式下的故障自动恢复效果 109 7.2.5 通过日志观察故障恢复流程 110 7.2.6 故障节点恢复后的表现 112 7.3 搭建cluster集群 113 7.3.1 哈希槽与cluster集群 113 7.3.2 初步搭建cluster集群 114 7.3.3 在cluster集群中读写数据 120 7.3.4 模拟扩容和数据迁移动作 121 7.3.5 cluster集群的常用配置参数 123 7.4 本章小结 124 第8章 Java整合MySQL与Redis 125 8.1 Java通过Jedis读写Redis 125 8.1.1 以Maven方式引入Jedis包 125 8.1.2 通过Jedis读写Redis字符串 126 8.1.3 操作各种Redis命令 128 8.1.4 以事务的方式操作Redis 129 8.1.5 Jedis连接池 130 8.1.6 用管道的方式提升操作性能 131 8.2 Java与各种Redis数据类型 132 8.2.1 读写列表类对象 132 8.2.2 读写哈希表对象 134 8.2.3 读写集合对象 135 8.2.4 读写有序集合对象 135 8.2.5 操作地理位置数据 136 8.3 Redis与MySQL的整合 137 8.3.1 通过Docker安装MySQL开发环境 138 8.3.2 通过JDBC连接并操作MySQL数据库 139 8.3.3 引入Redis做缓存 142 8.3.4 模拟缓存穿透现象 146 8.3.5 模拟内存使用不当的场景 147 8.4 Redis缓存实战分析 148 8.4.1 缓存不存在的键,以防穿透 148 8.4.2 合理设置超时时间,以防内存溢出 150 8.4.3 超时时间外加随机数,以防穿透 152 8.5 本章小结 153 第9章 Redis应用场景与案例实现 154 9.1 Redis消息队列实战 154 9.1.1 消息队列与Redis消息订阅发布模式 154 9.1.2 消息订阅发布的命令和流程 155 9.1.3 消息订阅发布的相关命令汇总 159 9.1.4 Java与消息队列的实战范例 159 9.2 用Java实战Redis分布式锁 162 9.2.1 观察分布式锁的特性 162 9.2.2 加锁与解锁的Redis命令分析 163 9.2.3 基于Java语言的Redis分布式锁 163 9.3 用Java实现Redis限流 167 9.3.1 zset有序集合相关命令与限流 167 9.3.2 zset有序集合与限流 167 9.4 Redis压力测试实战 169 9.5 本章小结 171 第10章 Redis整合MySQL集群与MyCAT分库分表组件 172 10.1 Redis整合MySQL主从集群 172 10.1.1 用Docker搭建MySQL主从集群 172 10.1.2 准备数据 176 10.1.3 创建Java项目,准备pom文件 177 10.1.4 用Java代码读写MySQL集群和Redis 178 10.1.5 MySQL主从集群整合Redis主从集群 181 10.2 Redis整合MySQL和MyCAT分库组件 185 10.2.1 分库分表概述 185 10.2.2 用MyCAT组件实现分库分表 187 10.2.3 Java、MySQL与MyCAT的整合范例 190 10.2.4 Redis集群与MySQL和MyCAT整合范例 195 10.3 本章小结 199 第11章 Redis整合lua脚本实战 200 11.1 在Redis里调用lua脚本 200 11.1.1 结合Redis叙述lua的特性 200 11.1.2 通过redis-cli命令运行lua脚本 201 11.1.3 直接通过eval命令执行脚本 202 11.1.4 通过return返回脚本运行结果 203 11.1.5 整理Redis里和lua相关的命令 203 11.1.6 观察lua脚本阻塞Redis的效果 204 11.2 Redis整合lua高级实战 205 11.2.1 通过KEYS和ARGV传递参数 205 11.2.2 在脚本里引入分支语句 206 11.2.3 while循环调用 207 11.2.4 for循环调用 208 11.2.5 在Java程序里调用Redis的lua脚本 209 11.2.6 lua脚本有错,不会执行 210 11.3 Redis整合lua脚本的实例分析 211 11.3.1 以计数模式实现限流效果 211 11.3.2 用lua脚本防止超卖 214 11.4 本章小结 217 第12章 Redis与Spring Boot的整合应用 218 12.1 在Spring Boot框架里引入Redis 218 12.1.1 SSM和Spring Boot框架介绍 218 12.1.2 准备MySQL数据库和数据表 220 12.1.3 搭建Spring Boot框架 221 12.1.4 在框架里引入Redis等组件 222 12.1.5 启动Spring Boot,观察缓存效果 228 12.2 Spring Boot框架整合Redis哨兵集群 229 12.2.1 搭建Redis哨兵集群 229 12.2.2 在Spring Boot框架里引入Redis哨兵集群 230 12.2.3 观察整合效果 231 12.3 Spring Boot框架整合Redis cluster集群 232 12.3.1 搭建Redis cluster集群 232 12.3.2 在Spring Boot里使用Redis cluster集群 232 12.4 在Spring Boot里实现秒杀案例 233 12.4.1 构建Spring Boot项目 233 12.4.2 编写启动类 235 12.4.3 在Controller层里定义秒杀接口 235 12.4.4 在Service层里通过lua脚本实现秒杀效果 236 12.4.5 配置Redis连接参数 238 12.4.6 演示秒杀效果 239 12.5 本章小结 242 第13章 Redis整合Spring Cloud微服务 243 13.1 微服务和Spring Cloud相关概念 243 13.1.1 传统架构与微服务的比较 243 13.1.2 Spring Cloud全家桶组件与微服务的关系 245 13.2 多模块整合Redis,构建微服务体系 246 13.2.1 用Docker准备Redis和MySQL集群环境 246 13.2.2 含Redis和Eureka的微服务架构图 247 13.2.3 开发Eureka服务器 248 13.2.4 开发含Redis的风控模块(Eureka客户端) 251 13.2.5 开发含Redis的下单模块(Eureka客户端) 259 13.3 Redis与Ribbon整合使用 264 13.3.1 Ribbon负载均衡组件与Redis的整合效果 265 13.3.2 引入多个风控组件分摊流量 265 13.3.3 从缓存和负载均衡维度观察整合后的效果 267 13.4 本章小结 268 ---------------------------6303987 - Docker从入门到实战--------------------------- 前言 第1篇 容器技术与Docker概念 第1章 容器技术 2 1.1 什么是容器 2 1.1.1 关于虚拟化 2 1.1.2 容器的定义 3 1.1.3 为什么使用容器 3 1.2 容器技术的前世今生 4 1.2.1 容器技术的起源 4 1.2.2 容器技术的发展 5 1.3 容器的原理 7 1.3.1 从namespace说起 7 1.3.2 认识Cgroups 9 1.3.3 容器的创建 11 1.4 容器云 12 1.5 容器与Docker 13 1.6 本章小结 13 第2章 Docker简介 14 2.1 什么是Docker 14 2.1.1 Docker的历史 14 2.1.2 Docker的现状 16 2.1.3 Docker的未来 17 2.2 Docker的功能及优缺点 18 2.2.1 Docker在解决什么 18 2.2.2 为什么选择Docker 19 2.2.3 Docker的缺点 19 2.3 Docker和虚拟机 19 2.3.1 Docker与虚拟机的区别 20 2.3.2 Docker与虚拟机的优缺点 20 2.4 Docker与runC 21 2.4.1 libcontainer与runC 21 2.4.2 runC的使用 22 2.4.3 runC原理 22 2.5 Docker基本架构 24 2.5.1 Docker Client介绍 24 2.5.2 Docker daemon介绍 25 2.5.3 Docker镜像 25 2.5.4 Docker容器 26 2.5.5 Docker仓库 26 2.6 本章小结 26 第3章 安装Docker 27 3.1 Linux系统 27 3.1.1 一键安装脚本 27 3.1.2 Debian发行版 28 3.1.3 Ubuntu发行版 30 3.1.4 Centos/Fedora发行版 33 3.1.5 Arch Linux发行版 37 3.1.6 Suse/openSUSE发行版 38 3.2 Windows与Mac OS系统 38 3.2.1 在Windows上安装原生Docker 39 3.2.2 在Mac OS上安装原生Docker 41 3.3 二进制安装 43 3.3.1 获取Linux二进制包 44 3.3.2 获取Mac OS X二进制包 44 3.3.3 获取Windows的二进制包 45 3.3.4 树莓派安装Docker 45 3.4 本章小结 46 第2篇 Docker基础知识 第4章 Docker基础 48 4.1 Docker基本操作 48 4.1.1 依附容器的docker attach命令 49 4.1.2 构建镜像的docker build命令 51 4.1.3 提交容器的docker commit命令 52 4.1.4 复制文件到宿主机的docker cp命令 52 4.1.5 创建容器的docker create命令 53 4.1.6 查看容器变化的docker diff命令 54 4.1.7 查看事件的docker events命令 54 4.1.8 进入容器的docker exec命令 55 4.1.9 导出容器的docker export命令 56 4.1.10 查看镜像历史的docker history命令 56 4.1.11 查看本地镜像的docker images命令 57 4.1.12 导入容器的docker import命令 58 4.1.13 查看Docker信息的docker info命令 58 4.1.14 查看各项详细信息的docker inspect命令 59 4.1.15 杀死容器的docker kill命令 60 4.1.16 导入镜像的docker load命令 60 4.1.17 登录仓库的docker login命令 61 4.1.18 登出仓库的docker logout命令 61 4.1.19 查看容器日志的docker logs命令 62 4.1.20 管理网络的docker network命令 62 4.1.21 管理节点的docker node命令 63 4.1.22 暂停容器的docker pause命令 64 4.1.23 查看容器端口的docker port命令 64 4.1.24 查看本地容器信息的docker ps命令 65 4.1.25 拉取镜像的docker pull命令 65 4.1.26 推送镜像的docker push命令 66 4.1.27 重命名容器的docker rename命令 66 4.1.28 重启容器的docker restart命令 66 4.1.29 删除容器的docker rm命令 67 4.1.30 删除镜像的docker rmi命令 67 4.1.31 运行容器的docker run命令 68 4.1.32 导出镜像的docker save命令 72 4.1.33 搜索镜像的docker search命令 73 4.1.34 管理服务的docker service命令 74 4.1.35 启动容器的docker start命令 74 4.1.36 查看容器状态的docker stats命令 75 4.1.37 停止容器的docker stop命令 75 4.1.38 管理集群的docker swarm命令 76 4.1.39 设置镜像标签的docker tag命令 76 4.1.40 查看容器进程的docker top命令 77 4.1.41 恢复暂停容器的docker unpause命令 77 4.1.42 更新容器的docker update命令 77 4.1.43 查看Docker版本的docker version命令 78 4.1.44 管理数据卷的docker volume命令 78 4.1.45 设置等待的docker wait命令 79 4.2 启动第一个Docker容器 79 4.3 构建第一个Docker镜像 80 4.4 本章小结 81 第5章 Docker镜像 82 5.1 认识镜像 82 5.1.1 使用docker pull拉取镜像 82 5.1.2 搜索镜像 83 5.1.3 查看镜像信息 84 5.2 创建镜像 86 5.2.1 剖析Hello World镜像 86 5.2.2 从Dockerfile构建镜像 86 5.2.3 自动构建镜像 87 5.2.4 提交容器为镜像 90 5.3 导出和导入镜像 91 5.3.1 导出镜像到本地文件系统 91 5.3.2 从本地文件系统导入镜像 91 5.4 发布镜像 91 5.4.1 发布镜像到Docker Hub 92 5.4.2 给镜像打上标签 92 5.4.3 发布到第三方镜像仓库 92 5.5 删除镜像 93 5.5.1 删除本地镜像 93 5.5.2 删除仓库镜像 93 5.6 Docker镜像扩展 94 5.6.1 Docker镜像里有什么 94 5.6.2 Docker镜像的存储方式 95 5.6.3 联合挂载 95 5.6.4 Git式管理 96 5.7 本章小结 96 第6章 Dockerfile文件 97 6.1 Dockerfile基本结构 97 6.1.1 Dockerfile基础 97 6.1.2 Dockerfile的书写规则 98 6.1.3 基础镜像信息和维护者信息 99 6.2 Dockerfile指令 99 6.2.1 指定基础镜像的FROM指令 99 6.2.2 设置维护者信息的MAINTAINER指令 99 6.2.3 执行构建命令的RUN指令 99 6.2.4 设置镜像环境变量的ENV指令 100 6.2.5 复制文件的COPY指令 100 6.2.6 添加文件的ADD指令 100 6.2.7 指定端口暴露的EXPOSE指令 100 6.2.8 设置镜像启动命令的CMD指令 101 6.2.9 设置接入点的ENTRYPOINT指令 102 6.2.10 设置数据卷的VOLUME指令 102 6.2.11 设置构建用户的USER指令 103 6.2.12 设置工作的WORKDIR指令 103 6.2.13 设置二次构建指令的ONBUILD指令 104 6.2.14 设置元数据的LABEL指令 105 6.2.15 设置构建变量的ARG指令 105 6.2.16 设置停止信号的STOPSIGNAL指令 105 6.2.17 检查镜像状态的HEALTHCHECK指令 105 6.2.18 设置命令执行环境的SHELL指令 106 6.3 镜像构建实战 106 6.3.1 收集应用信息 106 6.3.2 编写Dockerfile 106 6.3.3 设置自动构建 107 6.4 本章小结 108 第7章 Docker仓库 109 7.1 官方仓库Docker Hub 109 7.1.1 Docker Hub登录与使用 109 7.1.2 Docker Hub与Docker Cloud 110 7.2 国内镜像仓库 111 7.2.1 中国科学技术大学镜像仓库 111 7.2.2 DaoCloud镜像加速器 112 7.2.3 阿里云镜像加速器 113 7.2.4 灵雀云镜像加速器 114 7.2.5 时速云镜像加速器 115 7.2.6 网易蜂巢 116 7.2.7 自建镜像加速器 116 7.3 私有仓库 117 7.3.1 搭建私有仓库 117 7.3.2 私有仓库的使用 117 7.3.3 私有仓库安全性 118 7.4 Registry原理 118 7.4.1 Registry组成 118 7.4.2 Registry工作流程 119 7.5 本章小结 120 第8章 Docker容器 121 8.1 容器基本操作 121 8.1.1 创建容器 122 8.1.2 启动容器 122 8.1.3 后台运行容器 123 8.1.4 自动重启容器 123 8.1.5 停止与杀死容器 124 8.1.6 删除容器 125 8.1.7 查看容器信息 125 8.2 进入容器内部 128 8.2.1 使用attach进入容器 128 8.2.2 使用exec进入容器 129 8.2.3 使用nsenter进入容器 129 8.3 导出和导入容器 130 8.3.1 导出容器 130 8.3.2 导入容器 130 8.4 容器结构 131 8.4.1 容器格式是什么 131 8.4.2 容器内部结构 132 8.5 本章小结 133 第9章 数据卷 134 9.1 数据卷是什么 134 9.1.1 数据卷介绍 134 9.1.2 数据卷容器介绍 135 9.2 为容器挂载数据卷 135 9.2.1 挂载数据卷 135 9.2.2 挂载数据卷容器 136 9.2.3 数据卷挂载小结 137 9.3 备份、恢复、迁移数据卷 139 9.3.1 备份数据卷 139 9.3.2 迁移、恢复数据卷 140 9.4 容器数据卷扩展 140 9.4.1 卷插件介绍 140 9.4.2 Convoy的使用 140 9.4.3 Flocker的使用 141 9.5 本章小结 142 第10章 网络管理 143 10.1 Docker网络基础 143 10.1.1 端口映射 143 10.1.2 端口暴露 145 10.1.3 容器互联 146 10.2 Docker网络模式 147 10.2.1 none模式 147 10.2.2 container模式 149 10.2.3 host模式 150 10.2.4 bridge模式 151 10.2.5 overlay模式 152 10.3 Docker网络配置 152 10.3.1 Daemon网络参数 152 10.3.2 配置DNS 153 10.3.3 network命令 154 10.4 本章小结 154 第3篇 Docker进阶实战 第11章 操作系统 156 11.1 Alpine发行版 156 11.1.1 官方镜像 156 11.1.2 运行Alpine Linux 157 11.1.3 构建基于Alpine Linux的镜像 157 11.1.4 Alpine Linux软件仓库 158 11.2 Busybox发行版 159 11.2.1 官方镜像 159 11.2.2 运行Busybox 159 11.2.3 构建基于Busybox的镜像 159 11.3 Debian/Ubuntu发行版 160 11.3.1 官方镜像 160 11.3.2 运行Debian/Ubuntu 160 11.3.3 构建基于Debian/Ubuntu的镜像 161 11.4 CentOS/Fedora发行版 162 11.4.1 官方镜像 162 11.4.2 运行CentOS/Fedora 162 11.5 CoreOS发行版 163 11.5.1 为什么使用CoreOS 163 11.5.2 用Vagrant安装CoreOS 163 11.6 RancherOS发行版 165 11.6.1 为什么使用RancherOS 165 11.6.2 在服务器安装RancherOS 166 11.6.3 基于RancherOS的Docker管理 167 11.7 本章小结 167 第12章 编排工具Compose 169 12.1 安装Docker Compose 169 12.1.1 二进制安装 169 12.1.2 使用Python pip安装 169 12.2 Compose命令基础 170 12.2.1 指定配置文件 171 12.2.2 指定项目名称 171 12.2.3 Compose环境变量 171 12.2.4 构建服务镜像的build命令 172 12.2.5 生成DAB包的bundle命令 173 12.2.6 检查配置语法的config命令 173 12.2.7 创建服务容器的create命令 174 12.2.8 清理项目的down命令 174 12.2.9 查看事件的events命令 175 12.2.10 进入服务的exec命令 176 12.2.11 杀死服务容器的kill命令 176 12.2.12 查看服务容器日志的logs命令 176 12.2.13 暂停服务容器的pause命令 177 12.2.14 查看服务容器端口状态的port命令 177 12.2.15 查看项目容器信息ps命令 177 12.2.16 拉取项目镜像的pull命令 178 12.2.17 推送项目镜像的push命令 179 12.2.18 重启服务容器的restart命令 179 12.2.19 删除项目容器的rm命令 179 12.2.20 执行一次性命令的run命令 180 12.2.21 设置服务容器数量的scale命令 182 12.2.22 启动服务容器的start命令 184 12.2.23 停止服务容器的stop命令 184 12.2.24 取消暂停的unpause命令 185 12.2.25 启动项目的up命令 185 12.3 Compose配置文件 186 12.3.1 配置文件基础 186 12.3.2 基本配置 187 12.3.3 网络配置 196 12.3.4 配置扩展 197 12.4 Compose实战 200 12.4.1 部署Django 200 12.4.2 部署Rails 202 12.4.3 部署WordPress 203 12.5 本章小结 205 第13章 Web服务器与应用 206 13.1 Apache服务器 206 13.1.1 官方镜像 206 13.1.2 运行官方镜像 208 13.1.3 基于Ubuntu构建Apache镜像 209 13.1.4 基于Alpine构建Apache镜像 210 13.1.5 第三方优质镜像 211 13.2 Nginx服务器 212 13.2.1 官方镜像介绍 212 13.2.2 运行官方镜像 212 13.2.3 构建Nginx镜像 214 13.2.4 第三方镜像推荐 216 13.3 Tomcat服务器 216 13.3.1 官方镜像介绍 217 13.3.2 运行官方镜像 217 13.3.3 构建Tomcat镜像 218 13.4 其他Web服务器 220 13.4.1 Caddy服务器 220 13.4.2 WebLogic服务器 221 13.5 本章小结 223 第14章 数据库 224 14.1 MySQL数据库 224 14.1.1 官方镜像的剖析与使用 224 14.1.2 构建自己的MySQL镜像 226 14.2 PostgreSQL数据库 228 14.2.1 官方镜像的使用 228 14.2.2 官方镜像的剖析 230 14.2.3 构建PostgreSQL镜像 232 14.2.4 数据备份与导入 234 14.3 Redis数据库 235 14.3.1 官方镜像的使用 235 14.3.2 构建自己的Redis镜像 236 14.4 MongoDB数据库 238 14.4.1 官方镜像的使用 238 14.4.2 构建自己的MongoDB镜像 239 14.5 其他 240 14.5.1 在容器中使用SQLite 240 14.5.2 构建自己的MariaDB镜像 241 14.5.3 使用Docker部署Orcale XE数据库 243 14.6 本章小结 244 第15章 编程语言 245 15.1 C/C++语言 245 15.1.1 官方镜像library/gcc 245 15.1.2 基于Alpine构建C/C++镜像 246 15.2 Golang语言 247 15.2.1 官方镜像library/golang 248 15.2.2 Beego框架 250 15.2.3 自助Git服务——Gogs 250 15.2.4 基于Alpine构建Golang镜像 252 15.3 Java语言 253 15.3.1 官方镜像library/openjdk 253 15.3.2 基于Alpine构建Java镜像 254 15.3.3 Tomcat服务器 255 15.3.4 下一代集成开发环境——Eclipse Che 256 15.4 JavaScript(Node.js)语言 258 15.4.1 官方镜像library/node 258 15.4.2 vue.js框架 260 15.4.3 Express框架 261 15.4.4 浏览器里的IDE——Cloud9-IDE 262 15.4.5 基于Alpine构建Node.js镜像 264 15.5 PHP语言 265 15.5.1 官方镜像library/php 265 15.5.2 快速安装扩展 267 15.5.3 LNMP环境组合 268 15.5.4 基于Alpine构建PHP镜像 270 15.5.5 自建私有云存储——ownCloud 271 15.5.6 Typecho博客系统 273 15.6 Python语言 275 15.6.1 官方镜像library/python 275 15.6.2 Flask框架 275 15.6.3 基于Alpine构建Python镜像 277 15.7 Swift语言 277 15.7.1 构建Swift镜像 277 15.7.2 Kitura框架 278 15.8 本章小结 280 第16章 Docker API介绍 281 16.1 认识Docker API 281 16.1.1 RESTful介绍 281 16.1.2 开启socket 282 16.1.3 使用curl 283 16.1.4 使用Postman 284 16.2 Docker Remote API介绍 286 16.2.1 容器API 286 16.2.2 镜像API 293 16.3 其他API 299 16.3.1 常用API 300 16.3.2 Trusted Registry API介绍 302 16.4 本章小结 304 第17章 私有仓库 305 17.1 Docker Registry介绍 305 17.1.1 部署Docker Registry 305 17.1.2 私有仓库的push与pull 305 17.1.3 配置Registry 306 17.1.4 添加Docker Hub Mirror功能 311 17.2 认证与前端 312 17.2.1 设置反代理 312 17.2.2 为私有仓库添加认证服务 313 17.2.3 为私有仓库添加可视化界面 315 17.3 企业级私有仓库Harbor 316 17.3.1 Harbor配置详解 316 17.3.2 配置HTTPS 318 17.3.3 使用Compose启动Harbor 320 17.4 私有仓库前端授权工具Portus 321 17.4.1 一键部署Portus 321 17.4.2 手动配置 321 17.4.3 启动Portus 322 17.5 本章小结 323 第18章 集群网络 324 18.1 Swarm集群 324 18.1.1 认识Swarm 324 18.1.2 建立跨主机网络 328 18.1.3 在跨主机网络上部署应用 328 18.1.4 Swarm集群负载 331 18.2 第三方网络管理工具 333 18.2.1 Weave介绍 333 18.2.2 Flannel介绍 335 18.2.3 Pipwork介绍 335 18.3 第三方服务发现 336 18.3.1 Etcd介绍 336 18.3.2 Consul介绍 337 18.4 第三方集群管理 337 18.4.1 Kubernetes介绍 337 18.4.2 Mesos Shipyard介绍 339 18.5 本章小结 339 第19章 Docker安全 340 19.1 Docker安全机制 340 19.1.1 Daemon安全 340 19.1.2 容器与镜像安全 341 19.2 Docker资源控制 342 19.2.1 限制CPU 342 19.2.2 限制内存 343 19.2.3 限制I/O 343 19.2.4 文件系统防护 344 19.2.5 镜像瘦身神器Docker Slim 344 19.2.6 强制访问控制工具SELinux或AppArmor 344 19.3 本章小结 345 |