更多书籍文章点击进入>> CiCi岛php
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍html
权威做者:具备十多年虚拟化研究经验,国内首批研究Docker容器技术的专家,Docker开源项目贡献者 快速入门:透过简单的理论讲解,带你进入Docker的世界 步骤详细:手把手教你配置方法,为你量身定制本身的Docker 内容丰富:揭露镜像制做过程,教你搭建镜像仓库git
本书介绍了Docker容器技术的背景和基本原理,以及如何定制化符合用户要求的Docker Daemon,增长安全性、提升效率。.镜像提供了千差万别的服务,每个镜像都是要知足用户的某种需求。如何制做出体积小、安全性高、可配置性强的镜像是困扰不少开发者的问题,书中详细介绍了相关解决方案。本书的最后还介绍了各类流行的开源项目,让读者了解Docker生态圈。github
廖煜,电子科技大学计算机硕士,Ghostcloud联合创始人。从事虚拟化技术研究十多年,拥有丰富的虚拟化、云计算及存储技术经验。国内第一批研究Docker容器技术的专家,Docker开源项目贡献者。前后供职于Intel、Symantec、EMC等IT公司。从2006年开始,在Intel MCP实验室研究虚拟化技术。在Symantec期间,做为核心成员研发了Symantec第一款虚拟化产品VxVI;并负责研发Symantec第一款存储一体机N8000系列。在EMC期间,主要从事VNX系列产品的研发测试工做。 晏东,Ghostcloud创始人,超过20年编程经验,熟悉多种编程语言,全栈工程师。国内最先一批Go语言使用者,Docker项目Committer,Beego项目Committer, 阿里云社区Docker技术专家。曾任索贝数码分布式文件系统及高可用中间件资深架构师,曾任Symantec/Veritas技术负责人,拥有超过12年分布式系统行业经验。docker
目 录
第1篇 Docker基础知识介绍
第1章 云计算简介 2
1.1 虚拟化技术的分类和历史 3
1.1.1 硬件级虚拟化历史 3
1.1.2 操做系统级虚拟化历史 4
1.2 云计算服务模式 4
1.3 Docker介绍 5
1.3.1 Docker主要解决什么问题 6
1.3.2 Docker的历史 6
1.3.3 Docker是什么 6
1.4 Linux快速入门 7
1.4.1 选取什么发行版本 7
1.4.2 使用图形界面仍是命令行界面 8
1.4.3 英文仍是中文 8
1.4.4 安装Ubuntu 14.04 8
1.4.5 Linux经常使用工具 11
1.4.6 启用root 用户 12
1.4.7 使用vim 12
1.4.8 配置网络 13
1.4.9 启用SSH Server 13
1.4.10 经过客户端远程链接Linux主机 14
1.4.11 免密码登陆Linux主机 15
1.4.12 安装软件 15
1.4.13 公有云主机快速入门 16
1.4.14 购买云主机 17
1.4.15 链接到云主机 19
1.5 习题 21
第2章 Docker的安装 22
2.1 在Ubuntu下安装Docker 22
2.1.1 前置条件 22
2.1.2 更新apt源 23
2.1.3 Ubuntu 14.04特殊处理 24
2.1.4 正式安装 24
2.2 在CentOS下安装 26
2.2.1 前置条件 26
2.2.2 更新yum 26
2.2.3 添加仓库 26
2.2.4 正式安装 26
2.3 经过Ghostcloud进行安装 27
2.3.1 注册Ghostcloud帐号 28
2.3.2 接入新主机 28
2.3.3 获取安装脚本 28
2.3.4 验证Docker安装是否成功 30
2.3.5 运行第一个容器 30
2.4 经过官方的安装脚本安装 31
2.5 在非Linux系统下安装Docker 32
2.6 习题 32
第3章 使用Docker 33
3.1 运行hello-world 33
3.2 容器和镜像 35
3.2.1 什么是容器 35
3.2.2 什么是镜像 35
3.2.3 容器和镜像的关系 36
3.3 Docker入门操做 36
3.3.1 查看Docker基本信息 36
3.3.2 下载第一个基础镜像 37
3.3.3 运行一个含shell终端的容器 38
3.3.4 查看容器运行 38
3.3.5 运行长时间容器 38
3.3.6 查看全部容器 39
3.4 习题 40
第2篇 Docker的基本使用
第4章 Docker深刻解析 42
4.1 Docker的架构 42
4.2 Docker如何工做 43
4.2.1 Docker Image工做方式 43
4.2.2 Docker Registry工做方式 44
4.2.3 容器工做方式 44
4.2.4 底层的技术 45
4.3 Docker Client和Daemon 46
4.4 经过容器运行Web应用 47
4.4.1 使用国内仓库 48
4.4.2 拉取apache-php镜像 48
4.4.3 运行镜像 48
4.4.4 网页访问 48
4.4.5 修改页面内容 49
4.4.6 持久化容器 50
4.5 镜像制做 50
4.5.1 查看本机镜像 50
4.5.2 获取镜像的三种方式 51
4.5.3 查找DockerHub镜像 51
4.5.4 查找其余仓库镜像 52
4.5.5 push镜像 54
4.5.6 根据Dockerfile编译镜像 55
4.5.7 删除镜像 56
4.6 docker run命令 56
4.6.1 docker run的语法格式 56
4.6.2 先后台运行 57
4.6.3 容器的标识 57
4.6.4 PID设置 58
4.6.5 UTS(--uts)设置 58
4.6.6 IPC(--ipc)设置 59
4.6.7 网络设置 59
4.6.8 重启策略(--restart) 60
4.6.9 Clean up (--rm) 61
4.6.10 CGroups控制 61
4.6.11 特权模式和Capabilities 61
4.6.12 日志驱动(--log-driver) 62
4.6.13 覆盖image的默认参数 62
4.7 习题 63
第5章 容器的网络 64
5.1 容器自带网络 64
5.2 网络详情 65
5.3 用户自定义网络 67
5.3.1 桥接网络 67
5.3.2 Overlay网络 68
5.4 习题 71
第6章 容器的数据 72
6.1 数据卷 72
6.1.1 建立一个数据卷 72
6.1.2 映射一个外部卷 73
6.2 使用数据型容器 73
6.3 备份、还原和迁移数据卷 73
6.4 容器和代码进行关联 74
6.5 习题 74
第7章 镜像仓库 75
7.1 仓库相关的Docker命令 75
7.1.1 登陆 75
7.1.2 查找 76
7.1.3 拉取 76
7.1.4 提交 76
7.2 习题 76
第3篇 Docker的高级使用
第8章 镜像和容器的存储结构 78
8.1 镜像、容器和存储驱动的关系 78
8.1.1 镜像和镜像层 78
8.1.2 镜像存储方式 80
8.1.3 一个迁移例子 81
8.1.4 容器和容器层 82
8.1.5 写时复制策略 83
8.1.6 使用共享技术减少镜像体积 83
8.1.7 使用复制技术加快容器启动时间 86
8.1.8 数据卷和存储驱动 90
8.2 如何选择存储驱动 90
8.2.1 存储设备和存储驱动 92
8.2.2 如何存储驱动 92
8.3 AUFS存储驱动 94
8.3.1 AUFS中的镜像 94
8.3.2 AUFS中的容器读写 95
8.3.3 在AUFS中删除文件 95
8.3.4 如何配置AUFS 96
8.3.5 镜像的存储方式 96
8.3.6 容器的存储方式 97
8.3.7 AUFS的性能 99
8.4 Devicemapper存储驱动 99
8.4.1 Devicemapper中的镜像 100
8.4.2 Devicemapper中的读操做 101
8.4.3 Devicemapper中的写操做 102
8.4.4 如何配置Devicemapper 103
8.4.5 在生产环境中配置direct-lvm模式 104
8.4.6 Devicemapper的存储方式 107
8.4.7 动态扩容loop-lvm模式下的thin pool 108
8.4.8 动态扩容direct-lvm模式下的thin pool 110
8.4.9 Devicemapper的性能 110
8.5 Btrfs存储驱动 111
8.5.1 Btrfs中的镜像 112
8.5.2 Btrfs的存储方式 114
8.5.3 Btrfs中的读写 114
8.5.4 如何配置Btrfs 115
8.5.5 Btrfs的性能 116
8.6 ZFS存储驱动 117
8.6.1 ZFS中的镜像 117
8.6.2 ZFS中的读写 118
8.6.3 如何配置ZFS 119
8.6.4 ZFS的性能 121
8.7 Overlay存储驱动 122
8.7.1 Overlay中的镜像 122
8.7.2 Overlay2中的镜像 125
8.7.3 Overlay中的读写 127
8.7.4 如何配置Overlay/Overlay2 127
8.7.5 Overlay的性能 128
8.8 习题 129
第9章 定制Docker Daemon 130
9.1 修改Docker Daemon的三种方式 130
9.1.1 直接启动Docker Daemon 132
9.1.2 修改Docker Daemon启动项 132
9.1.3 自定义Docker Daemon配置文件 135
9.2 仓库相关配置 137
9.2.1 --disable-legacy-registry选项 137
9.2.2 --registry-mirror选项 138
9.2.3 --insecure-registry选项 139
9.3 安全相关配置 139
9.3.1 -p, --pidfile选项 139
9.3.2 -H, --host选项 139
9.3.3 --tls, --tlscacert, --tlscert, --tlskey, --tlsverify选项 141
9.4 日志相关 145
9.4.1 -D,--debug选项 145
9.4.2 --log-level选项 145
9.4.3 --log-driver和--log-opt选项 146
9.5 存储相关配置 148
9.5.1 -g, --graph选项 148
9.5.2 --storage-driver选项 148
9.5.3 --storage-opt选项 149
9.6 网桥相关配置 154
9.6.1 --bip选项 154
9.6.2 --fixed-cidr,--fixed- cidr-v6选项 154
9.6.3 --mtu选项 155
9.6.4 -b, --bridge选项 155
9.7 容器与外部通讯 156
9.7.1 --ip-forward选项 156
9.7.2 --iptables选项 156
9.7.3 --ip, --ipv6选项 156
9.8 其余网络配置 157
9.8.1 --default-gateway、--default-gateway-v6选项 157
9.8.2 --dns,--dns-opt,--dns-search选项 158
9.9 execdriver配置 158
9.9.1 --exec-opt选项 158
9.9.2 --exec-root选项 159
9.10 其余配置 159
9.11 习题 159
第10章 如何编写Dockerfile 160
10.1 本地编译镜像 160
10.2 dockerignore文件 162
10.3 Dockerfile格式 163
10.4 Dockerfile指令详解 163
10.4.1 FROM指令 163
10.4.2 MAINTAINER指令 164
10.4.3 RUN指令 164
10.4.4 CMD指令 164
10.4.5 LABEL指令 165
10.4.6 EXPOSE指令 166
10.4.7 ENV指令 166
10.4.8 ADD指令 168
10.4.9 COPY指令 169
10.4.10 ENTRYPOINT指令 170
10.4.11 VOLUME指令 173
10.4.12 USER指令 174
10.4.13 WORKDIR指令 174
10.4.14 ARG指令 175
10.4.15 ONBUILD指令 177
10.4.16 STOPSIGNAL指令 178
10.5 CMD、ENTRYPOINT和RUN的区别 178
10.6 习题 179
第11章 Dockerfile最佳实践 181
11.1 基本原则 181
11.2 Dockerfile指令最佳实践 183
11.2.1 FROM指令最佳实践 183
11.2.2 RUN指令最佳实践 183
11.2.3 CMD指令最佳实践 185
11.2.4 EXPOSE指令最佳实践 186
11.2.5 ENV指令最佳实践 188
11.2.6 ADD和COPY指令最佳实践 189
11.2.7 ENTRYPOINT指令最佳实践 191
11.2.8 VOLUME指令最佳实践 194
11.2.9 UESR指令最佳实践 196
11.2.10 使用gosu工具 196
11.2.11 WORKDIR指令最佳实践 198
11.2.12 ONBUILD指令最佳实践 199
11.3 如何减少镜像体积 199
11.4 一些官方镜像的Dockerfile 205
11.4.1 Golang镜像 205
11.4.2 Perl镜像 208
11.4.3 Hy镜像 209
11.4.4 Rails镜像 210
11.5 习题 211
第12章 使用容器提供服务 212
12.1 使用容器提供数据库服务 212
12.1.1 使用容器提供MySQL 212
12.1.2 使用容器提供MongoDB 215
12.2 如何使用容器提供Web服务 217
12.2.1 使用容器提供Apache HTTP服务 217
12.2.2 使用容器提供Django服务 218
12.2.3 使用容器提供Gitlab服务 219
12.3 如何使用容器提供编程环境 220
12.3.1 使用容器提供Java环境 221
12.3.2 使用容器提供Golang环境 222
12.4 习题 225
第13章 创建私有镜像仓库 226
13.1 镜像仓库配置详解 227
13.2 version选项 231
13.3 log选项 231
13.4 hooks选项 231
13.5 storage选项 232
13.5.1 filesystem选项 233
13.5.2 azure选项 234
13.5.3shell
前 言
为何要写这本书?
在2013年3月,Docker项目正式开源。短短的三年中,Docker已经迅速普及开来,云计算、大数据、互联网等相关IT技术公司纷纷开始拥抱Docker。在硅谷,有200多家Docker相关的创业公司。Google、Microsoft、AWS、IBM等大型技术公司都已经加入Docker生态圈,开始使用Docker,并为Docker社区共享。OpenStack、Hadoop等云计算、大数据框架也开始向Docker迁移。
在国内,从Docker诞生之日起,各大技术公司和极客们就开始紧密关注这项技术。从2014年下半年开始,陆续有公司开始把现有系统迁移到Docker平台。BAT、华为、新浪、京东都有Docker相关产品上线。Docker的普及愈演愈烈,大有掀起第二次云计算革命之势。
笔者从2014年年初开始接触Docker,一下就被Docker的轻量性、便捷性所吸引。经过在实际项目中使用Docker,发现Docker天生就是要解决敏捷开发、持续集成、持续发布、动态迁移、动态伸缩等互联网、云计算、大数据行业广泛存在的问题。经过把产品容器化,加速了开发、测试、发布的流程,产品发布时间从半天减小到47秒。经过镜像提交产品,解决了开发、测试、发布的环境异构性问题,使产品能够平滑地在各个部门之间传递。
在Docker的实际使用中,笔者遇到了不少棘手的问题,花费了大量的时间研究、分析、测试、解决这些问题。同时,笔者也发现不少初学者正在重复笔者走过的一些弯路。究其缘由,是目前国内没有一本详细介绍Docker实战的书籍。所以,笔者决定把本身的一些经验总结出来,编撰成书,为广大读者服务。
本书有何特点?
1.配置详细
本书涵盖Docker Daemon、Docker存储驱动、Docker镜像仓库的全部配置选项,并对每一个选项都有详细的介绍。
2.注重实践性
本书从实践出发,介绍在实际应用场景中应该如何定制Docker。详细介绍镜像制做的步骤、指令和最佳实践,各类存储驱动的区别和使用场合,以及Docker Daemon各类扩展功能和接口的使用方法,并列举了典型镜像的使用方法。
3.对Docker框架和原理进行分析
本书深刻浅出地介绍Docker使用的核心技术:Namespace、CGroups和UnionFS。方便读者理解Docker原理,并在实际应用中能够更好地使用Docker。
4.项目案例典型,实战性强,有较高的应用价值
本书中的第11章和第12章专门从实践出发,详细介绍镜像和容器的使用,并列出详细步骤,方便读者快速上手。
5.提供完善的技术支持和售后服务
本书提供专门的技术支持邮箱:book@ghostcloud.cn。读者在阅读本书过程当中有任何疑问均可以经过该邮箱得到帮助。
本书内容及知识体系
第1篇 Docker基础知识介绍(第1~3章)
本篇介绍云计算的历史和基本概念,Docker的安装和基本使用。帮助读者对Docker有一个基本的了解,并搭建本身的Docker环境。
第2篇 Docker的基本使用(第4~7章)
本篇介绍Docker的构架、Docker的工做方式、下载镜像、制做镜像、运行容器、配置容器网络、在容器中实现数据持久化、备份还原迁移容器卷、关联容器代码作持续集成、查找镜像、下载镜像、上传镜像等内容。
第3篇 Docker的高级使用(第8~13章)
本篇主要介绍Docker中的存储驱动、配置Docker Daemon、制做镜像和搭建仓库等内容。
Docker镜像提供了丰富的应用,对于Docker的流行起了重要做用。本篇详细介绍如何制做镜像,为读者介绍基本指令和最佳实践。Docker镜像和容器有很是紧密的联系,本篇详细介绍二者的关系。
镜像和容器是经过Docker的存储驱动管理的。Docker中有多种存储驱动,每种存储驱动在性能、可扩展性、安全性上有差异,不一样应用场景应该选择不一样的存储驱动。本篇详细介绍各类存储驱动,为读者在实际应用中选择存储驱动作指导。
Docker Daemon是Docker管理镜像和容器的核心,除基本功能外,还提供不少扩展功能和接口。本篇详细介绍每种扩展功能和接口的具体使用方法。
第4篇 Docker常见问题(第14章)
本篇主要总结Docker学习中遇到的一些问题,为读者提供统一的解释。
适合阅读本书的读者
?在校计算机相关专业的学生;
?Docker初学者;
?基于UNIX/Linux环境的系统运维人员;
?基于UNIX/Linux环境的测试人员;
?基于UNIX/Linux环境的开发人员;
?系统构架师;
?CTO;
?互联网行业的开发、测试、运维人员;
?初创公司的技术人员;
?云计算、大数据行业的技术人员。
阅读本书的建议
?没有云计算背景知识的读者,建议从第1章顺次阅读。
?对于尚未使用过Docker的读者,建议从第2章开始阅读,首先搭建本身的实验环境。
?对于特别关注Docker在存储方面的读写速度、稳定性、安全性的读者,建议详细阅读第8章。
?对于须要在特定环境下定制Docker Daemon的读者,建议详细阅读第9章,学习如何修改Docker Daemon的配置,以适应具体应用场景。
?对于但愿在开发、测试、部署中使用Docker镜像提交产品的开发人员和运维人员,建议详细阅读第10章和第11章,学习如何制做镜像。
?对于但愿直接使用容器提供服务的读者,能够详细阅读第12章,学习如何使用官方镜像运行容器。
?对于须要创建私有仓库管理镜像的读者,能够详细阅读第13章,学习搭建私有镜像仓库。
?每章中都介绍详细的配置选项,读者须要经过实验,深入理解和熟练地使用这些选项。
?读者能够首先通读一遍本书,对Docker使用过程有一个大概的了解,而后根据本身的应用场景,详细阅读相关章节。数据库
本篇文章由一文多发平台ArtiPub自动发布apache