一:容器是什么

容器的本质是一种特殊的进程。

在linux容器中有三个重要的概念:Namespace、Cgroups、rootfs。

Namespace做隔离,让进程只能看到Namespace中的世界;

Cgroups     做限制,让这个“世界”围着一个看不见的墙。

rootfs          做文件系统,rootfs 只是一个操作系统所包含的文件、配置和目录,并不包括操作系统内核。

这样就实现了进程在我们所看到的一个与世隔绝的房间,这个房间就是Pass项目赖以生存的"沙盒"。

二:Namespace是什么

进入容器后,ps命令看到的容器的应用进程都是1号进程,这个其实是pid  namespace导致,他其实就是个障眼法,

让你看到的是类似于一个新的虚拟机新环境,其实是不一样的,容器就是一个运行的进程,而容器中的其他进程则是pid为1的子进程。

除了刚刚pid namespace,还有其它的namespace如下:

容器是怎么新建namespace的?

docker创建容器,其实就是linux系统的一次fork的调用,

在进行fork调用时,会传入一些flag参数,这个参数可以控制对linux内核调用新的namespace。

三:rootfs

挂载在容器根目录上、用来为容器进程提供隔离后执行环境的文件系统,就是所谓的“容器镜像”。它还有一个更为专业的名字,叫作:rootfs(根文件系统)。

容器的rootfs由三部分组成,1:只读层、2:可读写层、3:init层

1.只读层:都以增量的方式分别包含了  操作系统的一部分。

2.可读写:就是专门用来存放你修改 rootfs 后产生的增量,无论是增、删、改,都发生在这里。而当我们使用完了这个被修改过的容器之后,还可以使用 docker commit 和 push 指令,保存这个被修改过的可读写层,并上传到 Docker Hub 上,供其他人使用;而与此同时,原先的只读层里的内容则不会有任何变化。这,就是增量 rootfs 的好处。

3.Init 层:是 Docker 项目单独生成的一个内部层,专门用来存放 /etc/hosts、/etc/resolv.conf 等信息。

转载于:https://www.cnblogs.com/yaohong/p/11455877.html

容器的进程与namespace、rootfs相关推荐

  1. 容器底层实现技术Namespace/Cgroup

    Docker容器实现原理 Docker容器在实现上是通过namespace技术来进行进程隔离,通过cgroup技术实现容器进程可用资源的限制,当docker启动一个容器时,实际是创建了多了namesp ...

  2. 【k8s】理解Docker容器的进程管理(PID1进程(容器内kill命令无法杀死)、进程信号处理、僵尸进程)

    文章目录 概述 1. 容器的PID namespace(名空间) 2. 如何指明容器PID1进程 3. 进程信号处理 4. 孤儿进程与僵尸进程管理 5. 进程监控 6. 总结 参考 概述 简介: Do ...

  3. defunct 进程占用端口_UAV心跳机制与容器、进程数据采集

    在微服务架构中,服务心跳是一个简单但非常重要的机制,用于确认微服务的存活状态.UAVStack中的心跳是一个Http请求,MonitorAgent(以下简称MA)通过定时向HealthManager( ...

  4. Linux容器:cgroup,namespace原理与实现

    转自 <容器三把斧之 | cgroup原理与实现> <容器三把斧之 | namespace原理与实现> 目录 容器三把斧之 | cgroup原理与实现 cgroup 结构体 c ...

  5. Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups

    目录 使用命名空间编写一个简单的容器应用程序 创建一个子进程– fork vs clone 具有clone(2)的命名空间 简单示例 - CLONE_NEWPID 隔离网络接口 - CLONE_NEW ...

  6. 03|容器技术基本原理之Namespace

    以前被面试或者面试别人的时候,出现频率比较高的一个问题是:看你简历上写熟悉容器技术,那你是怎么理解容器的?还算可以的回答是:容器技术本身不是新的技术,容器本质上就是宿主机操作系统上的一个特殊的进程,利 ...

  7. Docker容器与容器云学习笔记——namespace

    namespace隔离资源的6个方面 namespace 系统调用参数 隔离内容 隔离目的 UTS CLONE_NEWUTS 主机名与域名 以便在网络中标识自己 IPC CLONE_NEWIPC 信号 ...

  8. linux容器进程号,linux下docker启动容器,查看容器、进程、日志等命令

    运行容器:docker run -it 镜像名 /bin/bash 退出容器:exit 或者 Ctrl+P+Q 查看所有容器:docker ps -a 查看运行的容器:docker ps 重启容器:d ...

  9. docker 容器如何使用tini 作为启动进程并 清理、管理 Docker 容器僵死进程

    一般的docker镜像为了节省空间,通常是没有安装systemd或者sysvint这类初始化系统的进程.一旦容器的起始进程不稳定将会产生大量的僵尸进程,影响宿主系统的运行. 缺少init的容器 ini ...

最新文章

  1. 社交网络图挖掘1--将社交网络看作图及其聚类
  2. 网络工程原理与实践教程实验安排
  3. 阿里内部禁用Executors创建线程池,为什么?
  4. spark 类标签的稀疏 特征向量
  5. 音视频技术开发周刊 | 169
  6. tail,more查看日志(定点和翻页)
  7. CSS学习笔记--定位
  8. RadComboBox的用法
  9. mysql加begin报错,MySQL存储过程例子,不能在if else里面用begin end否则会报错Error Code:1064解决...
  10. 用微课学计算机应用基础--PPT制作
  11. 三泰串口卡linux驱动,工业多串口卡.pdf
  12. java中Date类之GMT、UTC
  13. 链表之链表的结点插入
  14. 计算机类sci中接受综述么,SCI期刊接受的5大类型文章
  15. 如何打造高颜值PPT——小鱼儿何艳老师ppt课-课堂笔记
  16. 02 数据定义语言DDL
  17. alta公司1553b板卡编程相关
  18. VS Code配置使用 LaTeX
  19. 小米化!?凡客还有多少故事可讲?
  20. 4-Arm PEG-DSPE 四臂-聚乙二醇-磷脂 可用于修饰小分子材料

热门文章

  1. HDU 4546 比赛难度 (优先队列 * * )
  2. 题解 P3978 【[TJOI2015]概率论】
  3. [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码...
  4. Java Web之会话管理二:Session
  5. 云计算:技术疲劳玩概念 伪云项目横行于世
  6. 两个系统整合一起怎么说_结婚后该不该把父母接过来一起生活? 看看过来人是怎么说的...
  7. ios双指放大缩小_用PS设计APP过程中改进IOS设计流程的30个秘诀
  8. itext 将pdf页面转成png_如何将PDF页面从横向改成纵向?
  9. Java虚拟机(十一)——执行引擎
  10. java netty socket_Netty对socket的抽象