在Container技术生态中有很多成员,并在迅速发展,甚至很多经验丰富的专家也很难完全跟上其发展进度,初学者更是望其项背。为了让大家能对Container技术形成一个系统的认识,Sysdig(Sysdig是一家提供 Monitoring as a microservice服务的公司)对Container生态项目进行了系统性的分类整理。
目的是列出Container技术的核心技术,尽量做到MECE(mutually exclusive and collectively exhaustive,相互独立,完全穷尽),共分为四个部分:
Core Container Technologies:通过这些工具可以在单机上运行少量的容器;
Distributed Container Technologies:用这些技术可以在一个分布式的容器集群中运行应用;
Container Platform Technologies:这些技术可以打造一个完整的平台,用来在容器集群中运行分布式应用;
Container-Native SupportTechnologies:这些技术可以帮助管理基于Container的基础设施,且专门为Container打造。
每一部分又被细分为具体的技术,每项具体的技术又包括四个来源:Docker的开源技术,CoreOS的开源技术,其它开源技术和商业版本。
1
Core Container Technologies
Container Specification
标准『container』的抽象定义,可以通过多个可替代的runtime实现,使生态圈内的技术都支持标准的容器。
Docker Open Source
Open Container spec:container runtime的开放工业标准,得到了Docker,CoreOS和产业大佬的支持,由Open Container Initiative(OCI)(由Linux基金会运营)制定,目前已经抛弃了CoreOS的AppC标准;
CoreOS Open Source
AppC(不建议):CoreOS现在也支持OCI。
Container runtimes
这是你真实运行的容器(本质上是一系列Linux内核组件的抽象,比如namespace和cgroups)。
Docker Open Source
runc:Docker容器的runtime,已经贡献给了OCI作为标准实现的最初版本,本质上是libcontainer的重新打包;
libcontainer:一个Linux容器库,抽象Linux内核组件的交互,创建和控制容器;
CoreOS Open Source
rkt:CoreOS的container runtime。最初是一个AppC specification的实现,AppC specification现已并入OCI spec;
Other Open Source
OpenVZ:一个Linux Container的库
LXC:一个container库,最初被runC采用,直到libcontainer的发布
Container management
这些工具抽象了基本的对container runtime的控制,添加了更多的功能和可用性。
Docker Open Source
Docker Engine:Docker技术的核心及基本接口,创建和运行Docker容器,包括了Docker daemon和Docker client;
CoreOS Open Source
rkt CLI:rkt的容器管理,请求式提供,而不是运行在后台的守护进程;
Other Open Source
LXD:LXC的daemon和UI
Libvirt:支持LXC,OpenVZ和一系列hypervisor技术的容器和虚拟换管理的库
Container definition
这些工具能让你定义一个特定的容器,从而实现保存,共享和复用。
Docker Open Source
Docker image:Docker container runtime就是从这些镜像中被创建的,镜像通过Dockerfile构建,在registry上被分享;
Dockerfile:包含了创建一个Docker镜像所需命令行的文本文件;
CoreOS Open Source
ACI(App Container Image):rkt的容器镜像格式(rkt也支持Docker镜像)。
Registries
存储和共享container镜像的仓库。
Docker Open Source
Docker Registry:开源的Docker image registry可以被托管在自有的环境中;
Commercial
灵雀云镜像中心(https://hub.alauda.cn/);
Amazon EC2 Container Registry (ECR)
Docker Hub:Docker官方库免费版
Google Container Registry
Quay.io:CoreOS的托管平台
Docker Trusted Registry
CoreOS Enterprise Registry
Operating systems
为容器托管所设计的OS。
Docker Open Source
boot2docker:在PC和Mac上运行Docker的最小Linux虚拟机,现常被Docker Machine使用;
CoreOS Open Source
CoreOS:运行分布式,容器化应用的最小OS,包括etcd和fleet;
Other Open Source
RancherOS:最小的全容器化的OS;
Project Atomic:最小的红帽Linux。有RHEL Atomic,CentOS Atomic和Fedora Atomic三个版本;
Ubuntu Core “Snappy”:最小的Ubuntu版本;
SmartOS:Joyent出品,基于Solaris的版本包含了Zones;
Photon OS:VMware发布的最小OS版本。
VM management
这些工具帮助你管理容器运行的虚拟化环境。
Docker Open Source
Docker Machine:创建和管理运行Docker的主机VM环境(比如VirtualBox)和cloud VM(比如Amazon AWS,Google GCP);
Other Open Source
Hashicorp Vagrant:基于虚拟化和Docker技术,为开发环境创建提前配置的VM;
Hashicorp Otto:扩展了Vagrant,跨平台部署和管理VM。
2
Distributed Container Technologies
Scheduling
这些工具在抽象的底层资源上管理新容器的配置。
Docker Open Source
Docker Swarm:旨在将Docker API扩展到集群规模,包括调度和服务发现;
CoreOS Open Source
fleet:CoreOS中的编排工具,支持基本的调度,也可以被bootstrap Kubernetes使用;
Other Open Source
Chronos:Mesos的调度框架。
Cluster definition
这些工具可以让你将容器集群作为一个整体,来定义和管理。
Docker Open Source
Docker Compose:在Docker容器的集群中,定义和配置一个分布式应用的文档
CoreOS Open Source
fleet unit file:fleet用一个特定版本的systemd unit文件,来定义多个容器组成的分布式应用;
Service discovery / Distributed configuration storage
这些工具让组成一个应用的不同容器能够互相访问和共享配置信息(比如IP地址或应用配置),通常通过一个全局的分布式KV存储实现。
Docker Open Source
Docker Swarm内置了service discovery,也可以用etcd,Consul和ZooKeeper实现;
CoreOS Open Source
etcd:全局的分布式KV存储,在CoreOS中用来实现service discovery;
Other Open Source
Marathon:在Mesos中初始化长时间运行的作业,包括了service discovery和管理功能;
Hashicorp Consul:service discovery,K/V存储和集群健康监测;
Apache ZooKeeper:全局的分布式KV存储。
Dynamic configuration management
这些工具可以根据分布式KV存储中的更新,动态去更新应用设置。
CoreOS Open Source
confd:最初为etcd而生,现在支持Consul和ZooKeeper;
Other Open Source
Consul Template:Consul原生的工具;
3
Container Platform Technologies
Container orchestration platforms
这些工具包含了容器集群管理的所有核心(上表列出的)功能,包括container management,scheduling,cluster definition和service discovery。
Docker Open Source
Docker Swarm,Compose和Machine三剑客,可以组成一个完整的编排平台,Docker Swarm还支持Kubernetes;
Other Open Source
Apache Mesos:成熟的,高扩展性的服务,可以将底层的资源抽象出来,并将应用变成分布式的任务;使用Marathon和Chronos实现集群管理,调度和service discovery;支持Kubernetes;
Kubernetes:特别为容器集群上的微服务设计的编排平台;包括了调度,集群管理和service discovery,Google出品,现已贡献给了CNCF;
Hashicorp Namad:使用了Consul。
Hosted container platforms
这些平台提供了容器托管和编排服务。
Commercial
灵雀云(http://www.alauda.cn/);
Amazon EC2 Container Service(ECS)
Google Container Engine:使用了 Kubernetes;
Tutum:已被Docker收购;
Redhat Openshift:使用了Kubernetes;
Joyent的Triton
Giant Swarm
ProfitBricks
Modulus
Rackspace Carina
Container platform management
这些技术向分布式容器环境提供了更抽象的管理和控制层,通常是通过GUI。
Docker Open Source
Project Orca:专为Docker设计的GUI
Other Open Source
Rancher
ContainerShip
Panamax
Shipyard
Joyent SmartDataCenter:使用SmartOS
Commercial
Mesosphere DCOS:使用Mesos
CoreOS Tectonic:使用 CoreOS+Kubernetes;
Nirmata:跨云的容器管理,内置了调度,service discovery,动态负载均衡和基础设施优化;
ContainerShip Enterprise
StackEngine
AppFormix
Container-based PaaS
这些平台通过管理应用代码部署和提供类PaaS的用户体验,更进一步抽象了基于容器的基础设施。
Other Open Source
Deis:基于容器的PaaS使用了CoreOS;
Flynn:基于容器的PaaS使用了etcd;
RedHat Openshift Origin
Cisco Mantl:使用了Mesos;
Dokku:最轻量级的PaaS;
Empire:为AWS ECS而生的PaaS。
4
Container-Native SupportTechnologies
Networking
网络
Docker Open Source
Docker port expose:将容器端口链接到主机端口的Docker特性;
Docker linking:提供同一主机上容器间相互连接的Docker特性;
libnetwork:进一步的容器网络库;
CoreOS Open Source
flannel:通过etcd构建的overlay network,给每一个主机一个隔离的子网;
Other Open Source
Weave:将一个分布式系统中的所有容器,放到一个虚拟网络中的overlay network,同时包含了service discovery功能;
Calico:为每个容器提供一个IP地址的3层虚拟网络。
Monitoring / Visibility
监控/可视化
Docker Open Source
Docker ps/top/stats:runtime的命令
Docker stats API:容器性能监控的远程API
Other Open Source
sysdig:深度系统/容器可视化的CLI;
cAdvisor:Google出品的收集容器运行时信息的工具,包含了GUI,Heapster为其添加了Kubernetes支持;
Weave Scope:容器网络拓扑;
Commercial
Sysdig Cloud:使用了sysdig,包括web UI,应用拓扑,并且支持所有主流的容器技术。
Data layer
数据层
Other Open Source
ClusterHQ Flocker:为有状态服务提供数据卷管理。
Log management
日志管理
Docker Open Source
Docker logs:runtime command;
Other Open Source
logspout:Docker的日志转发。
CI/CD
持续集成/持续部署
Commercial
Shippable
Wercker
Security
安全
Other Open Source
OpenSCAP
Commercial
Twistlock
Scalock
Conjur
Lynis
Getting started aides
入门助手
Docker Open Source
Docker Kitematic:为Docker初学者设计的基本Docker GUI;
Docker Toolbox:核心Docker工具的安装器。