第1章 KVM概述 1 1.1 虚拟化技术简介 1 1.1.1 虚拟化的定义 1 1.1.2 操作系统虚拟化的发展历史 2 1.1.3 虚拟化的分类 2 1.1.4 虚拟化的目的 3 1.2 KVM简介 3 1.2.1 什么是KVM 4 1.2.2 KVM的发展史 4 1.2.3 KVM历史大事件 4 1.2.4 KVM的功能 4 1.2.5 KVM的优势 5 1.3 习题 6 第2章 安装KVM 7 2.1 KVM架构解析 7 2.1.1 KVM内核模块 7 2.1.2 QEMU用户态工具 8 2.2 安装环境准备 8 2.2.1 Windows环境准备 8 2.2.2 下载与安装VMware Workstation 10 2.2.3 下载CentOS Steam 9的ISO文件 13 2.2.4 创建新虚拟机 14 2.3 图形化安装KVM 20 2.3.1 克隆虚拟机 20 2.3.2 为虚拟机安装操作系统 23 2.3.3 图形化下安装KVM 29 2.4 系统*小化安装KVM 32 2.5 KVM管理工具 37 2.5.1 libvirt 37 2.5.2 virsh 37 2.5.3 virt-manager 38 2.5.4 virt-viewer 38 2.6 习题 39 第3章 创建KVM虚拟机 41 3.1 Virt-Manager图形化创建KVM虚拟机 41 3.1.1 创建虚拟机 41 3.1.2 使用Virt-Manager查看当前配置 51 3.2 virt-install命令创建虚拟机 52 3.2.1 创建虚拟机并通过交互模式安装 53 3.2.2 查看虚拟机与环境的配置 55 3.2.3 virt-install**用法示例 55 3.3 VNC连接KVM虚拟机 57 3.3.1 什么是VNC 57 3.3.2 VNC服务端 58 3.3.3 VNC客户端 59 3.4 习题 61 第4章 虚拟机管理 63 4.1 libvirt架构描述 63 4.2 使用virsh管理虚拟机 64 4.2.1 获得帮助 65 4.2.2 常用子命令 67 4.3 习题 74 第5章 管理KVM虚拟网络 75 5.1 查看默认网络环境 75 5.1.1 查看宿主机的网络环境 75 5.1.2 查看libvirt的网络环境 77 5.1.3 查看虚拟机的网络配置 80 5.1.4 libvirt管理的虚拟网络 81 5.2 创建和管理隔离网络 81 5.2.1 通过virsh创建和管理隔离 网络 82 5.2.2 使用隔离网络 84 5.3 创建和管理NAT网络 85 5.3.1 使用virsh创建NAT网络 86 5.3.2 使用NAT网络 89 5.4 创建和管理桥接网络 90 5.4.1 在宿主机上创建网桥 91 5.4.2 使用网桥 93 5.5 习题 94 第6章 管理KVM虚拟存储 95 6.1 常见的存储资源 95 6.2 虚拟磁盘类型 96 6.3 qemu-img磁盘管理命令 97 6.3.1 创建和格式化磁盘文件 97 6.3.2 调整磁盘文件的大小 99 6.3.3 镜像文件格式转换 100 6.3.4 快照管理 101 6.4 存储池 103 6.4.1 查看当前存储池 104 6.4.2 存储池分类 105 6.4.3 创建基于目录的存储池 106 6.4.4 创建基于LVM逻辑卷的 存储池 109 6.4.5 创建基于网络文件系统的 存储池 111 6.5 存储卷 114 6.5.1 查看存储卷信息 115 6.5.2 创建存储卷 116 6.5.3 存储卷管理 120 6.6 习题 122 第7章 容器技术简介 123 7.1 容器的定义 123 7.2 实验环境部署 124 7.3 容器与虚拟机 126 7.4 容器的发展史 129 7.5 容器的标准化 131 7.6 容器的应用场景 132 7.7 习题 134 第8章 Docker镜像管理 135 8.1 镜像的作用 135 8.2 获取镜像 136 8.3 镜像的结构 138 8.4 Docker的存储驱动程序 139 8.5 查看镜像信息 144 8.5.1 使用images/image ls子命令 列出镜像 145 8.5.2 使用tag子命令为镜像添加 标签 146 8.5.3 使用inspect子命令查看 详细信息 148 8.5.4 使用history子命令查看 镜像的构建历史 148 8.6 在Docker官方仓库中搜寻 镜像 149 8.7 删除和清理镜像 150 8.7.1 镜像的状态 150 8.7.2 删除镜像 151 8.7.3 清理镜像 152 8.8 创建新镜像 153 8.8.1 基于已有容器创建新镜像 153 8.8.2 使用Dockerfile创建 新镜像 156 8.8.3 导入本地模板来创建 新镜像 158 8.9 保存与加载镜像 160 8.10 集中管理镜像 163 8.10.1 上传镜像到公共仓库 163 8.10.2 上传镜像到私有仓库 165 8.11 习题 168 第9章 Docker容器管理 171 9.1 容器管理概述 171 9.2 创建容器 173 9.2.1 创建新容器 173 9.2.2 启动容器 175 9.2.3 新建并启动容器 176 9.2.4 在后台运行容器 177 9.2.5 查看容器输出 178 9.3 停止容器 178 9.3.1 暂停/恢复容器 178 9.3.2 停止容器 180 9.3.3 杀死容器 181 9.4 进入容器内部 182 9.4.1 attach子命令 182 9.4.2 exec子命令 183 9.5 删除容器 184 9.5.1 rm子命令 184 9.5.2 prune子命令 185 9.6 迁移容器 186 9.7 查看容器 187 9.7.1 查看容器详情 187 9.7.2 查看容器内进程 188 9.7.3 查看统计信息 188 9.8 其他容器命令 189 9.8.1 复制文件 189 9.8.2 查看变更 189 9.8.3 查看端口映射 190 9.8.4 更新配置 190 9.9 习题 191 第10章 Docker网络管理 193 10.1 Docker网络的启动和配置 193 10.1.1 网络启动过程 193 10.1.2 网络配置参数 195 10.2 容器的名称解析 196 10.2.1 名称解析器默认的配置 196 10.2.2 修改解析器的配置 197 10.3 容器的访问控制 199 10.3.1 容器访问外部网络 199 10.3.2 容器之间相互访问 203 10.4 容器的端口映射 206 10.5 容器的便捷互联机制 208 10.6 容器的网络管理命令 210 10.6.1 列出网络 210 10.6.2 查看网络信息 211 10.6.3 创建自定义网络 213 10.6.4 接入网络 218 10.6.5 断开网络 220 10.6.6 删除和清理网络 222 10.7 配置host网络模式 223 10.8 配置none网络模式 225 10.9 习题 225 第11章 Docker存储管理 227 11.1 Docker存储概述 227 11.2 Docker的卷 228 11.2.1 Docker卷的管理 228 11.2.2 Docker卷的使用 230 11.2.3 Docker卷的适用场景 231 11.3 Docker的绑定挂载 231 11.4 习题 234 第12章 使用Dockerfile创建镜像 235 12.1 Dockerfile的基本结构 235 12.2 Dockerfile的配置指令 242 12.3 Dockerfile的操作指令 247 12.4 创建镜像 250 12.4.1 命令选项 250 12.4.2 父镜像的选择 251 12.4.3 使用.dockerignore文件 252 12.4.4 多步骤创建 252 12.5 习题 253 第13章 Docker实战案例 255 13.1 Linux操作系统镜像 255 13.1.1 BusyBox 256 13.1.2 Alpine 257 13.1.3 Debian/Ubuntu 258 13.1.4 CentOS/Fedora 259 13.2 为镜像添加SSH服务 259 13.3 Web服务 262 13.3.1 Nginx 262 13.3.2 Apache HTTPD 263 13.4 数据库服务 263 13.4.1 MySQL 264 13.4.2 MariaDB 266 13.4.3 MongoDB 266 13.5 习题 268 参考文献 269