谈到云原生, 绕不开"容器化"

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 现在谈到云原生, 绕不开“容器”。

Containers


现在谈到云原生, 绕不开“容器”。


在《Cloud Native Patterns》一书中,作者Cornelia Davis指出:“容器是云原生应用的基石”;


云原生基金会将微服务容器化作为云原生旅行的第一步。


很容易就想到将微服务容器化, 过程也很简单。


将代码、依赖项和运行时打包到一个称为容器镜像的二进制文件中。镜像存储在镜像仓库,Docker官方维护了Docker Hub镜像仓库。


需要时,可以将镜像转换为可运行的容器实例,该实例可在装有容器运行时引擎的任何计算机上运行,你可以按需部署任意数量的容器实例


下图显示了三个微服务在单主机以容器化运行。


34b62701210d7d6be3a98163bc057f1c.png


每个容器维护自己的依赖关系和运行时,这可能会有所不同,上图我们看到在同一主机上运行的Product微服务的不同版本。每个容器共享基础主机操作系统,内存和处理器的一部分,但彼此隔离。


容器模型遵守“十二要素应用”的Dependencies原则。


要素2指定“每个微服务隔离并打包其自己的依赖项、更改项(不影响整个系统)”


容器同时支持Linux和Windows工作负载。


虽然存在多个容器供应商,但Docker已经成为打包、部署和运行云原生应用程序的事实标准,Docker占据了最大的市场份额,该公司一直在推动软件容器的发展。


Why containers


  • 容器提供了移植性,并保证在跨环境时,能输出一致。通过将所有内容封装进单个程序包,可以将微服务+依赖项与基础设施隔离。


  • 你可以在安装Docker运行时引擎的 任何环境部署同一容器,容器化消除了预先配置环境的时间开销  (for框架、程序库文件、和运行时)。


  • 通过共享底层操作系统和主机资源,容器的占用空间比完整的虚拟机小很多,小体积,高密度,在一台主机上可以运行多个微服务。


容器编排


Docker Api/工具创建镜像和容器,你还需要工具管理容器。


管理容器的软件称为"容器编排器",大规模使用容器时,容器编排器至关重要。


8d3fb2cf3810b275c8cdba6dc499349a.png


容器编排器做了什么 ?


任务 描述
Scheduling 自动配置、调度容器实例
Affinity/anti-affinity 在附近或相距较远的位置调配容器,以提高可用性和性能
Health monitoring 自动探测并修复故障
Failover 自动将失败的实例转移到状况良好的机器
Scaling 自动增减容器 去匹配预期状态
Networking 给容器提供覆盖网络
Service Discovery 容器之间互相发现
Rolling Upgrades 零停机增量升级,零停机自动回滚


容器编排器遵循“十二要素应用程序”中的disposabilityconcurrency原则。


要素9:强调“服务实例应该是一次性的,这样有利于快速启动(提供可伸缩能力),优雅关闭让系统保持正确状态”,


要素8:强调“服务在大量小的相同进程(副本)上扩展,而不是在可用的功能最强大的计算机上扩展单个大型实例”。


目前市面上存在多个容器编排器,但Kubernetes已成为云原生世界的事实标准,这是一个可移植、可扩展的、开源的、管理容器的平台。


你可以自建k8s集群,自行调配和管理k8s资源,这可能很复杂。

Azure云将K8s作为托管服务(AKS),你只需要利用K8s功能,而不需要维护K8s集群。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
101 2
|
1月前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
21天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
1月前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
22天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
28天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1月前
|
Cloud Native 云计算 Docker
云原生技术的崛起:从容器化到微服务架构
云原生技术的崛起:从容器化到微服务架构
|
1月前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!