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

本文涉及的产品
容器镜像服务 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?

相关文章
|
1天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
1天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
11天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
32 4
|
13天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
18天前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
19天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
13天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
47 0
|
15天前
|
JavaScript Linux 持续交付
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
44 0
|
17天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
3天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
118 77