Container技術一覽
來自: http://dockone.io/article/1062
在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工具的安裝器。 </ul> </li>
</ul> </div>