基于Docker API的工具综述

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文讲的是基于Docker API的工具综述,【编者的话】考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台。随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的。
本文讲的是基于Docker API的工具综述 【编者的话】考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台。随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的。

1.jpg

Docker是在虚拟容器中简易部署应用最前沿技术。之前我们已经知道Docker可以减少开发维护复杂度,使得正在成长中的架构得以实践。这种架构使得整个应用以及底层操作系统以轻量级容器方式创建和部署,而不是依靠增量式的更改。

考虑到过去三年Docker取得的骄人成绩以及远程API的成熟,毫无疑问,Docker会成为开发者的首选平台。

随着Docker的发展壮大,开发者也共享了很多围绕Docker的开源项目,本文中将讨论这些项目是如何使用Docker API的。

Dogfooding

DokcerAPI最大的用户就是Docker本身,Dokcer内置了很多整合与编排容器配置的工具。Dockercompose面向多容器应用部署,而Docker Swarm则负责Docker容器集群创建。

Docker自身在这一领域做的很好,但是仍然对其它Docker编排技术持开放态度。编排领域涉及面很广泛,包括调度、集群,服务发现以及其它一些任务。考虑到有效性,透明性,以及依赖性,一般不希望几个进程运行在同一个容器内;实际使用中,每个容器只负责处理定义清楚的服务。因此一个完整的应用一般由多个Docker容器构成,这也是基于Docker的解决方案非常丰富的原因。

调度(Scheduling)

Docker容器调度也是容器编排中重要的一环,这里所说的调度是指容器如何在各个主机之间运行的规则。例如,一个调度策略可能会牵涉到运行在同一个主机中的不同容器,而其功能是互补的。因为有了调度策略,可以从一个应用中抽象出两个集群行为的容器。

除了DockerSwarm的调度功能,CoreOS的Fleet和Marathon都是Docker调度开源实现。

如想深入了解容器架构,可以深入阅读 API-Driven DevOps: Spotlight on Docker

集群管理(Cluster Management)

集群意味着将很多主机内的众多Docker容器联系起来,使它们表现为一个统一调度的系统。

对应于Docker Swarm的开源项目包括 Google的Kubernetes, 通过Docker容器的pods来管理集群,其它的还包括Shipyard,CoreOS的Fleet和Marathon。

像Spotify这种公司开发并开源了自己的Docker管理系统,而这正是每个基于Docker系统必需的。

服务发现(Service Discovery)

服务发现是在一个多主机、集群环境的网络中,如何发现所需服务的IP地址,像GliderLabs这样的公司利用Docker的远程API侦听事件,创建基于容器的软件应用。Registrator,一家由Weave支持的开源项目,可以通过监控新建Docker容器,将它们在目录服务Consul中注册,提供发现服务。

网络(Networking)

为了链接构成服务的容器,Docker也提供一些网络功能。默认地virtual bridge网络被激活,同时也可以用不同的配置。提供商提供了适用于其他使用场景的网络配置。

Weave使用一种称为imicro-routers的虚拟网络跨主机连接容器,使得网络配置简化,动态添加节点,通讯加密。Weave还提供一个叫Weave Scope的网络监控功能。

Flannel是CoreOS提出的overley网络解决方案,使用etcd集群来存储网络配置。

Calico项目另外一个基于‘Layer3’网络的开源项目,这不是一个overlay网络,意味着OSI模型三层以上都不会封装包,相对于其他方案会大大提高性能。

存储(Storage)

Docker在数据库领域并不太成熟,这是因为按照定义数据库是经常变化的,因此运行数据库的容器不能简单被重新部署而不比较数据一致性。针对这一问题Docker内置基于数据卷和数据卷容器的解决方案。数据卷在容器被删除时,数据仍然是持久化的。数据卷容器可以在多个容器之间共享数据时候使用。

数据卷可以被备份和恢复;像ClusterHQ的Flocker产品,就是一个开源的数据卷管理器,而且为了支持基于容器的数据库,提供数据迁移功能。

持续集成(Continuous Integration)

为了更好管理Docker容器创建,测试和部署的生命周期,有很多针对持续集成(CI)领域的工具。例如,CodeFresh可以监测Git库中变化,或者持续集成服务器中变化,从而触发创建和部署Docker容器,
CodeShip的Jet是面向Docker的CI平台,可以从任何Docker注册库中拉images,与DockerCompose整合,便于并发创建和部署基于容器的应用。

Drone是另外一个基于Docker的持续集成平台,它在创建过程中使用一个短暂生成的容器。

如需了解,可以阅读如下网址: Continuous Integration Tools to Spur API Development

Hosted Docker Registries

除了DockerHub之外,还有几家公司提供Docker注册库服务,例如Quay.io, Artifactory和Google的Container Registry。这些服务提供私有的容器注册库访问,提供高级库功能,第三方整合和极佳DevOps体验。

日志整合(Log Aggregation)

Logspout是GliderLabs的另外一个开源项目。当几个Docker容器共享一个主机时,Logspout将日志路由并汇总到类似PaperTrail的日志管理系统。另外,Filebeat可以对容器日志打上标签并发往logstash。

监控(Monitoring)

大量第三方的,由业界云监控大厂开发的,基于Docker的监控工具,一般都是用Docker静态API,并将结果显示在动态仪表盘上。
这些监控方案包括:

配置管理(Configuration Management)

Docker可以通过标签方式(labels)给图像、容器和进程(守护进程)添加客制化元数据。标签类似于key-value对,可以被用于标注配置信息,例如版本号和环境信息。

为了避免名字冲突,Docker鼓励在标签中使用命名空间,但是并不强制。 Docker Label Inspector 是GarethRushgrove(PuppetLabs的资深工程师 )开发的应用,可以根据发布指南或者指定JSON Schema检查发布的Docker映像。

安全审计Security Auditing

很多问题都围绕基于Docker应用的安全问题,尽管过去很多年已经补上了很多漏洞,但是开发商提供的Docker应用带来了更多安全问题。一个例子是Scalock,这是一款扫描容器发现安全问题的软件,并且控制对容器访问,监控容器运行状态使得不会破坏安全设置。

PaaS

越来越多的基于Docker软件,造成了整合性的困难,同时也是一个生态系统发展良好的预兆。很多公司瞄准了这一需求,将赌注压在端到端类PaaS的方案,用来创建、部署、编排和监控基于Docker的应用,从而将复杂性隐藏起来。

Openshift是RedHat的PaaS方案,构建于Docker和Kubernetes之上。Deis是EngineYard开发,由Heroku驱动的PaaS方案,构建于Docker和CoreOS之上,Paz是基于Docker、CoreOS、etcd和Fleet的开源项目,可以将容器应用运行于PaaS之上。

最后,Docker最近收购了Tutum(类似PaaS的套件,用于部署和管理Docker引擎),重新命名为Docker Cloud。

Full-blown OS

由于Docker发展太迅猛,已经有先行者开始使用容器做整个操作系统。Rancher的RancherOS是一个完全基于Docker的轻量级操作系统,它是专为运行基于容器应用的20MB大小的Linux发行版。
HypriotOS是在树莓派上使用的Docker实现,允许在SD卡上运行轻量级容器应用。

结论Conclusion

Docker的创生诞生了DevOps软件生态环境,随着Docker应用不断增加,看起来这个增长势头在未来会更加强劲。在下一篇文章中,我们将会深入DevOps其它领域,也就是持续集成和配置管理,未完待续……

原文链接:Tools Built on Top of The Docker API(翻译:杨峰)

原文发布时间为:2016-05-11
本文作者:hokingyang
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:基于Docker API的工具综述
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
20天前
|
API 数据库 决策智能
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 智能工具调用决策的智能体
本文介绍了一种基于阿里云百炼平台的`qwen-max` API构建的智能体方案,该方案集成了检索增强、图谱增强及智能工具调用决策三大模块,旨在通过结合外部数据源、知识图谱和自动化决策提高智能回答的准确性和丰富度。通过具体代码示例展示了如何实现这些功能,最终形成一个能灵活应对多种查询需求的智能系统。
101 11
|
20天前
|
自然语言处理 NoSQL API
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 基于指令的智能工具调用决策 智能体
基于百炼平台的 `qwen-max` API,设计了一套融合检索增强、图谱增强及指令驱动的智能工具调用决策系统。该系统通过解析用户指令,智能选择调用检索、图谱推理或模型生成等工具,以提高问题回答的准确性和丰富性。系统设计包括指令解析、工具调用决策、检索增强、图谱增强等模块,旨在通过多种技术手段综合提升智能体的能力。
107 5
|
23天前
|
存储 监控 C++
11 个必备 Docker 工具
11 个必备 Docker 工具
128 11
11 个必备 Docker 工具
|
25天前
|
存储 安全 数据中心
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
43 1
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
144 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
存储 缓存 Kubernetes
docker的替代工具有哪些?
【10月更文挑战第28天】docker的替代工具有哪些?
151 1
|
2月前
|
运维 监控 数据可视化
Docker容器可视化管理工具 - WGCLOUD基础介绍
WGCLOUD是新一代运维监测平台,它可以监控Docker容器的各种性能数据,比如内存,cpu,Image,运行时间,运行状态,端口映射等信息
|
3月前
|
Ubuntu Linux pouch
Docker容器管理工具
文章介绍了Docker容器管理工具,以及早期使用的LXC容器管理工具,包括它们的安装、使用和相关技术特点。
88 10
Docker容器管理工具
|
3月前
|
缓存 API 网络架构
Nuxt Kit API :路径解析工具
【9月更文挑战第20天】在 Nuxt Kit API 中,路径解析工具如 `resolvePath()`、`joinPaths()` 和 `relativePath()` 帮助开发者高效处理应用路径,确保资源准确加载,并支持动态路由与组件导入。这些工具提升了应用的灵活性和可扩展性,同时需注意路径准确性、跨平台兼容性和性能优化,以提升用户体验。
54 12
|
2月前
|
监控 API 数据安全/隐私保护
2024年开源API工具盘点,覆盖API全生命周期
2024年经济持续低迷,本文整理一些免费的开源工具,旨在帮助企业组织降低工具的支出成本,能用免费的何必用付费的呢(狗头)?
94 0