自己动手写Docker epub

图书网 2019年12月10日12:17:3963.3K2
摘要

√ 经阿里云战火洗礼,将容器|Go|新规范和开源项目精密地融为一体。
√ 容器编排至佳实践与生产环境容器化,是迈向高阶应用的重大课题。
√ 理解容器底层实现原理,是攀登效用极限及创造其扩展应用的基石。
√ 造轮子可取之义在于知其所以然——全局、脉络、趋势及其特殊性。

自己动手写Docker 作者:陈显鹭,王炳燊,秦妤嘉

自己动手写Docker 出版社: 电子工业出版社

自己动手写Docker 内容简介

《自己动手写Docker》在详细分析Docker所依赖的技术栈的基础上,一步一步地通过代码实例,让读者可以自己循序渐进地用Go语言构建出一个容器的引擎。不同于其他Docker原理介绍或代码剖析的书籍,《自己动手写Docker》旨在提供给读者一条动手路线,一步一步地实现Docker的隔离性,构建Docker的镜像、容器的生命周期及Docker的网络等。《自己动手写Docker》涉及的代码都托管在GitHub上,读者可以对照书中的步骤从代码层面学习构建流程,从而精通整个容器技术栈。《自己动手写Docker》也对目前业界容器技术的方向和实现做了简单介绍,以加深读者对容器生态的认识和理解。

《自己动手写Docker》适合对容器技术已经使用过或有一些了解,希望更深层次掌握容器技术原理和至佳实践的读者。

自己动手写Docker 目录

前言

读者服务

第1章 容器与开发语言

1.1 Docker

1.1.1 简介

1.1.2 容器和虚拟机比较

1.1.3 容器加速开发效率

1.1.4 利用容器合作开发

1.1.5 利用容器快速扩容

1.1.6 安装使用Docker

1.2 Go

1.2.1 描述

1.2.2 安装Go

1.2.3 配置GOPATH

1.3 小结

第2章 基础技术

2.1 Linux Namespace介绍

2.1.1 概念

2.1.2 UTS Namespace

2.1.3 IPC Namespace

2.1.4 PID Namespace

2.1.5 Mount Namespace

2.1.6 User Namespace

2.1.7 Network Namespace

2.2 Linux Cgroups介绍

2.2.1 什么是Linux Cgroups

2.2.2 Docker是如何使用Cgroups的

2.2.3 用Go语言实现通过cgroup限制容器的资源

2.3 Union File System

2.3.1 什么是Union File System

2.3.2 AUFS

2.3.3 Docker是如何使用AUFS的

2.3.4 自己动手写AUFS

2.4 小结

第3章 构造容器

3.1 构造实现run命令版本的容器

3.1.1 Linux proc文件系统介绍

3.1.2 实现run命令

3.2 增加容器资源限制

3.2.1 定义Cgroups的数据结构

3.2.2 在启动容器时增加资源限制的配置

3.3 增加管道及环境变量识别

3.4 小结

第4章 构造镜像

4.1 使用busybox创建容器

4.1.1 busybox

4.1.2 pivot_root

4.2 使用AUFS包装busybox

4.3 实现volume数据卷

4.4 实现简单镜像打包

4.5 小结

第5章 构建容器进阶

5.1 实现容器的后台运行

5.2 实现查看运行中容器

5.2.1 准备数据

5.2.2 实现mydocker ps

5.3 实现查看容器日志

5.4 实现进入容器Namespace

5.4.1 setns

5.4.2 Cgo

5.4.3 实现命令

5.5 实现停止容器

5.6 实现删除容器

5.7 实现通过容器制作镜像

5.8 实现容器指定环境变量运行

5.8.1 修改runCommand

5.8.2 修改Run函数

5.8.3 修改NewParentProcess函数

5.8.4 修改mydocker exec命令

5.9 小结

第6章 容器网络

6.1 网络虚拟化技术介绍

6.1.1 Linux虚拟网络设备

6.1.2 Linux路由表

6.1.3 Linux iptables

6.1.4 Go语言网络库介绍

6.2 构建容器网络模型

6.2.1 模型

6.2.2 调用关系

6.3 容器地址分配

6.3.1 bitmap算法介绍

6.3.2 数据结构定义

6.3.3 地址分配的实现

6.3.4 地址释放的实现

6.3.5 测试

6.4 创建Bridge网络

6.4.1 Bridge Driver Create实现

6.4.2 Bridge Driver初始化Linux Bridge流程

6.4.3 Bridge Driver Delete实现

6.4.4 测试

6.5 在Bridge网络创建容器

6.5.1 挂载容器端点的流程

6.5.2 测试

6.6 容器跨主机网络

6.6.1 跨主机容器网络的IPAM

6.6.2 跨主机容器网络通信的常见实现方式

6.7 小结

第7章 高级实践

7.1 使用mydocker创建一个可访问的nginx容器

7.1.1 获取nginx tar包

7.1.2 构建自己的nginx镜像

7.1.3 运行mynginx容器

7.2 使用mydocker创建一个flask+redis的计数器

7.2.1 创建redis容器

7.2.2 制作flask镜像

7.2.3 创建myflask容器

7.3 runC

7.3.1 简介

7.3.2 OCI标准包(bundle)

7.3.3 config.json

7.3.4 mounts

7.3.5 process

7.3.6 user

7.3.7 hostname

7.3.8 platform

7.3.9 钩子(Hook)

7.4 runC创建容器流程

7.5 Docker containerd项目介绍

7.5.1 架构

7.5.2 特性和路线图

7.5.3 containerd和Docker之间的关系

7.5.4 containerd、OCI和runC之间的关系

7.5.5 containerd和容器编排系统的关系

7.6 Kubernetes CRI容器引擎

7.6.1 什么是CRI

7.6.2 为什么需要CRI

7.6.3 为什么CRI是接口且是基于容器的而不是基于Pod的

7.6.4 如何使用CRI

7.6.5 CRI的目标

7.6.6 已知的问题

7.7 小结

自己动手写Docker 精彩文摘

Docker公司的创始人兼CTO—Solomon Hykes,有机地把一系列技术CGroup、Namespace和UnionFS整合起来,极大地降低了容器技术的复杂度,简化了开发者用户体验。他敏锐地预测到一旦标准化容器技术最终出现,整个技术行业将会受到怎样深远的影响。Docker公司开源了Docker Engine,定义了一个以容器镜像为标准的应用打包格式;并且建立Docker Hub服务进行镜像分发和协作。这些举措迅速创建了一个良好的社区和合作伙伴生态圈,包含AWS、Google、Microsoft、IBM和国内的众多公司。在短短几年的时间内,Docker几乎成为了容器技术的代名词。

“得标准者得天下”,容器底层标准化之争风云再起。2014年底,CoreOS推出rkt容器引擎 ,试图挑战Docker另立标准。Docker在2015年6月宣布成立OCI(Open Container Initiative)组织作为Linux基金会的协作项目,并将其容器标准和runtime参考实现(RunC)贡献出来,旨在围绕容器格式和运行时制定一个开放的工业化标准。这一举措化解了社区在容器标准上的第一次分歧。

随着容器技术的快速发展,技术生态逐渐从围绕单机环境构建和运行容器化应用,发展为支持大规模容器编排技术。云平台成为了分布式网络操作系统,而容器成为了“进程”执行单元,可以动态地运行在不同宿主机环境中。其中,Kubernetes、Mesos、Docker诸强争霸,各有所长。2016年6月,Docker宣布开始在Docker Engine中内置Swarm mode,这极大地简化了容器编排的复杂性,但也遭到了社区的强烈反对。Google发起CRI(Container Runtime Interface,容器运行时接口)项目,通过shim的抽象层使得调度框架支持不同的容器引擎实现。Mesos推出了Uni?d Containerizer,以支持Docker 、Appc、OCI等不同的镜像格式,而无须再依赖Docker Engine。

面对这些挑战,2016年12月14日,Docker公司宣布将Docker Engine的核心组件Containerd捐赠到一个新的开源社区,任其独立发展和运营,目标是提供一个标准化的容器runtime,其注重简单、健壮性和可移植性。由于Containerd只包含容器管理最基本的能力,因此上层框架可以有更大的灵活性来提供容器的调度和编排能力。阿里云、AWS、 Google、IBM和Microsoft会作为Containerd的初始成员,为项目贡献力量。

在技术爆发的年代,新技术层出不穷,而快餐式的阅读和了解无法帮助我们梳理和把握发展的脉络。对一些核心技术既要知其然也要知其所以然,这样才能举一反三,对技术趋势建立起自己的理解和判断。了解容器基础知识,可以深入理解容器在进程管理、资源管理、安全隔离等方面与传统方式的不同,也有助于了解容器在网络、存储、安全等方面的特殊性。

图书网:自己动手写Docker epub

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:6   其中:访客  6   博主  0
    • wwww
      wwww 9

      谢谢

      • luoluotomas
        luoluotomas 9

        谢谢

        • letuzj
          letuzj 9

          给力

          • we
            we 9

            谢谢

            • 回家
              回家 9

              谢谢

              • fdssd
                fdssd 9

                非常感谢资源