云原生容器Clouder认证:基于容器搭建企业级应用—课时3:容器是什么

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 云原生容器Clouder认证:基于容器搭建企业级应用—课时3:容器是什么

思考:容器是如何发展的,主要用在哪些场景?

了解基本的概念之后,一个疑问自然浮现心头:虚拟化和容器技术本质上有什么差异呢?小陈不太明白,于是继续求助大刘。

小陈:师傅,容器技术看上去也是一种虚拟化技术,对吗?

大刘:应该这么说,容器技术是一种全新意义上的虚拟化技术,更像是一种轻量级的虚拟化。你先了解下容器技术的发展过程,就会明白是怎么回事了。

小陈:好的。我先恶补一下容器的基础知识。


容器技术起源于 1979 年 chroot,经过长时间的发展,现已逐步成熟,并在代表性的Docker诞生后迎来了它的繁荣时代。下面是容器技术发展的一些关键时间节点:

1979年,Unix v7系统支持chroot,为应用构建一个独立的虚拟文件系统视图。

2000年,FreeBSD 4.0支持jail,第一个商用化的OS虚拟化技术。

2001年,Linux VServer诞生, 另一种 jail 机制,用于安全地区分计算机系统上资源。

2005年,OpenVZ发布,非常重要的Linux OS虚拟化技术先行者。

2006年,Google开源内部使用的process container技术,后续更名为cgroup。

2007年,cgroups 进入了 Linux 内核主线。

2008年,LXC(Linux Container)项目具备了Linux容器的雏型。

2011年,CloudFoundry开发Warden系统,一个完整的容器管理系统雏型。

2013年,Docker项目正式发布,并逐步被广泛接受,让Linux容器技术席卷天下。

2014年,Kubernetes项目正式发布,容器技术和编排系统的发展齐头并进。

2015年,由Google、Redhat、Microsoft及一些大型云厂商共同创立了 CNCF 云原生基金会,云原生浪潮启动。

2016年,推出Winodws容器,Docker 能够以原生方式在 Windows 平台上运行。

2016-2017年,容器生态开始模块化、规范化。CNCF 接受 Containerd、rkt项目,OCI 发布1.0,CRI/CNI 得到广泛支持。

2017-2019年,容器引擎技术飞速发展,新技术不断涌现。Kata Containers 社区成立,Google 开源 gVisor 代码,AWS 开源 firecracker,阿里云发布安全沙箱 1.0。

2020年之后,容器引擎技术不断升级,逐渐成为云原生基础设施……

容器借鉴了集装箱的概念,集装箱解决了什么问题呢?无论形状各异的货物,都可以装入集装箱,集装箱与集装箱之间不会互相影响。由于集装箱是标准化的,就可以把集装箱整齐摆放起来,装在一艘大船把他们都运走。有了集装箱,就再也不需要为各种货物单独准备专门运输的船了。如果把容器比作集装箱的话,应用就相当于集装箱里的货物。

容器类似“集装箱”,应用好比“货物”

 

容器概念与特点

容器(Container):一种轻量级虚拟化技术,这种技术允许操作系统上的用户空间被分割成几个独立的单元在内核中运行,彼此互不干扰。这样一个独立的空间,就称之为一个“容器”。

容器为应用软件及其依赖组件提供了一个资源独立的运行环境应用软件所依赖的组件会被打包成一个可重用的镜像,镜像运行环境并不会与主机操作系统共享内存、CPU和硬盘空间,由此也保证了容器内部的进程与容器外部进程的独立关系。

举个例子,一个操作系统,可以类比成一套公寓,那么容器就相当于公寓中的一个房间,大家共享同一个客厅,厨房和卫生间。但是房间和房间之间彼此隔离,一个房间里面的人的活动,不会影响到其他房间的住客。房间也有门,因此有一定的安全隔离保障。

容器的技术特点

  • 容器是自包含的。它打包了应用程序及其所有依赖,可以直接运行。
  • 容器是可移植的。可以在几乎任何地方以相同的方式运行。这就可以确保应用在开发环境、测试环境、生产环境等都有完全一样的运行环境。
  • 容器是轻量级的。占用资源很少,可以秒级启动。
  • 容器是互相隔离的。同一主机上运行的多个容器,不会互相影响。

 

容器技术和虚拟化的比较

通过对容器技术的学习,小陈回头来看,发现容器和虚拟机有联系,也有差异。于是做了下容器和虚拟机的详细比较。

在虚拟化架构中,底层是硬件,往上是虚拟化层hypervisor,之上安装虚拟机操作系统,接着配置应用运行所需的依赖环境,然后安装APP。而在容器架构中,底层也是硬件,往上是操作系统而不是虚拟化层hypervisor,再安装容器引擎,就可以在容器中配置应用运行依赖并安装APP。

这两种架构,一个很直观的对比结果是,容器的运行不需要再额外安装虚拟机操作系统。可见,容器是一种比虚拟机更轻量级的虚拟化技术支持秒级启动具备更好的快速扩展能力,具备更好的跨平台迁移能力。当然也由于这个原因,容器的隔离性上不如虚拟机。两者主要差异如下:

  • 虚拟机OS占用了较多资源,一个虚拟机基本是GB 级的,一个容器可小至几MB。
  • 虚拟机的启动时间一般是分钟级的,而容器的启动时长是毫秒级的。
  • 由于容器的轻量级,它具备了更好的快速扩展能力。
  • 容器比虚拟机具备更好的跨平台迁移能力,如虚拟机无法从Vmware迁移至KVM。





练习实验:通过ACR快速部署网站应用

https://developer.aliyun.com/adc/scenario/exp/79f68855f1194655bb08e125b59ec104?

相关文章
|
9天前
|
安全 Cloud Native Shell
云上攻防:云原生篇&Docker容器逃逸
本文介绍了Docker的基本概念及其对渗透测试的影响,重点讲解了容器逃逸的方法。Docker是一种轻量级的容器技术,与虚拟机相比,具有更高的便携性和资源利用率。然而,这也带来了安全风险,特别是容器逃逸问题。文章详细描述了三种常见的容器逃逸方法:不安全的配置、相关程序漏洞和内核漏洞,并提供了具体的检测和利用方法。此外,还介绍了几种特定的漏洞(如CVE-2019-5736和CVE-2020-15257)及其复现步骤,帮助读者更好地理解和应对这些安全威胁。
云上攻防:云原生篇&Docker容器逃逸
|
13天前
|
Kubernetes Cloud Native 云计算
云原生之旅:构建你的第一个容器化应用
【8月更文挑战第75天】在数字化浪潮中,云原生技术成为推动企业创新和效率提升的关键动力。本篇文章将引导你开启云原生之旅,通过一个简易的步骤指南,帮助你构建并部署第一个容器化应用。我们将一起探索Docker容器的魅力,以及如何利用Kubernetes进行集群管理,实现服务的自动化部署、扩展和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供实践操作的启示和深入思考的契机。
|
17天前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。
|
17天前
|
运维 监控 Cloud Native
云原生之旅:从容器到微服务的演进之路
本文将引导您踏上云原生技术的探索之旅,从容器技术的核心概念出发,逐步深入到微服务架构的世界。我们将一起揭开云原生的神秘面纱,探索它如何改变现代软件的开发、部署和运维方式。通过本文,您将获得对云原生技术基础的深刻理解,并激发您进一步探索和应用这些前沿技术的兴趣和灵感。
|
17天前
|
运维 Kubernetes Cloud Native
云原生之旅:从容器化到微服务架构的演进之路
在数字化转型的浪潮中,云原生技术如同一股清流,为现代软件开发和运维带来革命性的变化。本文将通过深入浅出的方式,探索云原生的核心概念、关键技术以及它们如何共同塑造了今天的云基础设施和服务模式。我们将一起走进云原生的世界,了解它如何影响应用程序的设计、部署和扩展,并揭示这一趋势背后的哲学和实践。
26 1
|
23天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
25天前
|
Cloud Native 持续交付 Docker
云原生之旅:从容器到微服务的演变之路
【9月更文挑战第31天】在数字化转型的浪潮中,云原生技术如星辰般熠熠生辉。本文将带你探索云原生的核心——容器化与微服务架构,揭示它们如何共同推动现代软件开发的革命。通过深入浅出的语言和生动的比喻,我们将一起走进云原生的世界,理解它的魅力所在,并见证代码示例如何将理论转化为实践。
42 4
|
24天前
|
负载均衡 Cloud Native 安全
云原生时代的开发者指南:从容器到服务网格
【9月更文挑战第32天】在云原生技术日益成为企业数字化转型的核心力量之际,了解其背后的理念与实践对于开发者而言至关重要。本文旨在通过浅显易懂的语言,为读者揭开云原生技术的神秘面纱,从容器化的基础谈起,逐步深入到服务网格的高级应用,带领开发者们在云原生的海洋中航行。
35 1
|
13天前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。