【Docker】进阶之路:(一)容器技术发展史

【Docker】进阶之路:(一)容器技术发展史

  • 什么是容器
  • 为什么需要容器
  • 容器技术的发展历程
  • Docker容器是如何工作的

什么是容器

容器作为一种先进的虚拟化技术,已然成为了云原生时代软件开发和运维的标准基础设施。在了解容器技术之前,我们先来了解一下虚拟化技术。

什么是虚拟化技术?
计算机历史上首个虚拟化技术实现于1961年,IBM709计算机首次将CPU占用切分为多个极短(1/100sec)的时间片,每一个时间片都用来执行不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU,并且让每一颗虚拟CPU看起来都是在同时运行的。这就是虚拟机的雏形。

为什么需要容器

拟化技术已经成为一种被大家广泛认可的服务器硬件资源共享方式。实际上,与传统的虚拟机相比,容器有着明显的区别。
虚拟机管理系统通常需要为虚拟机虚拟出一套完整的硬件环境,此外,在虚拟机中,通常包含整个操作系统及其应用程序。从这些特点来看,虚拟机与真实的物理计算机非常相似。因为虚拟机包含完整的操作系统,所以虚拟机所占磁盘容量一般都比较大,一般为几个GB。如果安装的软件比较多,则可以占用几十,甚至上百GB的磁盘空间。虚拟机的启动相对也比较慢,一般为数分钟。

容器技术的发展历程

在大致理解了虚拟化技术之后,接下来我们可以了解一下容器的诞生历史。虽然容器概念是在Docker出现以后才开始在全球范围内火起来的,但在Docker之前,就已经有无数先驱在探索这一极具前瞻性的虚拟化技术。

先来看看容器技术发展的历史纪年表:

  • 1979年,Unix v7系统支持chroot,为应用构建一个独立的虚拟文件系统视图。
  • 1999年,FreeBSD 4.0支持jail,第一个商用化的OS虚拟化技术。
  • 2004年,Solaris 10支持Solaris Zone,第二个商用化的OS虚拟化技术。
  • 2005年,OpenVZ发布,非常重要的Linux OS虚拟化技术先行者。
  • 2004 ~ 2007年,Google内部大规模使用Cgroups等OS虚拟化技术。
  • 2006年,Google开源内部使用的process container技术,后续更名为Cgroup。
  • 2008年,Cgroups进入了Linux内核主线。
  • 2008年,LXC(Linux Container)项目具备了Linux容器的雏型。
  • 2011年,CloudFoundry开发Warden系统,它是一个完整的容器管理系统雏型。
  • 2013年,Google通过Let Me Contain That For You(LMCTFY)开源内部容器系统。

Docker容器是如何工作的

Docker容器和传统VM在技术实现上有所不同。下图 1-3显示的是VM与Docker容器的逻辑组成:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/212471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音本地生活服务商申请入口在哪里?具体流程是怎样的?

不论是抖音的本地生活业务,还是后来的支付宝、视频号的本地生活业务,因为市场体量足够庞大,市场前景广阔,一直很受各大创业者的追捧。那么,如此火热的本地生活项目,想要申请成为服务商,具体的申…

列表标签的介绍与使用

列表的作用&#xff1a; 整齐、整洁、有序&#xff0c;它作为布局会更加自由和方便。 根据使用情景不同&#xff0c;列表可以分为三大类&#xff1a;无序列表、有序列表和自定义列表 无序列表 <ul> 标签表示 HTML 页面中项目的无序列表&#xff0c;一般会以项目符号呈…

深入了解linux下网卡防火墙selinux

深入了解linux下网卡防火墙selinux 在Linux系统中&#xff0c;网络安全是非常重要的。为了保护系统免受恶意攻击和未经授权的访问&#xff0c;我们可以使用防火墙来限制网络流量。而在Linux下&#xff0c;我们可以使用SELinux&#xff08;Security-Enhanced Linux&#xff09;…

Java调试技巧之垃圾回收机制解析

Java作为一种高级编程语言&#xff0c;以其跨平台、面向对象、自动内存管理等特性而广受开发者的喜爱。其中&#xff0c;自动内存管理是Java的一大亮点&#xff0c;通过垃圾回收机制实现对内存的自动分配和释放&#xff0c;极大地简化了开发者的工作。本文将深入探讨Java的垃圾…

mysql数据库文件丢失恢复---惜分飞

客户服务器重启,mysql相关数据文件丢失 通过底层工具进行分析,无法正确恢复数据库名字,一个个单个ibd文件(而且很多本身是错误的) 对于这种情况,通过mysql block扫描恢复出来page文件 恢复出来客户需要数据 这个客户出现该故障的原因大概率是由于文件系统损坏导致.最终…

C语言进阶之路-数据结构篇

目录 一、学习目标 二、数据结构 1.基本概念 线性关系&#xff1a; 非线性关系&#xff1a; 存储形式 2. 算法分析 2.1 时间复杂度 2.2 空间复杂度 2.3 时空复杂度互换 总结 一、学习目标 了解数据结构的基本概念了解算法的分析方法 二、数据结构 1.基本概念 数据结…

测试bug分析

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;示例:通过蓝牙芯片(HC-05)与手机 APP 通信&#xff0c;每隔 5s 传输一批传感器数据(不是很大) 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1…

Nacos源码解读11——客户端怎么读取最新的配置信息

项目启动怎么读取的配置信息 自动装配 SpringBoot 自动装配机制 加载 WEB/INF spring.factories 会将如下几个Bean加载到ioc 容器中 BeanConditionalOnMissingBeanpublic NacosConfigProperties nacosConfigProperties() {return new NacosConfigProperties();}BeanCondition…

【算法Hot100系列】两数之和

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【rabbitMQ】模拟work queue,实现单个队列绑定多个消费者

上一篇&#xff1a; springboot整合rabbitMQ模拟简单收发消息 https://blog.csdn.net/m0_67930426/article/details/134904766?spm1001.2014.3001.5502 在这篇文章的基础上进行操作 基本思路&#xff1a; 1.在rabbitMQ控制台创建一个新的队列 2.在publisher服务中定义一个…

MySQL中的数据类型

MySQL中的数据类型 大家好&#xff0c;我是微赚淘客系统的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨MySQL中的数据类型&#xff0c;这是数据库设计中至关重要的一部分。数据库作为程序的底层支持&#xff0c;数据类型的选择…

[python]利用whl轮子文件python3.12安装talib

ta-lib目前很多人使用&#xff0c;网上也有很多人下载whl文件直接pip安装即可&#xff0c;但是最新版本3.12没有出来&#xff0c;因此本人独家制作python 3.12版本whl文件&#xff0c;从源码开始编译生成。TA-Lib-0.4.28-cp312-cp312-win-amd64.whl &#xff0c;注意这个whl文件…

Java 多线程下的单例模式

单例对象&#xff08;Singleton&#xff09;是一种常用的设计模式。在Java应用中&#xff0c;单例对象能保证在一个JVM中&#xff0c;该对象只有一个实例存在。正是由于这个特 点&#xff0c;单例对象通常作为程序中的存放配置信息的载体&#xff0c;因为它能保证其他对象读到一…

JWT的原理

在谈及jwt原理前,我们其实对jwt并不陌生,对于有经验的码农,大都听过或者实践过,对于一些初学者,凡是谈及安全方面的问题,总是觉得很复杂,感觉不是自己能搞得懂得,但其实无非也是加密解密的过程,不要想的太复杂,我们先说一说JWT在生产上的应用 JWT在生产上的应用 传递用户身份信…

Android系统中使用Cunit测试C/C++接口

Android系统中使用Cunit测试C/C接口 Cunit是C/C语言的单元测试框架&#xff0c;但常用于Windows和Linux开发中。 Android系统中经常有jni、so库、hal service等都是C/C实现&#xff0c;本文讲解如何将Cunit嵌入Android中&#xff0c;用于测试一些C/C api。 Cunit简介 Cunit是很…

全面解析“由于找不到hid.dll,无法继续执行代码”的4个解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到hid.dll”。这个问题通常出现在尝试运行某个程序或访问某个设备时。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何解决呢&#xff1f;本文将详细介绍找不到hid.dll的解…

高校需要哪些大数据实训平台?

当前&#xff0c;数据已成为重要的生产要素&#xff0c;大数据产业作为以数据生成、采集、存储、加工、分析、服务为主的战略性新兴产业&#xff0c;是激活数据要素潜能的关键支撑&#xff0c;是加快经济社会发展质量变革、效率变革、动力变革的重要引擎。 泰迪大数据实验…

Angular 14带来了类型化表单和独立组件

独立组件通过减少对ngmodule的需求&#xff0c;有望简化Angular应用的开发。 介绍 Angular 14是谷歌开发的、基于typescript的web应用框架的最新版本&#xff0c;它以输入表单和独立组件的开发者预览版为特色。 其特性包括&#xff1a; 一个基于组件的框架&#xff0c;用于构…

Fortran读取netcdf文件/WRF中的文件读取

一直很好奇WRF到底如何通过netcdf库读取netcdf文件&#xff0c;正巧有个机会&#xff0c;试了下fortran读取nc文件&#xff0c;总结一下。 netcdf库 Fortran读取nc文件需要依赖netcdf外部库。安装该库以后&#xff0c;会有专门写给ffortran函数声明的头文件&#xff1a;netcd…

数据类型·

定义 数据类型是指在编程语言中&#xff0c;能够表示不同种类的数据值并对其进行操作的集合。在不同的编程语言中&#xff0c;数据类型可能有所不同&#xff0c;但通常包括基本数据类型和复合数据类型两种。 基本数据类型通常包括整数、浮点数、布尔值、字符等。这些类型的数…