内容有深度技术类图书大多是板砖,但大家都说买书一时爽,搬家XXX,最初自己也积累了很多板砖,后面开窍,开始买电子版。目前大多epub版本排版炸裂,几乎只支持在平板或手机上观看,限定竖屏,对于附带大量示例代码的书来讲,简直就是灾难,自己尝试过把屏幕竖起来,然后开了一个安卓虚拟机……感觉还可以,只是没办法像PDF一样,随心缩放而不改变排版,阅读效果不如网络流出的扫图版。

《Docker容器与容器云(第2版)》由浙江大学SEL实验室出版,内容主要分为Docker以及Docker云平台,前者包括Docker相关技术的底层实现,附有示例代码,后者介绍容器编排的平台,包括Swarm与Kubernetes,总体来讲内容的深度较大,需要长期消化,仅仅看书的话,适合作为面试材料,而需要自己动手实践时,应该搭配最新版的Docker源码。

Docker的迭代更新速度快,和书本没有对上的部分正好可以摸索,虽然docker的轻度使用简单,但底层依赖的技术复杂,我想对于读者来说,学习过程可以划分为理解概念、学习源码、编程,第一步就可以通过读完这本书来入门。

1. 容器与容器云

1.1 云计算平台

1.2 容器生态系统

1.3 容器的优点

  • 持续部署与测试:开发环境与运行环境统一,简化持续集成、测试与发布过程
  • 跨云平台支持:AWS、GCP、Azure、OpenStack、Arukas
  • 环境标准化和版本控制:更精确的版本控制,从源码拓展到已编译的程序
  • 高资源利用率与隔离:与底层共享操作系统,良好的资源隔离与限制能力
  • 容器跨平台性与镜像:应用及依赖一同打包
  • 易于理解且易用:易学易用,不过难以精通
  • 应用镜像仓库:DockerHub

1.4 容器云

以容器为资源分割和调度的基本单位,封装整个软件运行时环境,供开发者与系统管理员构建、发布和运行分布式应用。例如Compose、Machine、Swarm等编排部署工具,以及CoreOS、Flynn、Deis和Kubernetes。

2. Docker基础

2.1 运行环境

  • Linux的Docker环境是原生的
  • 需要Linux内核3.10及以上,开启cgroups及namespace功能用于资源限制与资源隔离
  • 非Linux平台使用Boot2Docker(早期依托VirtualBox),先创建虚拟机再调用
  • 非Linux,不依赖VirtualBox的,使用操作系统提供的虚拟化功能,例如Windows的Hyper-V,macOS的HyperKit,原理也是创建虚拟机
  • 若需要运行Kubernetes等容器编排工具,还是需要创建多个虚拟机来模拟环境

2.2 操作参数与命令架构