【阿里在线技术峰会】易立:从Docker到容器服务 ——Docker 云端实践之路

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在首届阿里巴巴在线峰会上,阿里云技术专家易立为大家带来了题为《从Docker到容器服务——Docker 云端实践之路》的分享,主要分享内容是对Docker编排技术进行概述,接着重点介绍了新的概念——Container as a Service,包括微服务支持和DevOps,最后分享了Docker的最

本文主要从Docker的编排技术,Docker在一个大规模生产环境中的使用开始切入,围绕Docker应用的深化,像谷歌,AWS,阿里云都推出了这样的容器服务,分享并分析了新的概念——Container as a Service,着重讲解了微服务支持和DevOps,并谈及了容器服务解决了哪些问题,最后介绍了Docker的最新发展趋势。

直播视频:点此进入

PDF 下载: 点此进入

以下为整理内容:


Docker编排技术

大家都已经了解了Docker是什么样的技术,Docker是标准化的构建、交付、运维手段。但直到今天还有很多人在质疑,Docker只不过是容器技术的一种实现,为什么会这么火呢?


 

Docker最大的价值不在于技术,而在于它使人们达成了某种共识,以一种标准化的方法来开发、交付和运维软件,使得把我们的应用和应用运行过程中的依赖打成Docker镜像,通过Docker镜像,我们可以在开发、测试、线上等各个阶段来使用,我们也可以在笔记本、测试机或是云上来运行程序。通过这个标准化,催生了一个巨大的生态,让Docker具有巨大的价值。

Docker的核心亮点有以下几个方面:

  • 敏捷:秒级应用启动、轻量级隔离、细粒度资源控制、低性能损耗。
  • 可移植性: 环境无关的交付、部署方式;可用于软件生命周期中不同运行环境。
  • 可控:标准化推动自动化,提高运维效率和规模;隔离性提升应用安全性;版本管理可追溯。

 

Docker与虚拟化技术


Docker不是虚拟化技术的颠覆者,Docker容器和虚拟化技术是互补、双赢的。Docker是一种轻量级的操作系统虚拟化方案,利用虚拟机提供弹性基础架构,更好的安全隔离,动态热迁移,可以更好的保证业务的安全性和连续性,而利用容器技术也可以简化迁云之路,实现无边界的云计算。

Docker本身巨大的成功是根据几个巨大的趋势结合在一起才凸显了它的价值。Docker重点介绍3个方向,Docker在云计算上扮演着重要的工作,还有(Microservices)微服务架构,企业最关心的是IT部门的效率,最快速度的交付产品、最低成本的试错,才能快速的迭代、快速的演进,微服务架构可以帮助企业走向这步,微服务架构给底层的基础设施和部署带来巨大的挑战,利用Docker可以解决这个问题。DevOps,开发人员和运维人员理解的DevOps是不一样的,Docker可以使二者结合在一起。 

容器编排 —— Docker Compose

Docker引擎是把应用包装在一个Docker镜像里,然后启动Docker镜像变成一个容器,但是它带来的帮助是有限的,任何一个复杂的应用不是一个容器就能完成的,一定是一组容器相互协同才能完成一个完整的应用栈。Docker Compose是Docker推出来的一个对多容器的编排技术,简单好用,便于开发。使用Docker Compose,可以一键构建本地开发环境,在团队中可以共享一份配置文件。

Docker Compose面向开发和部署,不支持自动化运维,只是面向单机的一个环境。Docker Compose目前还只是一个开发工具,能够帮助部署一个Docker化的多容器应用,部署后它就置之不理了。 

容器集群管理 ——Docker Swarm


 

Docker Swarm的优点:兼容标准的Docker API,灵活、可插拔的容器调度

在生产环境中,我们希望有一个集群。从流量的角度,我们希望有更大规模能够部署更多的应用,在高可用的情况下,不可能把应用部署在只有一台节点的机器上。Docker Swarm把一组Docker引擎抽象成一个Docker引擎,以前所有在单机上对一个Docker引擎的工作,都可以透明的变成对一组Docker集群上的节点的操作。在Docker Swarm集群中,有两类节点,一是Docker Swarm Managers,这些Managers负责接收用户的请求,并且根据集群的状态来做一些任务的下发,真正的任务是在Work节点完成的,每个Work上都会安装一个agent,Work会上报到一个分布式的KV里,告诉这个节点的状态是死是活,有了这些信息,Manager就可以做决策。

Docker Swarm也有它的不足,它的抽象级别太低,面向容器、缺少微服务支持。

我们在把容器技术应用到大规模生产环境中时,依然会有众多的挑战。在生产环境中还需要考虑很多,比如,集群怎么管理,怎样更有效的调度来充分利用这些资源,怎样解决在这个集群中容器和容器互相的网络通信,不同应用对存储的需求等等。

 

Containers as a Service (CaaS  容器服务)

 


 

CaaS一方面提供容器化的环境,运行支撑环境来覆盖容器化应用的整个生命周期,从构建到交付到运维,它面对的目标用户不仅是开发者,也包括运维人员。在构建到交付阶段是持续集成和持续测试的能力,交付阶段一定是以容器的方式交付应用,在交付到运行阶段,也是使用容器化的方法进行应用的部署和运维。CaaS另一方面是以服务化的能力来提供Docker的运行支撑环境,对于企业客户来说,用户只需关心容器的应用自身即可,而整个应用支撑的环境是由云平台提供出来的。 

传统云计算金字塔中,PAAS层带来的简化性是以牺牲整个对环境控制的灵活性为代价的,导致PAAS平台的市场接受度很低。而Docker和CaaS的出现恰好填补了这个缺口,在PAAS领域进行了重新定位,实现了简洁性和灵活性间的完美平衡。 

CaaS的主要服务提供商既有谷歌、亚马逊以及Docker自身,也有国内的阿里云和很多其他的创业公司,每一家的CaaS都有自己的一些特色。

 

阿里云容器服务概念模型

容器服务上有三个层面的概念:

  • 资源层面——集群,节点。
  • 内容层面——Compose模板,镜像。
  • 应用层面——应用,服务,容器。 

集成容器和云服务

 


 

  1. 完全兼容 Docker Compose/Swarm
  2. 声明的方式支持容器及云服务
  3. 支持微服务架构 

阿里云容器服务

 


阿里云容器服务为图中中间部分,最底层为容器层,阿里云容器层可以支持不同云环境下的基础设施,包括公共云、专有云以及混合云,利用Docker自身很好的可移植性,可以实现无边界的云计算,除了Docker引擎外,我们更加关注存储和网络的不同需求,所有的支持我们都可以通过声明的方式利用起来,我们也支持第三方的扩展。在容器层之上是调度层,调度层的概念是如何在容器集群上使得容器和下面资源能更好的协作来完成一个应用栈需要的各种各样的能力。调度层之上还需要做更高层的抽象,没有人在乎容器,大家在乎的是自己的应用是怎样构建的,是怎么对外提供服务的,我们就提供了很好的对微服务架构的支持,支持服务的注册发现、弹性伸缩、灰度发布和不间断升级。 

有了这样的容器化平台,我们还可以对接现有的中间件服务和阿里云上的其它服务,以及集成CI/CD这样的三方工具,可以完整的支持软件的开发的过程。容器也不该成为企业IT治理的孤岛,它会与现有的IT流程、现有的IT平台的管控进行一个良好的集成。

跨主机容器网络


在云上搭建网络有其自己的特殊性,阿里云的跨主机容器网络有如下几个特性:

  • 每个容器在这个网络上都有一个独立IP
  • 容器跨宿主机直接通信
  • 容器网络可以通过DNS解析容器地址


微服务架构 

微服务就是把一个大而全的单体应用拆分成一组解耦的、自治的、协同工作的服务,这些服务通过标准化的借口互相通讯,每一个服务都是由一个团队单独的运维,它可以被独立的部署,每个服务的部署更新不会影响到其它的服务。

微服务在实际操作过程中会遇到种种问题,比如当应用拆分后,从运维一个服务变成运维多个服务,而这些服务又是被动态的分布在分布式环境里的,对这些服务进行管控、访问就变得比以前更加复杂。容器服务提供了两种弹性路由的方案,如下:

 


弹性Web路由方案1

我们可以为每一个容器服务取一个二级域名,让服务能够通过二级域名的方式进行访问。我们提供了一个分布式路由服务,它会根据发现服务里定义的各种各样的路由规则,去生成相应的HAProxy路由规则,当发生修改的时候能够动态的重新启动HAProxy,让规则生效。路由服务之上对接的是SLB,在SLB上只要绑定一个根域名,下面部署的各种各样的服务就可以通过二级域名的方式动态的接进来。

 


弹性Web路由方案2

有时候用户希望对SLB端有更灵活的配置,方案2就是利用声明式的机制让不同的容器服务挂载到不同的SLB上,发现服务里记录了整个集群上所有服务对外的路由的信息,Cluster Master会去侦听发现服务上整个路由的变化,并根据这些变化,自动的修改SLB后端的服务器配置。

实现无关的服务发现与负载均衡


只是利用DNS这样的发现机制是不够的,我们通过一种声明化的方法,能够让一个服务访问另外一个服务,和DNS服务发现相比:

  • 支持灵活的负载均衡策略
  • 避免TTL问题
  • 支持健康检查 

监控与AutoScaling

 


  1. 声明式方式定义弹性伸缩策略。
  2. 内置云监控集成。
  3. 提供插件机制支持开源、三方监控集成。

DevOps

DevOps最重要的有两点。一是“在一起”,开发和运维应该是一体化来考虑的过程,开发人员交付的产品必须是运维人员能够部署上线的东西。二是要有快速持续的反馈。 

利用容器实现持续集成和交付  Build Once and Deploy Everywhere


 

Docker可以在一处构建,就可以在各个地方部署。Docker镜像在开发中可以使用,可以在测试中使用,可以进行验证,可以进行上线,一切都是以Docker镜像为交付物的。此外,利用Compose模板,可以开发出部署的资源,标准化一致的在各个环境复用,以便进行持续的集成和部署。通过Docker镜像和Compose模板,可以把一个应用对外界的依赖,以及服务和服务之间的关联,全部变成可追踪的代码,这可以通过非常好的版本管理进行更好的管控,以便快速上线和回滚。

完整的容器化持续交付流程



 

未来发展趋势

最好的方式来编排Docker就是Docker自身。

Docker engine已经内置编排能力,更新后的Docker将具备以下四点特性:

  • Swarm mode
  • Cryptographic node identity
  • Service API
  • Built-in routing mesh

Docker Swarm 模式


Docker Swarm mode是由一组Docker engine构成,每个Docker engine都可能扮演两种角色中的一种,Manager和Worker。在一个集群上可以有多个Manager,多个Manager可以自己通过分布式的同步协议实现一个高可靠的State Store。

服务 Services


新的Docker提供了一个Services API。如果出现节点失败,在这个节点上的容器将会被自动迁移到其他节点之上。Docker Swarm mode采用状态逼近的模式,它定义了服务的期望状态,它会在运行过程中不断检查当前的状态是否和期望的状态保持一致,如果不一致,它就会自动修复。

Routing Mesh

 

在一个集群中,整个服务容器的部署是根据调度规则去进行动态调度的,任何一个服务的容器可能部署在集群中的任意一个节点上,新Docker提供了Routing Mesh的能力,其特性如下:

  • 每个服务一个VIP
  • IPVS实现负载均衡
  • 动态/手工分配PublishedPort
  • 每个worker参与路由 

Distributed Application Bundle Stack

 


一个DAB部署后就会生成一个相应的Stack,一个完整的应用栈。DAB实际是一个JSON文件,用与Docker compose类似的方式描述了一组服务,通过一个DAB就可以一键的通过一个deploy命令来生成一个相应的Docker Stack。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
14天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
2天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
15 4
|
14天前
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
本文源自张凯在2024云栖大会的演讲,介绍了阿里云容器服务在AI智算领域的创新与实践。从2018年推出首个开源GPU容器共享调度方案至今,阿里云容器服务不断推进云原生AI的发展,包括增强GPU可观测性、实现多集群跨地域统一调度、优化大模型推理引擎部署、提供灵活的弹性伸缩策略等,旨在为客户提供高效、低成本的云原生AI解决方案。
|
14天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
24天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
24天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
55 3
|
26天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
46 1
|
27天前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
50 2
|
26天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
74 0
|
27天前
|
持续交付 开发者 Docker
深入理解并实践容器化技术——Docker篇
深入理解并实践容器化技术——Docker篇
42 0

相关产品

  • 容器计算服务