首页 > 其他分享 >容器化

容器化

时间:2023-03-20 13:57:42浏览次数:27  
标签:容器 隔离 Namespace namespaces Docker 操作系统

容器化技术简介

相比传统虚拟化技术,容器技术是一种更加轻量级的操作系统隔离方案,可以将应用程序及其运行依赖环境打包到镜像中,通过容器引擎进行调度,并且提供进程隔离和资源限制的运行环境。

虚拟化技术

虚拟化技术通过 Hypervisor 实现虚拟机与底层硬件的解耦,是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。

Docker 是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的容器中,然后发布到服务器上,Docker 容器基于镜像运行,可部署在物理机或虚拟机上,通过容器引擎与容器编排调度平台实现容器化应用的生命周期管理。

Docker 不同于 VM,只包含应用程序及依赖库,处于一个隔离的环境中,这使得 Docker 更加轻量高效,启动容器只需几秒钟之内完成。由于 Docker 轻量、资源占用少,可以更方便地部署标准化应用,一台主机上可以同时运行上千个 Docker 容器。

虚拟机是一个运行在宿主机之上的完整操作系统,虚拟机运行自身操作系统会占用较多的 CPU、内存、硬盘资源等。

虚拟化技术为用户提供了一个完整的虚拟机,包括操作系统在内,容器化技术为应用程序提供了隔离的运行空间,容器之间共享同一个上层操作系统内核。虚拟化技术有更佳的隔离性和安全性,但是更新和升级困难,容器化具有快速扩展、灵活性和易用性等优势,但其隔离性较差、安全性相对较低。

容器化的原理

容器技术的核心是如何实现容器内资源的限制,以及不同容器之间的隔离,这些是基于 Linux 的 Namespace 和 CGroups 技术。

 

 

Namespace

Namespace 的目的是通过抽象方法使得 Namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例。
Linux 内核实现了六种 Namespace:Mount namespaces、UTS namespaces、IPC namespaces、PID namespaces、Network namespaces、User namespaces,功能分别为:隔离文件系统、定义 hostname 和 domainame、特定的进程间通信资源、独立进程 ID 结构、独立网络设备、用户和组 ID 空间。

Docker 在创建一个容器的时候,会创建以上六种 Namespace 实例,然后将隔离的系统资源放入到相应的 Namespace 中,使得每个容器只能看到自己独立的系统资源。

Cgroups

Docker 利用 CGroups 进行资源隔离。CGroups(Control Groups)也是 Linux 内核中提供的一种机制,它的功能主要是限制、记录、隔离进程所使用的物理资源,比如 CPU、Mermory、IO、Network 等。

微服务如何适配容器化

微服务的设计思想是对系统功能进行解耦,拆分为单独的服务,可以独立运行,而容器进一步对这种解耦性进行了扩展,应用容器技术可以对服务进行快速水平扩展,从而到达弹性部署业务的能力。在各种云服务概念兴起之后,微服务结合 Docker 部署,更加方便微服务架构运维部署落地。

标签:容器,隔离,Namespace,namespaces,Docker,操作系统
From: https://www.cnblogs.com/jiaozg/p/17236017.html

相关文章

  • nacos原理(二)更新Spring容器对象
    Spring容器感知分为两部分。第一部分是更新Environment、第二部分是注册到Spring容器的对象感知。1.更新Environment上文知道对于配置发生改变会调用发送newRefres......
  • docker 容器内 安装nginx ./configure 编译出错问题
    ./configure:error:Ccompilerccisnotfound解决办法aptinstallg++./configure:error:theHTTPrewritemodulerequiresthePCRElibrary.解决办法......
  • 10 常用容器
    这些容器的泛型中全部只能使用对象,不能使用基本数据类型。10.0CollectionFrameworkjava.util.Collection集合中不能存放基本类型数据,而只能存放对象的引用。Collec......
  • Java容器及其常用方法汇总
    1概述JavaCollections框架中包含了大量的接口及其实现类和操作它们的算法,主要包括列表(List)、集合(Set)、映射(Map),如下:接口实现类数据结构初始容量加载因子扩容......
  • STL容器:map
    1.基本用法:#include<map>需要头文件。map<key_value,int>mp创建一个以key_value类型为数组下标,存储32位整数类型的mapmap[value]数组操作,可以直接修改或查......
  • Oracle多租户容器数据库的安装和使用
    转自 https://www.cnblogs.com/muhai/p/16628054.htmloracle多租户容器数据库:OracleMultitenantContainerDatabase(CDB)一、多租户架构oracle体系结构链接:https://......
  • ACP云原生容器工程师 - 应用案例
    集群规划构建容器部署中的ECS选型在创建Kubernetes实例时,物理部署实体的选型对上层应用的性能起着非常大的影响。通过大型客户在云容器部署实践的统计,很大一部分应用在......
  • C++ STL 容器的size_type
    在C++STL容器中,size_type是一个无符号整数类型,用于表示容器中元素的数量或大小。由于不同平台和编译器有不同的实现,因此使用size_type可以确保代码的可移植性和兼容......
  • 如何实现一个IOC容器
    1、先准备一个基本的容器对象,包含一些map结构的集合,用来方便后续过程中存储具体的对象2、进行配置文件的读取工作或者注解的解析工作,将需要创建的bean对象都封装成BeanDefi......
  • 如何实现一个IOC容器
    1、先准备一个基本的容器对象,包含一些map结构的集合,用来方便后续过程中存储具体的对象2、进行配置文件的读取工作或者注解的解析工作,将需要创建的bean对象都封装成BeanDefi......