内容


IBM Bluemix Container Service 介绍

一个构建于开源 Docker技术上的 Bluemix 产品

Comments

简介

容器技术源于 20 多年前,那时 Web 托管供应商希望优化数据中心内的每个服务器上的网站密度。IBM、Sun、Google 为这些早期迭代做出了重要贡献。最近,通过将应用程序与其依赖项隔离到容器中,Rocket 和 Cloud Foundry 已优化了在云基础架构中使用容器的标准。Docker 消除了导致容器化的应用程序只能在一个环境中运行,而不能在其他环境中运行的问题。

本文将在 IBM 与 Docker 合作的背景下概述 IBM Bluemix Container Service (IBCS),这是一个在应用程序生命周期管理中使用 Docker 的企业级解决方案。

Docker

Docker 容器技术是开源的,拥有 2,000 多个贡献者,由社区选举出的一个 12 人组成的管理咨询委员会推动其运作。

Docker 的关键创新在于,它简化了容器使用模型,消除了供应商锁定,并提高了应用程序便携性。Docker 的价值的一个明显指标是,自 Docker 于 2013 年 3 月启动以来,用户已从公开存储库下载了超过 20 亿个 Docker 镜像。

Enterprise Technology Research 发现,97% 的受访企业都计划采用 Docker 技术。

定义

Docker 镜像

启动容器的构建基块。镜像是一个从不更改的只读层。可以根据提交的容器来创建镜像。

Dockerfile

一个文本文档,包含构建 Docker 镜像所需的全部命令。

Docker 注册表

提供镜像托管和交付服务的注册表服务器。

在 Docker 挂载 rootfs 时堆叠的每个文件系统。基础镜像是只读层,添加到该镜像的每个应用程序都是位于前面的层之上的独立层。

Docker 容器

从 Docker 镜像生成的运行实例。从一个或多个镜像构建的独立环境。容器级别的可用信息包括它从哪个镜像生成、使用的内存、分配给它的 IP 地址,以及其他相关信息。

IBM 和 Docker 的合作

在 2014 年 12 月,作为对开源技术的持续承诺的一部分, IBM 与 Docker 开展了初步合作,并与 2016 年 2 月继续开展合作。通过这次合作,通过从主机基础架构中进一步抽象化容器代码,两家公司在 Docker 开放平台基础上增强了工具链,改善了从应用程序开发到部署过程中的用户体验。

通过提供多种部署选择、重叠网络、可扩展的组、集成的监控/日志记录/安全性,IBM 使得 Docker 容器适合企业使用。

除 IBM Bluemix Container Service 外,IBM® UrbanCode™ Deploy 和 IBM PureApplication® 也支持原生的 Docker 容器。

开放容器计划 (OCI)

Docker 于 2015 年 6 月启动了开放容器计划(Open Container Initiative)。OCI 是一种开放治理结构,用于创建围绕容器格式和运行时的开放行业标准。Docker 向 OCI 引入了来自 Docker 的 runC 以及提交的其他贡献,使该技术不依赖于任何特定的公司、操作系统、产品栈或客户端。IBM 在 OCI 中发挥着重要作用,它加入了委员会,提供了核心代码维护人员,并将 OCI 技术用于自己的产品中。

IBM Bluemix Container Service 简介

IBM Bluemix Container Service 是第一批容器即服务 (CaaS) 托管产品之一,始于 2015 年 6 月。 IBM Bluemix Container Service 专为需要内在的可伸缩性和可靠性的企业工作负载而设计,为用户提供了必要的生命周期管理工具,帮助用户安全地获得 Docker 基础镜像;内置应用程序内容;并在 Bluemix 上部署、运行和管理容器化的应用程序。

IBM Bluemix Container Service 与 Cloud Foundry 应用程序运行时、Bluemix 基础架构虚拟机以及通过 OpenWhisk 实现的事件驱动操作共存,作为能让用户灵活管理其工作负载的计算选项。

了解 IBM Bluemix Container Service 产品

IBM Bluemix Container Service (IBCS) 提供了 3 种服务:公有云、内部部署,以及应用程序镜像或内容交付。

根据客户需求,IBM 提供了 3 种在云中使用容器的选择:公有云、专有容器和本地容器。公有云中的容器托管在一个多租户主机上。专有容器位于其在 IBM 数据中心内的主机上。本地容器在客户自己的数据中心内的主机上运行,IBM 根据订阅来监控和管理这些容器。

内部部署

无论是通过协作式重构还是通过迁移系统和服务,IBM Bluemix Container Service 内部部署选项都会将容器集成到客户自己的持续开发管道中。

内容

通过内容选项,IBM Bluemix Container Service 提供 Liberty 配置文件、IBM MobileFirst™ 平台、StrongLoop Process Manger 和 IBM DB2® Express 作为 Docker 镜像,以便能够在支持 Docker 引擎的任何环境中运行。

使用 IBM Bluemix Container Service 管理应用程序生命周期

在生产中,在容器镜像中运行应用程序是一个连续过程,包括标记一个镜像结束和下一个镜像开始的版本。

让我们仔细查看容器生命周期,以及与每一步相关的一些 IBM Bluemix Container Service 和工具。

第 1 步 - 获取

容器生命周期是从创建一个内容获取计划开始的。 创建该计划的第一步通常涉及到回答以下基本问题:

  • 我应从何处开始?
  • Docker Hub 中是否有我可以利用的内容?
  • 我们是否要使用官方镜像?
  • 我们是否要在企业内构建标准镜像,并提供给内部开发团队?

Docker 社区在 Docker Hub 中分享和利用现有 Docker 资源,并将其镜像存储在公有或私有存储库中。

除了提供已经预加载了特定 IBM 软件的 Docker 镜像之外,IBM Bluemix Container Service 还为企业用户提供了一个私有注册表,用来保存标有相关 Docker 命名空间的镜像。

IBM Bluemix Container Service 中的用户私有 Docker 镜像注册表与容器运行时环境紧密相关。

私有镜像注册表

  • IBM Bluemix Container Service 支持用户推送、拉取或复制镜像到其注册表中,这有助于将容器化的应用程序快速部署到 Bluemix 云中。
  • 要在 IBM Bluemix Container Service 中使用 Docker 容器,首先需要实例化第一个容器,或者将现有镜像上传到一个私有的托管注册表中。

Docker 的优势之一是分层镜像的理念。应用程序可来自于一个基础镜像,而该基础镜像本身来自于一个不同的基础镜像,这使供应商能够在一个不断开发的镜像里集中扩展软件功能,同时充分利用来自 Docker 社区的贡献。

第 2 步 - 构建

容器生命周期中的第 2 步是构建过程。

通常包含以下问题:

如何通过自动化交付管道获取镜像,将它实际内置到我的应用程序中,然后运行这个容器化的应用程序?

借助 IBM Bluemix Container Service,Bluemix 中的一个共享的 Docker 构建服务会自动构建一个 Docker 镜像并发布到用户的私有注册表中,以便将它部署到云平台上。

因为可将用户笔记本电脑上使用的同一个 Dockerfile 用在 IBM Bluemix Container Service 中,所以在构建所有镜像和最终运行容器化应用程序的过程中,可以保持最高的一致性。

第 3 步 - 交付

交付和部署步骤涉及到回答以下问题:

  • 如何将交付和部署与我的 DevOps 管道相集成?
  • 将该应用程序部署到生产中的过程是什么?
  • 除了第一次交付应用程序之外,如何持续开发增强并将它部署到该环境中?
  • 如何以一种非破坏性方式安排部署,并执行金丝雀测试?
  • 在将所有流量路由到新版本之前,用户需要确定此版本是否拥有应有的性能,以及是否支持自动化的回滚能力。

Bluemix 中的集成交付管道允许用户定义在何处及如何部署其应用程序。例如,该交付管道支持以下逻辑:获取 Git 存储库中的源代码更改来触发一次构建,自动部署应用程序的 QA 版本,并在最终将构建版本部署生产环境之前设置一个手动批准关卡。管道服务使用 Jenkins 等工具来实现这种端到端的自动化。

Vulnerability Advisor

IBM Bluemix Container Service 可帮助将安全性集成到部署流程中。作为 2015 年 7 月的版本的一部分,我们开始包含一个 Vulnerability Advisor (VA),它允许您在部署来自任何镜像的第一个实际容器之前对该镜像执行扫描,无论它来自何处。

VA 执行无代理自省,既可以扫描镜像里每一层中的已知漏洞,也可以扫描薄弱策略(例如与密码设置相关的策略)或配置疏忽(常见的疏忽是启用了 sshd)。通过从策略和内容角度执行扫描,VA 在实例化您的第一个实际容器之前确定安全状态,减少了环境攻击的可能性。VA 还允许管理员控制允许部署还是应该拦截包含已知漏洞的镜像。

第 4 步 - 运行

运行步骤设置围绕您的容器的管理系统和运行时环境。在这一步中,将确定如何扩展应用程序及如何从故障中恢复。您还需要确定如何将您的容器连接到环境中的其他服务和应用 程序。

在裸机上部署 IBM Bluemix Container Service,以便提高性能,同时使用 IBM Security 的庞大产品组合帮助维护安全性。IBM Bluemix Container Service 还提供了监控和日志记录、安全合规性洞察、重叠网络、原生 Docker CLI 支持、具有负载平衡的容器组、自动恢复、自动缩放和完全限定的域名。

因为 IBM 管理着环境的主机基础架构和安全性,因此,要使用 IBM Bluemix Container Service 运行容器,首先需要加载或构建一个 Docker 镜像,而不是先将 Docker 主机部署到虚拟机上。

IBM Bluemix Container Service 同时支持原生 Docker Compose CLI 和 API,这样,在笔记本上运行的 Docker 就能平稳过渡到在 Bluemix 云平台上运行。

容器组

IBM Bluemix Container Service 提供了可扩展的容器组,这是开源 Docker 中所没有的。容器组采用一致的方式将同一个镜像和分配的相同资源部署到组中的所有成员,灵活地满足特定工作负载的需求,并提供了一个集成的负载平衡器,在组中分发传入的请求。

自动恢复

如果一个容器出现故障,自动恢复功能会在容器组内重新实例化一个新容器。

完全限定的域名

GoRouter 服务通过完全限定的域名公开容器组以供访问。

重叠网络

重叠网络为每个租户提供了一个私有网络(其中包含每个容器的私有非路由 IP 地址),而且消除了对端口映射的需求,是 IBM Bluemix Container Service 运行时环境的另一项功能。

在微服务架构中,重叠网络使每个组件都能使用私有网络直接相互通信,而不是使用公开路由的 IP 地址。对于需要外部连接的组件,用户可将一个可路由的 IP 绑定到一个容器,或者定义一个主机名来控制对容器组的访问。

持久存储

容器是临时性的,而应用程序需要采用某种方法来持久存储数据。IBM Bluemix Container Service 提供了将存储卷绑定到一个容器或容器组的能力。此服务在容器停止和启动时管理这些卷的生命周期,确保关键数据可用。

可通过 API 访问的服务生态系统

由于不是所有工作负载都将在容器内运行,所以 IBM Bluemix Container Service 提供了对其他源代码的 API 访问能力,允许容器内运行的应用程序利用 150 多个 IBM 和第三方服务中的任意一个,比如 IBM Watson™、Analytics 和 Internet of Things。

第 5 步 - 维护

通过使用来自 Elasticsearch、Logstash 和 Kibana (ELK) 产品栈的开源技术 , IBM Bluemix Container Service 将监控和日志记录功能无缝集成到用户体验中,按需为用户提供故障的实时信息、要调试的线索,以及执行更改来重复容器生命周期中的步骤的路径。

无论 Docker 镜像来自何处,无需安装代理,IBM Bluemix Container Service 也会将所有部署的容器日志和监控信息整合到 Bluemix 控制台中。在部署一个新容器后,用户可以 立刻了解 CPU、内存和网络利用情况。这些指标对评估当前容器大小是否适合运行该应用程序很重要。用户还可以自定义他们的 Grafana 图,以显示相关度最高的监控特征。

混合云

要提供真正的混合云平台,需要让用户能够自由选择和更改其环境、数据和服务。Open by DesignTM 计划(体现在 IBM Bluemix® 中)通过利用持续开源项目中的创新来优化灵活性,这些开源项目包括 OpenStack、Docker、Cloud Foundry、Node.js 和 OpenWhisk 等。然而,如果没有必要的工具来帮助尽可能地改进监控、控制和安全性,所有这些都将与企业用户无缘。IBM 为 IT 团队提供了确定在何时何地安全运行其任务关键型企业应用程序的途径,使业务部门能够将精力放在其产品和市场上。


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Open source
ArticleID=1043661
ArticleTitle=IBM Bluemix Container Service 介绍
publish-date=03082017