基于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日志并进行多维度分析。
目录
打赏
0
0
0
0
101
分享
相关文章
什么是用于REST API的JWT Bearer令牌以及如何通过代码和工具进行调试
在Web开发中,保护REST API至关重要,而JSON Web令牌(JWT)特别是JWT Bearer令牌,是一种高效方法。它通过紧凑、自包含的结构实现安全信息交换,提升用户体验。本文探讨JWT Bearer的基本概念、结构与实现,包括在Java中的应用步骤,以及使用Apipost和cURL进行测试的方法。JWT优势明显:无状态、互操作性强,适用于分布式系统。掌握JWT Bearer,可助开发者构建更安全、高效的API解决方案。
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 智能工具调用决策的智能体
本文介绍了一种基于阿里云百炼平台的`qwen-max` API构建的智能体方案,该方案集成了检索增强、图谱增强及智能工具调用决策三大模块,旨在通过结合外部数据源、知识图谱和自动化决策提高智能回答的准确性和丰富度。通过具体代码示例展示了如何实现这些功能,最终形成一个能灵活应对多种查询需求的智能系统。
421 11
2025年API开发必备:10款优秀Postman替代工具大盘点
API测试在现代开发中至关重要,Postman虽为首选,但市场上涌现出许多优秀替代工具。本文精选2025年10款好评如潮的API测试工具:Apifox、Insomnia、Hoppscotch、Paw、Talend API Tester、HTTPie、ARC、Swagger UI、SoapUI和Thunder Client。这些工具各具特色,满足不同需求,如团队协作、开源易用、自动化测试等。无论是简洁轻量还是功能全面,总有一款适合你的团队,助力效率提升。
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 基于指令的智能工具调用决策 智能体
基于百炼平台的 `qwen-max` API,设计了一套融合检索增强、图谱增强及指令驱动的智能工具调用决策系统。该系统通过解析用户指令,智能选择调用检索、图谱推理或模型生成等工具,以提高问题回答的准确性和丰富性。系统设计包括指令解析、工具调用决策、检索增强、图谱增强等模块,旨在通过多种技术手段综合提升智能体的能力。
421 5
离线VS强制登录?Apipost与Apifox的API工具理念差异深度解析
在代码开发中,工具是助手还是枷锁?本文通过对比Apipost和Apifox在断网环境下的表现,探讨API工具的选择对开发自由度的影响。Apifox强制登录限制了离线使用,而Apipost支持游客模式与本地存储,尊重开发者数据主权。文章从登录策略、离线能力、协作模式等方面深入分析,揭示工具背后的设计理念与行业趋势,帮助开发者明智选择,掌握数据控制权并提升工作效率。
什么是用于 REST API 的 Bearer Token以及如何通过代码和工具进行调试
Bearer Token 是一种基于 OAuth 2.0 的身份验证机制,广泛应用于 REST API 的授权访问中。它通过在 HTTP 请求头中传递令牌,确保用户凭据安全传输并验证。本文深入解析了 Bearer Token 的概念、实现步骤及调试方法,包括其无状态特性、灵活性与安全性优势。同时,提供了 Java 实现示例和使用 Apipost、cURL 等工具测试的实践指导,帮助开发者掌握这一核心技能,保障 API 系统的安全与高效运行。
深入解密 :Postman、Apipost和Apifox API 协议与工具选择
作为全栈开发者,每天与API打交道是常态。本文总结了多年经验,深入解析常见API协议(HTTP(s)、SSE、gRPC、WebSocket、Socket.IO)及其适用场景,并对比三款主流调试工具(Postman、Apipost、ApiFox)。从基础特性到高级应用,帮助开发者根据需求选择最优方案,提升效率,让开发更顺畅!
构建智能天气助手:基于大模型API与工具函数的调用实践
在人工智能快速发展的今天,大语言模型(LLM)已经成为构建智能应用的重要基础设施。本文将介绍如何利用大模型API和工具函数集成,构建一个能够理解自然语言并提供精准天气信息的智能助手。
121 11
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
83 13
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具