编辑推荐

深度剖析Docker的核心概念、实现原理、应用技巧和生态系统

结合实际生产环境,通过实战案例提供有价值的应用参考

涵盖Docker四大管理工具的基本知识,并深入分析

从三大组件入门应用到集群编排进阶实战,条理清晰

结合实际生产环境介绍上百个案例,内容都是有价值的干货

以Docker当前的流行版本为例讲解Swarm集群管理

内容简介

Docker从入门到实战》从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的基本知识。即使不是程序员的读者,《Docker从入门到实战》同样适合。普通用户完全可以把Docker作为一个“好玩的工具”来使用,以体验Docker带来的便捷。

一分钟了解《Docker从入门到实战》精华内容

容器技术与Docker概念

认识容器技术

Docker基本概念

安装和测试Docker

Docker基础知识

Docker操作命令

镜像的结构

镜像的拉取、修改与删除

镜像的体积控制

镜像的推送

容器的迁移与提交

镜像仓库

数据卷操作

容器网络操作

Docker进阶实战

操作系统镜像构建

Web服务镜像构建

数据库镜像构建

Compose与Machine

编程语言

DockerAPI

私有仓库的部署和使用

集群网络

容器安全

Docker网络生态

作者简介

黄靖钧

全栈开发者,热衷开源技术。长期以来一直使用容器技术作为应用部署方案,在Docker容器实战方面经验丰富。有多年的大规模集群管理经验。曾经从事PaaS与CaaS项目开发。现专注于Serverless与SDN等领域的研究。

目录

前言

第1篇容器技术与Docker概念

第1章容器技术2

1.1什么是容器2

1.2容器技术的前世今生4

1.3容器的原理7

1.4容器云12

1.5容器与Docker13

1.6本章小结13

第2章Docker简介14

2.1什么是Docker14

2.2Docker的功能及优缺点18

2.3Docker和虚拟机19

2.4Docker与runC21

2.5Docker基本架构24

2.6本章小结26

第3章安装Docker27

3.1Linux系统27

3.2Windows与MacOS系统38

3.3二进制安装43

3.4本章小结46

第2篇Docker基础知识

第4章Docker基础48

4.1Docker基本操作48

4.2启动第一个Docker容器79

4.3构建第一个Docker镜像80

4.4本章小结81

第5章Docker镜像82

5.1认识镜像82

5.2创建镜像86

5.3导出和导入镜像91

5.4发布镜像91

5.5删除镜像93

5.6Docker镜像扩展94

5.7本章小结96

第6章Dockerfile文件97

6.1Dockerfile基本结构97

6.2Dockerfile指令99

6.3镜像构建实战106

6.4本章小结108

第7章Docker仓库109

7.1官方仓库DockerHub109

7.2国内镜像仓库111

7.3私有仓库117

7.4Registry原理118

7.5本章小结120

第8章Docker容器121

8.1容器基本操作121

8.2进入容器内部128

8.3导出和导入容器130

8.4容器结构131

8.5本章小结133

第9章数据卷134

9.1数据卷是什么134

9.2为容器挂载数据卷135

9.3备份、恢复、迁移数据卷139

9.4容器数据卷扩展140

9.5本章小结142

第10章网络管理143

10.1Docker网络基础143

10.2Docker网络模式147

10.3Docker网络配置152

10.4本章小结154

第3篇Docker进阶实战

第11章操作系统156

11.1Alpine发行版156

11.2Busybox发行版159

11.3Debian/Ubuntu发行版160

11.4CentOS/Fedora发行版162

11.5CoreOS发行版163

11.6RancherOS发行版165

11.7本章小结167

第12章编排工具Compose169

12.1安装DockerCompose169

12.2Compose命令基础170

12.3Compose配置文件186

12.4Compose实战200

12.5本章小结205

第13章Web服务器与应用206

13.1Apache服务器206

13.2Nginx服务器212

13.3Tomcat服务器216

13.4其他Web服务器220

13.5本章小结223

第14章数据库224

14.1MySQL数据库224

14.2PostgreSQL数据库228

14.3Redis数据库235

14.4MongoDB数据库238

14.5其他240

14.6本章小结244

第15章编程语言245

15.1C/C++语言245

15.2Golang语言247

15.3Java语言253

15.4JavaScript(Node.js)语言258

15.5PHP语言265

15.6Python语言275

15.7Swift语言277

15.8本章小结280

第16章DockerAPI介绍281

16.1认识DockerAPI281

16.2DockerRemoteAPI介绍286

16.3其他API299

16.4本章小结304

第17章私有仓库305

17.1DockerRegistry介绍305

17.2认证与前端312

17.3企业级私有仓库Harbor316

17.4私有仓库前端授权工具Portus321

17.5本章小结323

第18章集群网络324

第19章Docker安全340

前言/序言

  Docker作为一个2013年才诞生的开源项目,其发展的速度和火爆程度却令人惊叹。容器技术本不是什么新鲜事物,但是在Docker的整合下,一切变得清晰、易用起来,并且随着各大云计算厂商的进场,使Docker得到了极大的推广。
  如今,Docker已经成为容器技术领域当仁不让的领头羊。国内外以Docker技术起家的创业公司如雨后春笋般涌现出来,体现了容器市场的巨大需求。越来越多的企业开始逐步把传统的应用开发流程迁移到Docker容器中作为开发部署流程的一环。伴随而来的是各种复杂的需求与Docker尚不算完善的功能所产生的矛盾,这些问题制约着企业容器化的脚步。
  另一方面,Docker以其友好的使用体验使广大开发者对其“一见倾心”,越来越多的开发者使用Docker作为应用分发部署的一个重要阵地。尽管如此,Docker对于大部分开发者而言还是尚未开拓的疆土。特别是对于国内环境而言,Docker的推广基本上靠国内几家与Docker相关的初创公司。《Docker从入门到实战》以一位普通的全栈开发者的身份,详细介绍了Docker的基础知识,分享了企业级容器云的实战经验。
  为什么学习Docker
  如果您是一名开发者,想必遇到过“这个程序只有在我的机器上才可以运行”的情况。随着用户需求变得多样,软件愈发复杂,所依赖环境愈发庞大,使得软件在其他机器上运行需要做大量的迁移工作。更糟糕的是,这些琐事完成后软件还不一定能正常运行。
  为了解决这些问题,虚拟化技术开始普及。人们可以通过各种虚拟化技术来实现软件的迁移和分发。最常见的就是虚拟机或KVM技术。在虚拟机里完成开发再迁移到线上不会出现环境问题,解决了迁移过程中的诸多难题,但是仍然存在性能低下、分发流程麻烦、耗时和成本昂贵等问题。在云计算时代这些问题更加突出。
  随着容器技术的普及,人们意识到容器技术可以极大地降低成本。容器技术具有启动快、体积小和分发迅速等诸多特点,这简直就是开发人员梦寐以求的工具。
  而“欣喜若狂”的不止是开发人员,还有运维人员。如果在十年前,普通企业要管理上百台服务器,最可能使用的方法是通过Shell脚本的方式使用SSH连接到所有服务器然后执行相同的指令,并把日志保存起来归档。这种方式我们称之为第一代运维。那时维护服务器是一项繁重的工作,工程师不得不把大量的时间耗费在服务器管理上。
  随着技术的发展,虚拟化技术的普及和云计算的出现,企业需要管理的服务器数量大幅增长。过去我们只要管理企业内部数据中心的物理服务器,而现在则要管理遍布全球的服务器,运维成本愈发昂贵。于是开发者开始针对云计算时代服务器运维方式做出改变,涌现出了诸如Ansible、Puppet、SaltStack和Chef等出色的运维工具。人们可以通过这些工具快速地完成对上百台甚至上千台服务器的管理操作。这被称之为第二代运维。它极大地解决了管理庞大服务器集群的难题,使人们可以在屏幕面前通过一个界面管理所有服务器。但本质上这些工具都是通过SSH或者类似于SSH的方式连接到服务器来管理服务器集群,这意味着其实第二代运维和第一代运维并没有发生根本性的改变。
  上面那些运维工具在云计算普及的大势下很快暴露了它们的问题——速度。因为大部分运维工具依靠的是SSH连接来交换信息,这使得整个过程十分耗时,更不用说其他复杂的管理操作。而随着容器技术的爆发,以Docker为代表的容器技术开始发力,并随着DevOps概念的普及,使运维发生了根本性的改变。容器集群管理不再是通过低效的SSH来连接服务器,甚至不需要登录服务器就可以完成对服务器的管理。人们发现,通过容器管理集群可以抛弃传统的“SSH+秘钥”的连接方式来连接服务器,这对大规模集群来说是一个极大的变革。而且在速度上,容器技术在上百台服务器上启动应用只需要一眨眼的时间,这使得运维的工作大大减轻。
  运维和开发在容器时代逐步“融为一体”,形成一个流水线车间的工作环境。这对于软件行业来说无疑是一次巨大的变革。
  如果您也对传统的软件开发和运维的烦琐流程感到吃力,又对容器技术感兴趣,那么《Docker从入门到实战》将是很好的入门书籍。
  如果您不是职业的开发和运维人员,对Linux也不算熟悉,但属于一个对Docker感兴趣的极客,想通过Docker部署一些复杂的应用,《Docker从入门到实战》也一样适合您。《Docker从入门到实战》虽以Linux为平台介绍Docker的使用,但是与在Windows和MacOS平台上的操作基本一致,普通用户完全可以把Docker当做一个“好玩的工具”来使用,体验Docker带来的便捷。
  《Docker从入门到实战》特色
  适合新手入门。《Docker从入门到实战》在基础方面内容非常详尽,包括镜像的构建、容器的运行监控、网络的管理、仓库的应用、集群的部署等内容,全面、细致地介绍了Docker的基本使用方法与实现原理,适合新手入门。
  应用结合实际。《Docker从入门到实战》在实战应用部分结合实际应用,从不同的角度分析问题并提出对应的解决办法,扩展了很多实用的实战技巧。实战部分根据不同类型的开发环境构建基础开发环境镜像,使读者可以直接使用Docker进入测试开发,并根据不同类型的应用部署做了详细介绍。
  范例丰富。在实战章节中的范例皆由浅入深,全面、实用且不缺乏趣味性,有助于读者了解其内部原理,进而应用到其他项目的思考与开发中。《Docker从入门到实战》的代码均有指明出处以及链接,读者可以通过文中链接找到源代码。
  版本最新。《Docker从入门到实战》使用目前流行的Docker1.12版本,紧跟Docker更新步伐,介绍了新的DockerSwarm集群管理方式。
  《Docker从入门到实战》内容体系
  第1篇容器技术与Docker概念(第1~3章)
  本篇主要介绍了容器技术的发展历史与容器技术的原理,并解释了Docker与其他容器技术的区别,对比了Docker与虚拟机的异同,客观地评价了两者的优缺点。另外,本篇还介绍了Docker分别在Linux、Windows和MacOS系统下的安装方法,以及二进制安装方法。
  第2篇Docker基础知识(第4~10章)
  本篇主要介绍了Docker的基本操作及简单应用,包括Docker基础、Docker镜像、Dockerfile文件、Docker仓库、Docker容器、数据卷的使用方法与原理及网络管理等内容。通过对本篇内容的学习,读者可以掌握最常用的Docker知识。
  第3篇Docker进阶实战(第11~19章)
  本篇包含了许多Docker在实际开发中的应用实例,包括操作系统、编排工具Compose、Web服务器与应用、数据库、编程语言、DockerAPI、私有仓库、集群网络、Docker安全等内容,详细讲解了Docker在容器云环境中的应用。读者通过这部分内容的学习已经完全可以在实际生产环境中应用Docker了。
  《Docker从入门到实战》读者对象
  Dock开发入门人员;
  容器技术爱好者;
  各类运维人员;
  基于Docker构建云计算平台的技术人员;
  大、中专院校的学生;
  相关培训学校的学员。
  《Docker从入门到实战》的顺利出版,要感谢机械工业出版社华章公司各位编辑的辛勤劳动和付出,另外对网络上提供有益资料的众多作者也在此表示感谢。
  虽然我们对《Docker从入门到实战》中所述内容都尽量核实,并多次进行文字校对,但因时间所限,加之水平所限,书中疏漏和错误在所难免,敬请广大读者批评指正。



其他推荐