什么是容器?有哪些主流的容器技术?
大家好呀!我是reload。今天来带大家学习一下什么是容器以及了解一些主流的容器技术。
一、容器概述
1、什么是容器?
容器是一种轻量级虚拟化技术
,允许应用程序及其依赖项被打包到一个可移植的容器中,这个容器可以在任何安装了Docker引擎的服务器上运行,包括Linux和Windows机器。
容器使用沙箱机制
,相互之间没有任何接口,实现了应用程序与操作系统的解耦。
Kubernetes(K8S)是一个开源的,用于管理容器化应用
的平台,可提供自动部署,扩展和管理容器化应用
的能力。
沙箱机制,或称沙盒技术,是一种安全技术,用于隔离运行中的程序,以防止程序对计算机系统造成未授权的更改或破坏。沙箱为程序提供了一个受限的执行环境,程序在这个环境中运行,就像孩子在沙盒中玩耍一样,可以自由活动,但不会影响到沙盒外的世界。
2、为什么需要容器技术?
主要是为了解决开发、测试、部署等各种库的依赖纷繁复杂,版本之间的差异,以及测试环境与部署环境的不一致
等的问题。
开发人员在开发应用的时候通常会使用多种服务(如MQ,DB)进行构建和部署,且经常需要部署到不同的环境中,各种环境依赖错综复杂,着实令人头疼,而运用容器技术就能轻松解决这一问题。
3、容器: 一种应用打包机制
应用运行需要依赖包括操作系统在内的库,容器镜像可以将应用及其所有依赖进行打包,使应用在不同平台(开发、测试或生产)上拥有相同的运行环境。
4、容器:一种虚拟化技术
对于用户而言,容器本身也是一个虚拟机
,那么容器的虚拟化是如何实现的呢?
虚拟机是通过Hypervisor进行硬件的模拟实现的虚拟化
。
容器是容器引擎通过namespace、cgroup和rootfs三种技术构建的进程隔离环境
。
4.1 rootfs
rootfs是容器最底层的文件系统(容器运行时的根文件系统
),是容器运行时所需的文件、配置和目录。它将容器和宿主机上的文件系统隔离开
,使得容器只能访问到rootfs中的内容,而容器外部的文件系统访问不到容器内的内容。
作为一个容器,首要任务就是限制容器中进程的活动范围
(即能访问的文件系统目录)。决不能让容器中的进程去肆意访问真实的系统目录,因此需要将它们的活动范围划定到一个指定的区域
。
通过“伪造”一个文件系统来欺骗容器中的进程,这个文件系统就是容器的rootfs。一个最常见的rootfs,或者说容器镜像,包括如下所示的一些目录和文件,如/bin /etc /proc等。
4.2 namespace
namespace是Linux内核提供的一种机制,可以隔离内核资源
,包括PID、IPC、Network、Mount、UTS等,使得容器中的进程看起来是运行在一个个独立的“容器”中
,以达到独立运行的效果。
通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。
Linux提供了6种命名空间进行隔离:PID、User、UTS、IPC、Network、Mount
4.3 cgroup
cgroup(即Control Group)是Linux内核提供的一种可以限制单个进程或者一组进程所使用的资源上限的技术
。cgroup将任意进程进行分组化管理
,为组内进程分配资源。容器通过cgroup实现组进程并管理它们的资源总消耗
,分享可用的硬件资源到容器并限制容器的内存和CPU的使用。
cgroup提供了以下4大功能:
1)资源限制
:对任务使用的资源总量进行限制,如应用在运行时超过上限配额就会给出提示。
2)优先级分配
:通过分配的CPU时间片数量及磁盘IO带宽大小,实际就相当于控制了任务的优先级。
3)资源统计
:可统计系统的资源使用量,如CPU、内存等的使用情况。
4)任务控制
:可对任务进行挂起、恢复等操作。
5、容器生命周期管理
容器生命周期管理如下,包括Create创建、Run运行等。
6、容器的优势
1)轻量级
容器共享主机的操作系统内核,因此相比传统虚拟机更为轻量级,启动速度更快。
2)可移植性
容器可以在不同的环境中进行移植,保持一致的运行环境。
3)隔离性
容器之间相互隔离,使得应用程序之间不会相互影响,提高了安全性。
4)资源利用率高
可以更有效地利用硬件资源,使得一台服务器上可以运行更多的应用程序实例。
二、容器与虚拟机对比
容器本身也是一个虚拟机,二者之间主要存在启动速度、内核、隔离效果和性能等的差异,也决定了其不同的应用场景,如下。
三、主流容器技术
1、docker
docker是目前最流行的容器技术,基于Go语言开发,使用Google公司推出的libcontainer作为容器引擎,实现了对Linux内核的namespace和cgroup的封装,使得容器技术变得简单易用。
官网:https://www.docker.com/
2、podman
Podman 是一个用于管理容器、Pod 和镜像的工具,支持本地环境和 Kubernetes。Podman 具有快速、安全、开放、兼容的特点,并有多种兼容工具和社区支持。
官网:https://podman.io/
其他的如果感兴趣也可自行了解。
好了,以上就是今天这篇文章的全部内容了。如果你想及时看到我的文章,只需做这几个动作:点星标、点在看(包括赞)、评论、分享,我就会经常出现在您的常读列表,后面更新都会提醒。感谢大家的关注和支持,祝大家生活美满,学业有成,事业蒸蒸日上!
最后,星标设置如下:
如下即设置成功!
往期精彩文章推荐(点击下方蓝字即可阅读!)
往期推荐
如何为个人网站部署SSL安全证书,以实现网站的 HTTPS 加密协议访问?
一文带你学会如何部署个人博客到云服务器,并进行域名备案与解析!
原文地址:https://blog.csdn.net/qq_56999608/article/details/145195663
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!