当前位置: 首页 > news >正文

德宏芒市建设局网站网站建设培训 上海

德宏芒市建设局网站,网站建设培训 上海,深圳做夜场做网站,徐州市建筑工程交易信息网我们一直都在说容器就是一个沙盒#xff0c;沙盒技术顾名思义就是像一个集装箱一样#xff0c;把应用(服务#xff0c;进程之类的)装起来的技术#xff0c;这样每个进程在自己的沙盒中和其他的沙盒隔离开来#xff0c;每个沙盒之间存在一个边界使得他们互不干扰#xff0…我们一直都在说容器就是一个沙盒沙盒技术顾名思义就是像一个集装箱一样把应用(服务进程之类的)装起来的技术这样每个进程在自己的沙盒中和其他的沙盒隔离开来每个沙盒之间存在一个边界使得他们互不干扰而被装入这个盒子中的应用也就很方便的可以跟着沙盒搬来搬去这是一种很方便很理想的管理状态。 于是围绕这个状态的实现需要一种可以真实落地的技术。也就是隔离和限制技术。 一、Namespace隔离技术 1、隔离的现象 我们说容器的核心功能就是通过约束和修改进程的动态表现从而创造出一个边界而Cgroups技术就是用来制造约束的能力而我们这里要说的NameSpace则是用来修改进程的视图的技术修改视图其实就是修改进程视角下自己能看到的内容。 我们先来操作一下所以我们需要准备一个Linux环境和docker项目至于你是哪个Linux的发行版本这不重要。我的环境如下 CentOS Linux release 7.8.2003 Docker Engine - Community 20.10.14首先我们先创建一个容器执行docker run -it busybox /bin/sh命令来创建容器 #root docker run -it busybox /bin/sh 这句命令的参数我们逐一来解释一下 -it :在启动docker容器之后,给我们分配一个文本的输入输出环境有了这个输入输出环境我们就能在输入端和docker交互然后在输出端 获得交互的结果。/bin/sh 就是我们在docker容器中运行的程序bin/sh是一个常用的shell。所以上面这句话的意思最终表达就是请帮我启动一个容器并且在容器里面执行/bin/sh这个shell并且在启动之后就分配一个命令行的 终端来让我和这个容器交互。在做完了以上操作之后我的Linux机器就变成了宿主机而这个运行着/bin/sh的容器 busybox 就运行在我的这台宿主机里。 在执行完以上这句命令之后其实我们就进入了容器内部并且可以通过终端交互。界面如下。 此时我们在交互终端指定ps列出容器内的所有进程。 我们发现里面只有两个进程我们在启动时运行的/bin/sh就是这个容器内部的一号进程(PID为1)第二个则就是我们执行的ps进程。此时这两个进程已经被隔离在我们这个容器中了。也就是所谓的沙盒世界。那么其中的原理又是为何呢 2、隔离的原理 本来在我们没有容器的时候我们直接在宿主机上运行一个/bin/sh程序此时就会启动一个/bin/sh的进程操作系统就会给他这个进程分配一个进程ID(PID)这个类似于编号一样的PID是这个进程的唯一标识就像一个公司中的员工的工号一眼。比如系统为他分配的是100那么他就等同于工号为100的员工。公司的boss就是编号为1的员工。 但是此时我们有了容器了当我们把程序运行在容器中的时候docker就会给这个进程施展一个障眼法让他感知不到前面的进程看不到其他前面的99个员工此时他就以为自己是1号员工此时他就在一种忽悠的状态下认为自己的ID就是1。 所以这种机制类比在linux中就是在隔离的空间中运行的进程只能看到计算过后的编号PID1。实际上你还是在操作系统上运行在操作系统的视角看你还是你100号员工妄想成为1号那是你自己认为。 这就是Linux中的Namespace机制而对应在Linux中的实现中namespace的实现方式其实就是Linux创建进程的一个传入的可选参数在linux中创建进程的系统函数为clone()也就是如下 int pid clone(main_function,stack_size,SIGCHLD,NULL); 这行代码会创建一个进程然后返回值是这个进程的PID也就是那个编号。而玄机就在第三个参数中第三个 形参可以有两种传入实参CLONE_NEWPID和SIGCHLD,当我们传入的是SIGCHLD就创建真实的进程不做任何 障眼法而当我们把参数指定为CLONE_NEWPID创建出来的进程就会在自己的视角看到一个全新的空间在 这个进程空间中他的PID就是1而这一切都是一个障眼法在宿主机的真实的进程空间中他的进程PID还是 真实的数字比如100而不是1.如果你创建多个这样的进程他们自己的视角中自己都是PID1的进程他们看不到宿主机的真实进程空间同时也看不到其他的沙盒里面的状况换言之他们实现了隔离。 而且在PID的Namespace隔离之外Linux还提供了诸如MountUTSIPCNetworkUser这些Namespace用来对其他的网络设备和其他配置做隔离这样每个进程都只能看到自己的空间里面的隔离内容了。 二、总结 所以我们可以看到所谓的docker容器实际就是在创建容器进程的时候指定了一组关于这个进程需要启动的Namespace隔离了进程的PID文件设备配置等等。而对于宿主机以及其他和这个进程不相关的进程他是完全看不到的。 所以容器其实就是一种特殊的进程。只是他做了隔离。 所以在这个概念之上我们就知道所谓容器在使用的时候其实并没有一个真实的容器存在docker启动的其实还是原来的应用只是在创建这些进程的时候docker加上了很多Namespace参数来限制进程的视角。 当限制完成之后这些进程就觉得自己是各自的PID Namespace里面的1号进程只能看到自己各自的Mount Namespace挂载的目录和文件只能访问各自Network Namespace里面的网络设备只能看到自己被限制的那一组namespace空间中的内容仿佛与世隔绝一样。所以一切都是障眼法。 而在完成了隔离之后在自己那一亩三分地运行的进程对于资源也是需要做限制的而这个限制就是所谓的Cgroups技术也就是下面的主角。
http://www.dnsts.com.cn/news/189401.html

相关文章:

  • 建设银行手机银行官方网站下载南京个人做网站
  • 公众号建网站如皋市网站建设
  • 系统网站wordpress需要哪些插件
  • 织梦做的网站老是被黑asp.net p2p网站开发
  • 景德镇陶瓷学院校友做网站的网络游戏电脑
  • 网站模板下载 网盘世界杯大数据
  • 网站做导航设计的作用是什么wordpress伪静态 404
  • 万网域名注册官网邮箱优化网站价格
  • 建立企业网站步骤wordpress哔哩哔哩视频播放器
  • 怎么办网站石家庄网站建设外包公司
  • 自己做的网站地址手机怎么打不开网站被k怎么
  • 做网站每个月可以赚多少大连开发区凯旋国际
  • 中国做网站的网站自己做的手机网站怎么加入小程序
  • 怎么建立一个网站让百度搜到乐山网站开发
  • 信阳网站开发随州网站推广哪家专业
  • 东莞专业网站设计专业服务企业网站怎么做连接
  • 廊坊网站建站建设住房和城乡建设部政务服务门户
  • 装修公司做网站推广能接到活吗有没有网页设计专业
  • 网站优化主要工作有那些内容大连百度代理
  • 网站推广策划书模板太原建设北路小学网站
  • 手机网站一般多宽建筑工人找活正规平台
  • 个人网站课程设计报告网页设计教程详细步骤ppt
  • 北京网站设计案例百度竞价广告推广
  • 网站优化关键词价格58同城推广
  • 保定市住房保障和城乡建设局网站六安网站开发
  • 网站收缩引擎入口琼山网站制作
  • 建设银行网站介绍wordpress 如何安装
  • 网站建设公司哪好电商系统平台开发
  • 个人备案网站做app常州做网上废品收购网站
  • 做电商网站有什么用开发一个大型网站需要多少钱