新書推薦:
《
FANUC工业机器人装调与维修
》
售價:HK$
102.4
《
吕著中国通史
》
售價:HK$
64.4
《
爱琴海的光芒 : 千年古希腊文明
》
售價:HK$
204.7
《
不被他人左右:基于阿德勒心理学的无压力工作法
》
售價:HK$
67.9
《
SDGSAT-1卫星热红外影像图集
》
售價:HK$
457.7
《
股市趋势技术分析(原书第11版)
》
售價:HK$
227.7
《
汉匈战争全史
》
售價:HK$
102.4
《
恶的哲学研究(社会思想丛书)
》
售價:HK$
109.8
|
編輯推薦: |
权威作者:具有十多年虚拟化研究经验,国内首批研究Docker容器技术的专家,Docker开源项目贡献者
快速入门:透过简单的理论讲解,带你进入Docker的世界
步骤详细:手把手教你配置方法,为你量身定制自己的Docker
内容丰富:揭露镜像制作过程,教你搭建镜像仓库
|
內容簡介: |
本书介绍了Docker容器技术的背景和基本原理,以及如何定制化符合用户要求的Docker Daemon,增加安全性、提高效率。.镜像提供了千差万别的服务,每一个镜像都是要满足用户的某种需求。如何制作出体积小、安全性高、可配置性强的镜像是困扰很多开发者的问题,书中详细介绍了相关解决方案。本书的最后还介绍了各种流行的开源项目,让读者了解Docker生态圈。
|
關於作者: |
廖煜,电子科技大学计算机硕士,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技术专家。曾任索贝数码分布式文件系统及高可用中间件资深架构师,曾任SymantecVeritas技术负责人,拥有超过12年分布式系统行业经验。
|
目錄:
|
目录
第1篇Docker基础知识介绍
第1章 云计算简介2
1.1虚拟化技术的分类和历史3
1.1.1硬件级虚拟化历史3
1.1.2操作系统级虚拟化历史4
1.2云计算服务模式4
1.3Docker介绍5
1.3.1Docker主要解决什么问题6
1.3.2Docker的历史6
1.3.3Docker是什么6
1.4Linux快速入门7
1.4.1选取什么发行版本7
1.4.2使用图形界面还是命令行界面8
1.4.3英文还是中文8
1.4.4安装Ubuntu 14.048
1.4.5Linux常用工具11
1.4.6启用root 用户12
1.4.7使用vim12
1.4.8配置网络13
1.4.9启用SSH Server13
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下安装Docker22
2.1.1前置条件22
2.1.2更新apt源23
2.1.3Ubuntu 14.04特殊处理24
2.1.4正式安装24
2.2在CentOS下安装26
2.2.1前置条件26
2.2.2更新yum26
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系统下安装Docker32
2.6习题32
第3章 使用Docker33
3.1运行hello-world33
3.2容器和镜像35
3.2.1什么是容器35
3.2.2什么是镜像35
3.2.3容器和镜像的关系36
3.3Docker入门操作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.1Docker的架构42
4.2Docker如何工作43
4.2.1Docker Image工作方式43
4.2.2Docker Registry工作方式44
4.2.3容器工作方式44
4.2.4底层的技术45
4.3Docker Client和Daemon46
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.5push镜像54
4.5.6根据Dockerfile编译镜像55
4.5.7删除镜像56
4.6docker run命令56
4.6.1docker run的语法格式56
4.6.2前后台运行57
4.6.3容器的标识57
4.6.4PID设置58
4.6.5UTS--uts设置58
4.6.6IPC--ipc设置59
4.6.7网络设置59
4.6.8重启策略(--restart)60
4.6.9Clean up --rm61
4.6.10CGroups控制61
4.6.11特权模式和Capabilities61
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.2Overlay网络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.3AUFS存储驱动94
8.3.1AUFS中的镜像94
8.3.2AUFS中的容器读写95
8.3.3在AUFS中删除文件95
8.3.4如何配置AUFS96
8.3.5镜像的存储方式96
8.3.6容器的存储方式97
8.3.7AUFS的性能99
8.4Devicemapper存储驱动99
8.4.1Devicemapper中的镜像100
8.4.2Devicemapper中的读操作101
8.4.3Devicemapper中的写操作102
8.4.4如何配置Devicemapper103
8.4.5在生产环境中配置direct-lvm模式104
8.4.6Devicemapper的存储方式107
8.4.7动态扩容loop-lvm模式下的thin pool108
8.4.8动态扩容direct-lvm模式下的thin pool110
8.4.9Devicemapper的性能110
8.5Btrfs存储驱动111
8.5.1Btrfs中的镜像112
8.5.2Btrfs的存储方式114
8.5.3Btrfs中的读写114
8.5.4如何配置Btrfs115
8.5.5Btrfs的性能116
8.6ZFS存储驱动117
8.6.1ZFS中的镜像117
8.6.2ZFS中的读写118
8.6.3如何配置ZFS119
8.6.4ZFS的性能121
8.7Overlay存储驱动122
8.7.1Overlay中的镜像122
8.7.2Overlay2中的镜像125
8.7.3Overlay中的读写127
8.7.4如何配置OverlayOverlay2127
8.7.5Overlay的性能128
8.8习题129
第9章 定制Docker Daemon130
9.1修改Docker Daemon的三种方式130
9.1.1直接启动Docker Daemon132
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.9execdriver配置158
9.9.1--exec-opt选项158
9.9.2--exec-root选项159
9.10其他配置159
9.11习题159
第10章 如何编写Dockerfile160
10.1本地编译镜像160
10.2dockerignore文件162
10.3Dockerfile格式163
10.4Dockerfile指令详解163
10.4.1FROM指令163
10.4.2MAINTAINER指令164
10.4.3RUN指令164
10.4.4CMD指令164
10.4.5LABEL指令165
10.4.6EXPOSE指令166
10.4.7ENV指令166
10.4.8ADD指令168
10.4.9COPY指令169
10.4.10ENTRYPOINT指令170
10.4.11VOLUME指令173
10.4.12USER指令174
10.4.13WORKDIR指令174
10.4.14ARG指令175
10.4.15ONBUILD指令177
10.4.16STOPSIGNAL指令178
10.5CMD、ENTRYPOINT和RUN的区别178
10.6习题179
第11章 Dockerfile最佳实践181
11.1基本原则181
11.2Dockerfile指令最佳实践183
11.2.1FROM指令最佳实践183
11.2.2RUN指令最佳实践183
11.2.3CMD指令最佳实践185
11.2.4EXPOSE指令最佳实践186
11.2.5ENV指令最佳实践188
11.2.6ADD和COPY指令最佳实践189
11.2.7ENTRYPOINT指令最佳实践191
11.2.8VOLUME指令最佳实践194
11.2.9UESR指令最佳实践196
11.2.10使用gosu工具196
11.2.11WORKDIR指令最佳实践198
11.2.12ONBUILD指令最佳实践199
11.3如何减小镜像体积199
11.4一些官方镜像的Dockerfile205
11.4.1Golang镜像205
11.4.2Perl镜像208
11.4.3Hy镜像209
11.4.4Rails镜像210
11.5习题211
第12章 使用容器提供服务212
12.1使用容器提供数据库服务212
12.1.1使用容器提供MySQL212
12.1.2使用容器提供MongoDB215
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.2version选项231
13.3log选项231
13.4hooks选项231
13.5storage选项232
13.5.1filesystem选项233
13.5.2azure选项234
13.5.3
|
內容試閱:
|
前言
为什么要写这本书?
在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初学者;
?基于UNIXLinux环境的系统运维人员;
?基于UNIXLinux环境的测试人员;
?基于UNIXLinux环境的开发人员;
?系统构架师;
?CTO;
?互联网行业的开发、测试、运维人员;
?初创公司的技术人员;
?云计算、大数据行业的技术人员。
阅读本书的建议
?没有云计算背景知识的读者,建议从第1章顺次阅读。
?对于还没有使用过Docker的读者,建议从第2章开始阅读,首先搭建自己的实验环境。
?对于特别关注Docker在存储方面的读写速度、稳定性、安全性的读者,建议详细阅读第8章。
?对于需要在特定环境下定制Docker Daemon的读者,建议详细阅读第9章,学习如何修改Docker Daemon的配置,以适应具体应用场景。
?对于希望在开发、测试、部署中使用Docker镜像提交产品的开发人员和运维人员,建议详细阅读第10章和第11章,学习如何制作镜像。
?对于希望直接使用容器提供服务的读者,可以详细阅读第12章,学习如何使用官方镜像运行容器。
?对于需要建立私有仓库管理镜像的读者,可以详细阅读第13章,学习搭建私有镜像仓库。
?每章中都介绍详细的配置选项,读者需要通过实验,深刻理解和熟练地使用这些选项。
?读者可以首先通读一遍本书,对Docker使用过程有一个大概的了解,然后根据自己的应用场景,详细阅读相关章节。
|
|