pouch

2017.11.19正式开源pouch

pouch 基于Apache2.0协议的容器技术

介绍:
Pouch 是一个轻量级容器技术
特点:快速高效、可移植性高、资源占用少

github:pouch

11年基于Linux内核上的namespace、cgroup等技术开始成熟、阿里Pouch基于LXC研发的第一代容器t4
13年Docker横空出世、解决了行业多年的”软件封装”问题、阿里吸收其经验、打磨Pouch

Pouch规模
2017 年双 11,巨额交易 1682 亿背后,Pouch 在”超级工程”中做到了:
1、100% 的在线业务 Pouch 化
2、容器规模达到百万级

{———-}

1
2
3
4
阿里集团内部,Pouch 的日常服务已经覆盖绝大部分的事业部,
覆盖的业务场景包括:电商、广告、搜索等;
覆盖技术栈包括:电商应用、数据库、大数据、流计算等;
覆盖编程语言:Java、C++、NodeJS 等。

Pouch 技术优势
1、隔离性强

1
2
3
4
5
6
7
8
9
10
众所周知,行业中的容器方案大多基于 Linux 内核提供的 cgroup 和 namespace 来实现隔离,然后这样的轻量级方案存在弊端:

.容器间,容器与宿主间,共享同一个内核;
.内核实现的隔离资源,维度不足。

面对如此的内核现状,阿里巴巴采取了三个方面的工作,来解决容器的安全问题:

用户态增强容器的隔离维度,比如网络带宽、磁盘使用量等;
给内核提交 patch,修复容器的资源可见性问题,cgroup 方面的 bug;
实现基于 Hypervisor 的容器,通过创建新内核来实现容器隔离。

2、P2P镜像分发

1
2
3
点对点分发镜像【相对于中央仓库分发镜像、极大见笑了中央仓库的网络压力】

工具:阿里巴巴镜像分发工具"蜻蜓"

蜻蜓地址

Pouch 与蜻蜓的使用架构图

3、富容器技术

1
2
3
4
5
6
7
8
9
 Pouch 技术可以说对业务没有任何的侵入性,也正是因为这一点在集团内部做到 100% 容器化。
这样的容器技术,被无数阿里人称为“富容器”。

“富容器”技术的实现,主要是为了在 Linux 内核上创建一个与虚拟机体验完全一致的容器。
如此一来,比一般容器要功能强大,内部有完整的 init 进程,以及业务应用需要的任何服务,当然这也印证了 Pouch 为什么可以做到对应用没有“侵入性”。
技术的实现过程中,Pouch 需要将容器的执行入口定义为 systemd,而在内核态,Pouch 引入了 cgroup namespace 这一最新的内核 patch,满足 systemd 在富容器模式的隔离性。
从企业运维流程来看,富容器同样优势明显。
它可以在应用的 Entrypoint 启动之前做一些事情,比如统一要做一些安全相关的事情,运维相关的 agent 拉起。
这些需要统一做的事情,倘若放到用户的启动脚本,或镜像中就对用户的应用诞生了侵入性,而富容器可以透明的处理掉这些事情。

4、内核兼容性
可以理解为兼容老版本linux内核系统

Pouch生态架构

Pouch 的生态架构可以从两个方面来看:第一,如何对接容器编排系统;第二,如何加强容器运行时。

Pouch内部系统架构

传统的容器引擎方案相似,Pouch 也呈现出 C/S 的软件架构。命令行 CLI 层面,可以同时支持 Pouch CLI 以及 Docker CLI。对接容器 runtime,Pouch 内部通过 container client 通过 gRPC 调用 containerd。Pouch Daemon 的内部采取组件化的设计理念,抽离出相应的 System Manager、Container Manager、Image Manager、Network Manager、Volume Manager 提供统一化的对象管理方案。

以上内容来自 infoq阿里关于pouch介绍