docker容器核心技术点

docker容器核心技术点:

容器其实本质上就是一个进程,只不过容器的进程是比较特殊的。
容器技术的核心功能,就是通过约束和修改进程的动态表现,创造出一个“边界”,通过“障眼法”让人觉得它是一个独立的系统。大多数容器都是使用 Cgroups 技术来约束进程,通过 Namespace 技术来修改进程的视图。
Namespace 其实是在创建新进程时候加了一个可选参数,它利用 Linux 的系统调用 clone() 为新创建的进程指定一个 CLONE_NEWPID 的参数,那么新创建的进程就会看到一个全新的进程空间,在这个进程空间里面它的 PID 就是 1。
Namespace 除了可以模拟 PID 之外,还提供了 Mout、UTS、IPC、Network 和 User 等,在不同的进程上下文做隔离操作。
Cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,全称是 control groups,可以对 CPU、内存等资源实现精细化的控制。

容器最核心的原理实际上就是为用户创建进程,然后启动 Linux 的 Namespace 和配置 Cgroup 参数为用户创建了一个隔离环境。

但我们是在一个完全与宿主机不同的目录结构当作,这其实是容器通过 chroot 切换了进程的根目录来实现的
rootfs模拟了一个独立的系统根目录环境

引入了层的概念,即用户在制作镜像时的每一步操作都会生成一个层,也就是增量的 rootfs
Docker 镜像的层分为只读层、可读写层和 init 层
1、只读层包含了整个底层操作系统所必须的一些目录和依赖
2、可读写层没写入文件之前,这个目录是空的。而一旦有了写操作,修改的内容就会以增量的方式出现在这层中
3、init 层用来存放一些例如 /etc/hosts、/etc/resolv.conf等信息
最后这些层被合并为一个目录下,组成了一个完整的操作系统供容器使用

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

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

相关文章

spring-boot 一款无侵入型,轻量级的接口文档生成工具apiggs

spring-boot 一款无侵入型,轻量级的接口文档生成工具apiggs 名字叫:apiggs 使用只需两步,先把插件代码引入pom文件,然后编译打包即可 之后项目的target目录下,就会多出一个apiggs的文件夹,里面便是项目cont…

亚马逊S3文件存储的可视化

windos图形化工具下载:http://s3browser.com/ 类似于用xftp操作linux文件一样方便直观清晰

为什么CAP不能同时满足的简单理解

为什么CAP不能同时满足的简单理解 cap定理:前提是分布式系统中,cap三个只能满足两个,不能同时满足三个特性。 Consistency (一致性):所有节点在同一时间的数据都是完全一致的。 Availability (可用性):服务一直是可用…

Spring的@Scheduled 动态更新cron表达式

常见的本地定时写法如下: Scheduled(cron "0/5 * * * * ?")private void test() {log.info("业务处理逻辑。。。5秒一次");}如果想要动态更新cron表达式,可以这样写: 先写一个类,让cron表达式总是读成员变量…

spring boot 整合 谷歌guava的EventBus 实现单机版的消息发布订阅

spring boot 整合 谷歌guava的EventBus 实现单机版的消息发布订阅 大型分布式系统,直接用mq解耦,那么单机系统怎么办,可以考虑用EventBus 用EventBus的好处也是异步解耦,和mq的类似,可以勉强认为是单机版的mq 先解释…

我们的java项目,要不要废弃switch

java项目中要不要废弃使用switch 先看switch是怎么产生的: 很久以前,计算能力很昂贵,电脑性能很差,人们便想着法子的提高执行效率 先看看if(test0)的处理逻辑: 先是把test的值放在一个寄存器中,然后把0放…

限流算法(漏桶算法、令牌桶算法)对比

限流算法(漏桶算法、令牌桶算法) 漏桶算法: 有个桶,比如最大能进2个单位的水(请求),桶底有个洞,每个单位的水都会在桶里待3秒后漏下去。 那么这个桶就可以同时处理2个单位的水。 如…

guns框架

分享一个框架guns https://gitee.com/naan1993/guns/ 这算是国内比较优秀的框架,简单的套路都有。 权限啊,代码自动生成啊等等 快速搭建一套后台管理项目 下面是作者介绍: Guns基于Spring Boot2,致力于做更简洁的后台管理系统。…

URLDecoder: Illegal hex characters in escape (%) pattern ...

URL中含有%,报错如下: URLDecoder: Illegal hex characters in escape (%) pattern … 解决: uriStr uriStr.replaceAll("%","%25"); 这种情况一般是出现在连接mongoDB数据库的时候,因为要把用户名密码写…

[设计模式] ------ 策略模式实战:java中替代if-else的大段逻辑

java中用策略模式替代if-else的大段逻辑 问题: java本来是一门以面向对象为主的语言,但很多人嘴上说着java面向对象,然后除了表映射实体之外,其他的还是面向过程的思路。 就比如今天要说的,代码中大段大段的if-else判…

mongodb 索引详解

使用springboot连接mongodb的时候,涉及到索引的使用 举例: Document(collection"book") //注释的是复合索引 //CompoundIndexes( // { // CompoundIndex(name "复合索引名字",def "{字段01:1,字段02:…

[转载] --- 让线程按顺序执行8种方法

看到一篇比较用心的总结,涉及到很多知识点,转来保存,而且我把里面的每个方法都试了一遍,亲测没问题 此次转载,还新增了一些说明和结构 我的总结: 其实,让线程按顺序执行,其实就是…

mongodb数据库,批量插入性能测试记录

spring boot 框架下,操作mongodb数据库 maven:spring-data-mongodb:2.1.3.RELEASE mongo数据库用的是本地的mongo,所以环境不一样,可能结果不一样。但趋势应该是一样的。 测试保证每次批量插入时,库里的数据量都是一…

[转载] --- 数据库基本知识

里面的很多点,我之前都总结过,但是感觉这篇把这些都连起来了,总结的挺好,转载保存一下 【从入门到入土】令人脱发的数据库底层设计前言 说到数据库这个词,我只能用爱恨交加这个词来形容它。两年前在自己还单纯懵懂的时…

java中使用lua脚本

第一步: windows下,先下载安装lua(其他操作系统自行百度,我只说主要基本的流程) 下载地址 我选了lua-5.3.4_Win64_bin.zip为例 第二步: 解压到D盘根路径的lua文件夹中 配置环境变量,增加D:\l…

java中使用lua操作redis

java中使用lua脚本参见我的上一篇文章 lua基础 本篇简单说下java中使用lua操作redis的示例&#xff0c;如下&#xff1a; 先引入jedis <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</…

spring-boot发送邮件失败 AuthenticationFailedException: 535 Authentication Failed

发送邮件失败&#xff0c;平时一直是好的&#xff0c;突然有天开始失败了&#xff0c;最后是发现邮箱密码失效了。。。 有的邮箱&#xff0c;需要定期更改密码。

windows本地项目开机自启动设置

记录下&#xff0c;本地项目开机自启动 vue项目 新建vue.bat文件 echo off :: nodejs安装目录下的nodevars.bat set nodevars "D:\Program Files\nodejs\nodevars.bat" :: 切换到D盘 d: :: 移动到需要启动的目录 cd D:\Users\curry.zhang\IdeaProjects\data-chec…

互联网广告行业(01)------ 初识了解DSP、SSP、ADX

最近有幸接触到公司的一个实时竞价系统&#xff0c;也算是公司的核心系统之一了&#xff0c;增加了很多新的知识&#xff0c;可能有点乱&#xff0c;先总结一波&#xff1a; 广告行业&#xff0c;先介绍概念 广告主&#xff1a;需要打广告的站点&#xff0c;一般就是卖东西的…