chroot

容器技术从1979年chroot的首次问世便已崭露头角。

维基百科对chroot的定义如下:

是在 Unix 和 Linux 系统的一个操作,针对正在运行的软件进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由 chroot 设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容。

通俗地说 ,chroot 就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录,这个跟我们在一个容器中是很相似的。下面我们通过一个实例来演示下 chroot。

chroot实例说明:

1)、mkdir rootfs 

#在当前目录下创建一个名称为:rootfs 的目录

2)、cd rootfs 

#进入目录名称为:rootfs 目录下

3)、docker export $(docker create docker101tutorial) -o docker101tutorial.tar
#将容器名为:docker101tutorial的文件系统作为一个docker101tutorial.tar归档文件导出到docker101tutorial.tar中并保存

#也可以简单理解为在rootfs下创建了一些目录和放置了一些二进制文件

4)、tar -xf docker101tutorial.tar

#解压docker101tutorial.tar文件内容

5)、ls 

#查看当前 rootfs 目录下的文件内容

6)、chroot /Users/xiaoqin.wu/rootfs /bin/sh

#启动一个sh 进程,并且把 /Users/xiaoqin.wu/rootfs 作为sh 进程的根目录

对比上图中命令5:ls查看/Users/xiaoqin.wu/rootfs目录下文件内容的结果与在sh进程中使用命令7:ls查看当前进程的结果是一致,至此,说明使用chroot实现了当前进程与主机的隔离,一个目录隔离的容器就完成了,但是还不能称之为一个容器。

原因如下:
使用命令8:netstat -nr查看路由信息

由结果发现,网络信息并未隔离,实际上进程等信息此时也并未隔离,要想实现一个完整的容器,需要Linux的其他三项技术来实现,分别是:

  • Namespace

  • Cgroup

  • 联合文件系统

Docker

2013年,Docker的横空出世使得容器技术迅速发展

Docker是利用Linux的Namespace、Cgroup、联合文件系统三大机制来保证实现的。

原理如下:

Namespace:

是 Linux 内核的一项功能,该功能对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源。

Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源。

Docker 主要用到以下五种命名空间。

pid namespace:用于隔离进程 ID。

net namespace:隔离网络接口,在虚拟的 net namespace 内用户可以拥有自己独立的 IP、路由、端口等。

mnt namespace:文件系统挂载点隔离。

ipc namespace:信号量,消息队列和共享内存的隔离。

uts namespace:主机名和域名的隔离。

Cgroups:

是一种 Linux 内核功能,可以限制和隔离进程的资源使用情况(CPU、内存、磁盘 I/O、网络等)。在容器的实现中,Cgroups 通常用来限制容器的 CPU 和内存等资源的使用。

联合文件系统:

用于镜像构建和容器运行环境。

联合文件系统,又叫 UnionFS,是一种通过创建文件层进程操作的文件系统,因此,联合文件系统非常轻快。Docker 使用联合文件系统为容器提供构建层,使得容器可以实现写时复制以及镜像的分层构建和存储。常用的联合文件系统有 AUFS、Overlay 和 Devicemapper 等。

从1973年chroot的出现至2013年,因为Docker加入了镜像功能,并且封装了镜像仓库使得镜像分发更加方便。因此在2013年Docker最终爆发,成为容器技术的代表。

欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、

资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

 添加关注,让我们一起共同成长!

容器技术之ChrootDocker相关推荐

  1. 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)

    上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...

  2. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

    上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-addres ...

  3. 微服务架构之「 容器技术 」

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 现在一聊到容器技术,大家就默认是指 Docker 了.但事实上,在 Docker 出现之前,P ...

  4. 深度解析 PouchContainer 的富容器技术

    PouchContainer 是阿里巴巴集团开源的高效.轻量级企业级富容器引擎技术,拥有隔离性强.可移植性高.资源占用少等特性.可以帮助企业快速实现存量业务容器化,同时提高超大规模下数据中心的物理资源 ...

  5. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  6. 面向容器技术资源调度关键技术深度对比

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的容器调度技术! 作者:阿里中间件,公众号:云栖社区 本文以资源分配理念:拍卖.预算.抢占出发,引出Borg.Omega.Mesos ...

  7. 5分钟让你懂得什么是容器技术?

    容器是轻量级的操作系统级虚拟化,允许我们在资源隔离的进程中运行应用程序及其依赖项.运行应用程序所需的所有必要组件都打包为一个映像,可以重复使用.当一个映像被执行时,它在一个隔离的环境中运行,不共享内存 ...

  8. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)

    在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用 ...

  9. 回收 PV - 每天5分钟玩转 Docker 容器技术(152)

    当 PV 不再需要时,可通过删除 PVC 回收. 当 PVC mypvc1 被删除后,我们发现 Kubernetes 启动了一个新 Pod recycler-for-mypv1,这个 Pod 的作用就 ...

最新文章

  1. ggThemeAssist:鼠标调整ggplot2主题,不用再记这些代码啦!
  2. php4.3-5.x,4.3 案例之 ThinkPHP 5.0 集成方法
  3. JS两个函数之间的传参
  4. sqlserver数据恢复(100%可用)
  5. NLPIR RuntimeError: NLPIR function 'NLPIR_Init' failed 解决方案
  6. 开源.NET企业级应用系统 OpenVista
  7. codeforces gym100959 I - Robots(稠密图建图优化)
  8. 实例18:python
  9. 斐波那契数列的Python实现
  10. 一些常用的WebServices 天气,IP,邮编,Email,火车时刻表,股票 等等
  11. 【图像几何】基于matlab投影法测距【含Matlab源码 405期】
  12. 黑莓9900 java应用,黑莓9900怎么用 黑莓9900使用技巧【图文详解】
  13. jpg转pdf转换器注册码
  14. win10商店游戏存档修改
  15. 扬州大学复试1301软件工程【自制题库个人复习用】
  16. 一周热图|何穗俞飞鸿张翰南京出席活动;华为全球最大旗舰店开业;巴黎欧莱雅公布凯瑟琳·兰福德为全球代言人...
  17. 朴素贝叶斯——凉鞋问题
  18. 欧几里得几何(1)Alpha
  19. 计算机网络连接无线局域网,电脑如何连接无线局域网
  20. 【unity】FPS用鼠标控制游戏对象转动

热门文章

  1. video 视频标签自适应屏幕大小(设置封面自适应屏幕)
  2. redis概要_codepython整理二
  3. 台式计算机显卡价格,几款台式机显卡价格参考及参数简介【图文】
  4. linux 网络质量检测 网络故障
  5. Android开发—华为手机应用内升级之后App图标消失
  6. 实践设计模拟计算机,基于模拟理论的虚拟计算机实验系统的研发
  7. C# StringBuilder 使用
  8. 【转载】浅析亡灵兵种搭配少于其他种族的原因
  9. 【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型
  10. Unity5.x制作合金弹头(四)-相机的跟随