搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
欧盟网络安全产业分析
2
windows11本地深度学习环境搭建Anacond,keras,tensorflow,pytorch, jupyter notebook
3
韩国突发:将批准比特币ETF
4
kubernetes Pod控制器详解
5
如何做代币分析:以 TRX 币为例
6
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
7
大模型学习笔记四:LangChain开发框架解析
8
Windows1903安装VMware Workstations Pro15.1.0并解锁Unlock3.0.2
9
倍投技巧 - 凯利公式教你如何用正确的方法投资_正确的倍投6种方法
10
SSM 完整项目 (内含源码)_gitee ssm项目
当前位置:
article
> 正文
100个容器周边项目,点亮你的容器集群技能树
作者:笔触狂放9 | 2024-02-28 17:33:37
赞
踩
docker 常用周边
大规模的容器技术运用从来不是一项独立工程,而是一个汇集虚拟化技术、容器编排、任务调度、操作系统、容器仓库、跨节点网络、分布式存储、动态扩缩、负载均衡、日志监控、故障自恢复等系统性难题的复杂有机体。随着Docker的诞生和Google等互联网公司的推波助澜,这个领域出现了一大批优秀的开源项目,它们在简化容器技术使用成本的同时,也经常使得刚刚接触容器时间不太长的开发者和企业用户感到不知所措。
将知识分类是梳理零散信息的一种有效方式。对于容器技术的生态圈来说,其中涉及领域众多,有的项目横跨多个细分领域,有的项目则是针对特定场景需求定制的,难以对其功能类型做精确定义。不过,若仅考虑通用领域里的相关产品和工具,大致来说可以划分成14种主要类别。
以下将围绕容器生态,分别举例介绍这些类别中的典型开源项目,以及部分虽未开源但比较常用的100个周边产品。
1. 容器引擎
容器引擎是容器集群生态圈的核心部分,它是与内核Namespace和CGroup等功能直接交互,并提供相应API使得外部能够与之集成的工具或服务。Docker无疑是目前为止最成功、广泛最使用的容器引擎之一。实际上从1.12版本以后,Docker的容器化功能已经由独立的项目RunC来实现,但Docker仍作为一个开源产品为用户提供完整的容器化解决方案。此外,社区中还有许多容器引擎项目,例如:
001. Docker:https://www.docker.com002. Rkt:https://coreos.com/rkt003. Systemd-nspawn:https://www.freedesktop.org/wiki/Software/systemd004. Hyper:https://hyper.sh005. Garden:https://github.com/cloudfoundry/garden006. LXC:https://linuxcontainers.org 007. Photon:https://github.com/vmware/photon008. Vagga:https://github.com/tailhook/vagga009. gVisor:https://github.com/google/gvisor010. Pouch:https://github.com/alibaba/pouch
这些项目只是众多支持不同平台和具有不同特性的容器引擎的冰山一角。例如Google曾经主导的lmctfy(http://lmctfy.io/)项目也是个十分优秀的容器引擎,然而该项目自2015年以后就不再被维护了。而最近Google刚刚开源的gVisor则是该领域中的新秀。另外值得一说的是,Hyper采用虚拟机的方式对环境进行隔离,并不是一种基于容器的隔离方案,但它能很好地与Docker或Kubernetes等容器集群技术相结合,取代其环境隔离的功能,因此也归属此列。
2. 监控和数据收集
由于容器基于内核的特殊隔离方式,对容器性能和状态的监控与虚拟机存在一些差别。传统的虚拟机监控工具,例如Nagios和Zabbix等,对容器监控的原生支持并不十分易用。而一些新起的开源项目对这种场景具有更友好的体验,例如:
011. cAdvisor:https://github.com/google/cadvisor012. Sysdig:http://sysdig.org013. Prometheus:https://prometheus.io014. TICK-Stack:https://influxdata.com015. Docker-Alertd:https://github.com/deltaskelta/docker-alertd016. Grafana:https://grafana.com
其中的TICK-Stack指的是Influxdata推出的Telegraf、InfluxDB、Chronograf、Kapacitor四款开源工具,不过从1.0以后,这些工具在开源版基础上提供了企业版本,后者提供了例如高可用、云端存储等企业级功能。
3. 容器管理和界面工具
可视化是用户友好性十分重要的一部分,Shipyard和Decking是Docker早期时十分受欢迎的可视化工具,之后Docker也收购了Kitematic作为官方的容器管理UI。但随着容器应用集群化,早期的UI工具不再流行,一些针对特定集群平台定制的新型管理UI开始出现。例如Kubernetes官方推出了Dashboard项目用于可视化的管理集群,Cockpit则是红帽公司推出的Kubernetes集群管理界面。以下是其中一些开源的容器管理UI项目:
017. Kitematic:https://kitematic.com018. DockerUI:https://github.com/crosbymichael/dockerui019. Panamax:http://panamax.io020. Rapid Dashboard:https://github.com/ozlerhakan/rapid021. Cockpit:http://cockpit-project.org022. Portainer:https://www.portainer.io023. Shipyard:http://shipyard-project.com024. Seagull:https://github.com/tobegit3hub/seagull025. Dockeron:https://github.com/dockeron/dockeron026. DockStation:https://dockstation.io
4. 基础设施集成
容器集群的实施是需要以硬件基础设施作为依托的,有些辅助工具能够简化这个过程。这些项目往往与具体的底层平台相关,例如:
027. Nova-docker:https://github.com/stackforge/nova-docker028. Magnum:https://github.com/openstack/magnum029. Machine:https://docs.docker.com/machine030. Boot2Docker:https://github.com/boot2docker/boot2docker031. Clocker:https://github.com/brooklyncentral/clocker032. MaestroNG:https://github.com/signalfuse/maestro-ng
Nova-docker和Magnum都是在OpenStack集成容器集群的项目,不过目前OpenStack官方正在尝试通过让Kubernetes直接创建虚拟机的方式来统一它在IaaS层和CaaS层的差异,其中的Nova-docker已经被废弃了。Machine是Docker公司推出的基础设施管理工具,Boot2Docker曾经是在Windows和Mac上使用Docker的官方方案,但随着Docker 1.12版本发布了多种操作系统的发行版后,已经不再被推荐使用了。
5. 编排和调度
编排和调度是容器集群的基本功能,因此选择编排和调度工具实际上就是在选择容器集群的方案。以下是一些开源的容器任务编排调度工具:
033. SwarmKit:https://github.com/docker/swarmkit034. Kubernetes:http://kubernetes.io035. Marathon:https://github.com/mesosphere/marathon036. Rancher:http://www.rancher.io037. Nomad:https://github.com/hashicorp/nomad038. OpenShift:https://www.openshift.com039. Crane:https://github.com/michaelsauter/crane040. Nebula:https://github.com/nebula-orchestrator041. GearD:http://openshift.github.io/geard
其中的OpenShift主要是指其3.0之后的发行版,它是红帽公司基于Kubernetes二次开发的集持续集成和交付于一体的容器集群方案,具有开源和商业两个版本。
6. 容器镜像仓库
镜像仓库是基于容器的在软件发布流程中必要的组成部分,Docker开源了其镜像仓库的最小实现,但对于企业级应用来说,它缺少了高可用、权限控制、管理界面等必要功能。Docker Hub和国内的许多容器云平台都提供了公有云的企业级仓库服务,社区中也有一些容器仓库的开源或免费的实现,例如:
042. Repository:https://github.com/docker/distribution043. Nexus:http://www.sonatype.org/nexus044. Habor:http://vmware.github.io/harbor045. Portus:https://github.com/SUSE/Portus046. Docker Registry UI:https://github.com/atcol/docker-registry-ui047. Dragonfly:https://github.com/alibaba/Dragonfly
其中的Nexus是一种通用的软件包仓库解决方案,支持包括Maven、NPM、PIP、RPM等许多主流打包格式的分发和管理,它是在3.0以后的版本中开始支持作为Docker镜像仓库的。VMWare推出的Habor是目前相对常用的企业级开源Docker仓库解决方案。Portus和Docker Registry UI是基于官方Repository镜像仓库的界面化管理工具。Dragonfly是一款P2P协议的镜像分发工具,并非直接提供镜像存储功能,但也属于仓库辅助类的工具。
7. 服务发现和容器域名服务
服务发现和域名服务实际上是微服务架构和容器集群的调度工具所需的组件,它们在容器集群中十分常见,也是这个生态圈中举足轻重的一部分,以下是其中一些在实际工程中被提及较多的工具:
048. Etcd:https://github.com/coreos/etcd049. Consul:http://www.consul.io050. ZooKeeper:https://zookeeper.apache.org051. Eureka:https://github.com/Netflix/eureka052. Traefik:https://traefik.io053. Muguet:https://github.com/mattallty/muguet054. Registrator:https://github.com/gliderlabs/registrator055. SkyDNS:https://github.com/skynetservices/skydns
8. 容器日志收集处理
和容器集群的监控一样,收集容器中的服务运行日志与虚拟机中的方式同样存在许多差异。目前Docker直接通过插件能够支持的日志收集工具包括Rsyslog、Splunk和Fluentd,虽然FileBeat不在此列,但由于其小巧便捷的部署机制,也得到了许多用户青睐。一些过去用于虚拟机的日志收集器,比如LogStash或Flume,同样能够使用与容器中的服务,但它们都不再是首选的方案。
056. Splunk:https://www.splunk.com057. Fluentd:https://www.fluentd.org058. ElasticStack:https://www.elastic.co059. Flume:https://flume.apache.org060. Rsyslog:https://www.rsyslog.com/
ElasticStack是Beats、Logstash、ElasticSearch和Kibana四款开源项目的统称,这是一套十分流行的日志汇聚、处理、存储和展示的工具组合。其中的ElasticSearch和Kibana也可以与Fluentd配合,形成端到端日志处理方案。另外值得指出的是,Splunk并不是开源或免费的,但它在企业级日志处理方案中的应用十分广泛。
9. 容器相关的系统发行版
有些Linux发行版是为容器运行而优化的,Atomic和ClearLinux系统都属于此类。另一些Linux发行版在设计之初就充分地将容器机制融入了系统的架构理念,例如CoreOS。有的系统甚至将Docker作为系统的核心服务来管理其他用户进程,例如RancherOS和Hyper容器引擎所使用的操作系统。类似的项目还有许多,它们都是架设容器集群时十分称手的基础设施,例如:
061. Container Linux:http://coreos.com062. Project Atomic:http://www.projectatomic.io063. RancherOS:http://rancher.com/rancher-os064. ClearLinux:https://clearlinux.org065. Photon OS:https://vmware.github.io/photon066. CargoOS:https://cargos.io067. SmartOS:https://www.joyent.com/smartos
10. 容器平台
容器平台是大规模容器运用的产物,它通常会与持续集成、持续交付的工具结合,成为连接上层应用服务和底层基础设施、帮助使用者快速实现从代码提交到产品上线全过程的端到端交付过程。以下是其中一些相关的开源项目:
068. Deis:https://deis.com069. Flynn:http://flynn.io070. Dokku:https://github.com/progrium/dokku071. Fabric8:http://fabric8.io072. Kel:http://www.kelproject.com073. Nanobox:https://nanobox.io074. Tsuru:https://tsuru.io
除了这些开源的容器平台服务实现之外,互联网上还有许多在线按量付费的容器即服务平台,它们也是整个容器集群生态的一部分。
11. 容器网络
容器技术在解决环境隔离和配额问题的同时,也引入了网络层面的复杂性。由于使用了Network Namespace,每个容器都可以获得独立的IP地址,这对于单个主机的情况并无大碍,但对于容器集群的情况,IP地址的分配和互联就成为了新的问题。因此在设计容器集群时,通常需要专门为网络的连接方式加以考虑。常用的开源方案例如:
075. Libnetwork:https://github.com/docker/libnetwork076. Flannel:https://github.com/coreos/flannel077. Calico:http://www.projectcalico.org078. Weave:https://github.com/zettio/weave079. Romana:http://romana.io080. Canal:https://github.com/projectcalico/canal081. Open vSwitch:http://openvswitch.org082. Pipework:https://github.com/jpetazzo/pipework
这些网络方案大多采用了七层网络的Overlay Network方式,也就是在容器之间通信的网络包上封装了用于路由寻址的额外包头,这种方式会导致网络通信效率的下降,具体影响程度与所封装的额外数据大小有关。而Calico采用修改每个主机节点上的IPtables和路由表规则实现容器间数据路由和访问控制,属于三层网络的方式,这种方案在节点规模不太大(最多几百个节点)时的效率优势十分明显,是一种比较受推荐的容器网络工具。除了这些较常用的方案外,一些条件允许的企业也会结合MacVLAN等二层网络方案实现容器的互联,以获得更好的网络性能。
12. 容器安全
容器安全性问题的根源在于容器和宿主机共用内核,因此受攻击的面特别大。另外,如果容器里的应用导致Linux内核崩溃,整个宿主机系统都会崩溃,这一点与虚拟机是不同的。此外,镜像的安全性也是容器安全的一部分,如何保障用户下载的镜像是可信的、未被篡改过的,以及如何保证镜像中不会意外包含具有大量漏洞的老旧软件都是需要考虑的问题。目前这些安全课题主要在一些企业级应用中引起较多重视,下面是一些相关的开源工具和项目:
083. Notary:https://github.com/docker/notary084. Clair:https://github.com/coreos/clair085. AppArmor:http://wiki.apparmor.net/index.php/Main_Page086. SELinux:https://selinuxproject.org087. Twistlock:https://www.twistlock.com088. OpenSCAP:https://github.com/OpenSCAP/container-compliance
13. 容器数据持久化
容器是一种不可变的基础设施,容器的数据应该通过Volume的方式保存到外部的介质上,容器持久化存储本质上就是要解决如何简便地将外部存储挂载到容器中使用的问题。Docker在1.9版本后提供了存储的插件,这也为许多存储方案提供了便利,以下列举几个例子:
089. Flocker :https://github.com/clusterhq/flocker090. Convoy:https://github.com/rancher/convoy091. REX-Ray:https://github.com/codedellemc/rexray092. Netshare:https://github.com/ContainX/docker-volume-netshare093. OpenStorage:https://github.com/libopenstorage/openstorage
其中Ceph是通用的网络存储工具,同时提供块存储和对象存储能力,对容器化场景下的应用数据持久化具有良好的支持。
14. 容器相关开发流程工具
容器的镜像可以被看作一种新型的应用打包方式,因此容器常常与软件的开发和持续集成、持续交付流程相结合,提供不同环境一致性部署能力。以下是一些利用容器改善软件开发和交付的工具或平台:
094. Drone.io:https://drone.io095. Shippable:http://shippable.com096. Cyclone:https://github.com/caicloud/cyclone097. Screwdriver:http://screwdriver.cd098. WatchTower:https://github.com/v2tec/watchtower099. Wercker:http://wercker.com100. Totem:http://totem.github.io
原文链接:https://yq.aliyun.com/articles/593097
Kubernetes项目实战训练营
Kubernetes项目实战训练将于2018年8月17日在深圳开课,3天时间带你系统掌握Kubernetes
。
本次培训包括:Docker介绍、Docker镜像、网络、存储、容器安全;Kubernetes架构、设计理念、常用对象、网络、存储、网络隔离、服务发现与负载均衡;Kubernetes核心组件、Pod、插件、微服务、云原生、Kubernetes Operator、集群灾备、Helm等,点击下方图片查看详情。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/160549
推荐阅读
article
游戏
引擎
在进化,
下一代
3D
创建
引擎
#
a16z
...
这是一篇发表在
a16z
的文章,文中的观点非常值得我们学习。我花了点时间对原文进行梳理,挑选/补充了一些信息,分享给大家。...
赞
踩
article
Linux
网络协议
栈开发(七)——
Netfilter
概述及其
hook
点_
linux
内核
通过钩...
Netfilter
概述
Netfilter
/IPTables是
Linux
2.4.x之后新一代的
Linux
防火墙机制,...
赞
踩
article
吐血整理
的
60
个
Redis
面试题
,
全网最全了...
1.
Redis
是一
个
基于内存
的
高性能key-value数据库。 2.
Redis
相比memcached有哪些优势: me...
赞
踩
article
2021
-04-06
_
部署
统一
杀毒软件
2021
...
一:内网渗透基础内网也是指计算机网络中根据地理范围划分中的局域网(Local Area Network),即内网等同于局...
赞
踩
article
服务器进行
frp
内
网
穿透搭建_
frp
s
secure
crt...
需求:近日,在学习Socket
网
络编程和IO流的时候,需要同学之间两两进行测试。但是在放假期间,同学们都在天南海北,双方...
赞
踩
article
SpringBoot
项目启动报错:
HikariPool
-1 -
Exception
during
p...
0.
SpringBoot
项目启动报错
HikariPool
-1 -
Exception
during
pool
init...
赞
踩
article
【域控
服务
搭建
】
Windows
Server
2012
搭建
域_
2012
域
服务
器
搭建
教程...
Windows
server
2012
设置好静态IP,保证相互之间可以ping通写在前面的话:在Linux加入域那里可能...
赞
踩
article
ELF
文件
中的各个
节区
_.
rela
.
plt
...
ELF
节区
信息概述:
节区
名
节区
说明 备注 .rodata1 ...
赞
踩
article
zabbix
监控
服务器
CPU
状态_
zabbix
怎么看机器
负载
...
zabbix
监控
服务器
CPU
状态。_
zabbix
怎么看机器
负载
zabbix
怎么看机器
负载
...
赞
踩
article
pytorch
错误解决: Miss
in
g
key
(s)
in
state
_
dict
: Unexpec...
pytorch
错误解决:Miss
in
g
key
(s)
in
state
_
dict
:Unexpected
key
(s) i...
赞
踩
article
CentOS7
安装
xvfb
,解决
服务器
没
有
X
-
Server
的问题_不能在线装
xvfb
有
什么办法安装...
X
vfb(
X
Virtual Frame Buffer)是基于
X
Window的虚拟
服务器
,可以在没
有
物理显卡图形界面和...
赞
踩
article
借助
py2neo
将
csv
文件
导入
neo4j
_
py2neo
导入
数据到
neo4j
...
借助
py2neo
将
csv
文件
导入
neo4j
_
py2neo
导入
数据到
neo4j
py2neo
导入
数据到
neo4j
...
赞
踩
article
python
编写
小游戏
详细教程,用
python
做
简单
的
小游戏
_
python
小游戏
代码
...
大家好,我是小F~经常听到有朋友说,学习编程是一件非常枯燥无味
的
事情。其实,大家有没有认真想过,可能是我们
的
学习方法不对...
赞
踩
article
使用
python
中
py2neo
包
连接
neo4j
(
安装
,
连接
,
成功
解决)_
py2neo
连接
neo4j
...
使用
python
中
py2neo
包
连接
neo4j
neo4j
下载JDK下载
neo4j
官网下载检查
安装
是否
成功
py2neo
安装
...
赞
踩
article
大规模
分层
多
视图
RGB
-D对象
数据
集
_
多
视图
数据
集
...
原文名称:A Large-Scale Hierarchical Multi-View
RGB
-D Object Data...
赞
踩
article
Centos7
安装配置
Docker
_
centos7
安装
docker
...
介绍
Docker
是什么,并演示在
Centos7
的环境下演示yum安装配置
Docker
_
centos7
安装
docker
ce...
赞
踩
article
Python
操作之
Neo4j
_
python
neo4j
...
Python
操作之
Neo4j
(一)目录连接
Neo4j
图数据库首先下载py2neo第三方包忘记
neo4j
密码连接
neo4j
...
赞
踩
article
300
分钟吃透
分布式
缓存
-17讲:如何理解、选择并
使用
Redis
的
核心
数据类型
?...
偏移量也可以是负数,倒数第一个是 -1,倒数第二个是 -2,依次类推。需要计算某个位置点 A 附近
的
人时,首先以指定位置...
赞
踩
article
古典
黑客技术
之
HOOK
API
_
hook
api
函数
传参解析...
古典
黑客技术
之
HOOK
API
HOOK
API
技术可以拦截、控制某些
API
函数
的调用。当一个
API
函数
被拦截之后,用户可...
赞
踩
article
知识图谱(五):图
数据库
neo4j
之
python
连接
neo4j
实现
增删
改查
_
python
图
数据库
...
图
数据库
neo4j
(二)
python
连接
neo4j
环境
增删
改查
清空库创建节点Node查询关系查询更新push删除nod...
赞
踩
相关标签
游戏引擎
3d
网络协议
栈
服务器
tcp/ip
p2p
linux
网络
数据库
mysql
docker
spring boot
java
ELF文件格式
ELF文件
ELF文件格式分析
zabbix
运维
Xvfb
neo4j
python
py2neo
知识图谱