logo

您所在位置网站首页 > 海量文档  > 计算机 > 计算机

05 | 白话容器基础(一):从进程说开去.pdf 10页

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
特别说明: 下载前务必先预览,自己验证一下是不是你要下载的文档。
  • 上传作者 whyswift885(上传创作收益人)
  • 发布时间:2020-01-14
  • 需要金币200(10金币=人民币1元)
  • 浏览人气
  • 下载次数
  • 收藏次数
  • 文件大小:2.39 MB
下载过该文档的会员
你可能关注的文档:
讲堂  深入剖析Kubernetes  文章详情 05 | 白话容器基础 (一):从进程说开去 2018-09-03 张磊 05 | 白话容器基础 (一):从进程说开去 朗读人:张磊    11 32 | 5.29M 你好,我是张磊。今天我和你分享的主题是:白话容器基础之从进程说开去。 在前面的 4 篇预习文章中,我梳理了“容器”这项技术的来龙去脉,通过这些内容,我希望你能理解 如下几个事实: 容器技术的兴起源于 PaaS 技术的普及; Docker 公司发布的 Docker 项目具有里程碑式的意义; Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。 紧接着,我详细介绍了容器技术圈在过去五年里的“风云变幻”,而通过这部分内容,我希望你能理 解这样一个道理: 容器本身没有价值,有价值的是“容器编排”。 也正因为如此,容器技术生态才爆发了一场关于“容器编排”的“战争”。而这次战争,最终以 Kubernetes 项目和 CNCF 社区的胜利而告终。所以,这个专栏后面的内容,我会以 Docker 和 Kubernetes 项目为核心,为你详细介绍容器技术的各项实践与其中的原理。 不过在此之前,你还需要搞清楚一个更为基础的问题: 容器,到底是怎么一回事儿? 在第一篇预习文章 《小鲸鱼大事记 (一):初出茅庐》中,我已经提到过,容器其实是一种沙盒技 术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用 之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这 不就是 PaaS 最理想的状态嘛。 不过,这两个能力说起来简单,但要用技术手段去实现它们,可能大多数人就无从下手了。 所以,我就先来跟你说说这个“边界”的实现手段。 假如,现在你要写一个计算加法的小程序,这个程序需要的输入来自于一个文件,计算完成后的结 果则输出到另一个文件中。 由于计算机只认识 0 和 1,所以无论用哪种语言编写这段代码,最后都需要通过某种方式翻译成二 进制文件,才能在计算机操作系统中运行起来。 而为了能够让这些代码正常运行,我们往往还要给它提供数据,比如我们这个加法程序所需要的输 入文件。这些数据加上代码本身的二进制文件,放在磁盘上,就是我们平常所说的一个“程序”,也 叫代码的可执行镜像 (executable image)。 然后,我们就可以在计算机上运行这个“程序”了。 首先,操作系统从“程序”中发现输入数据保存在一个文件中,所以这些数据就被会加载到内存中待 命。同时,操作系统又读取到了计算加法的指令,这时,它就需要指示 CPU 完成加法操作。而 CPU 与内存协作进行加法计算,又会使用寄存器存放数值、内存堆栈保存执行的命令和变量。同 时,计算机里还有被打开的文件,以及各种各样的 I/O 设备在不断地调用中修改自己的状态。 就这样,一旦“程序”被执行起来,它就从磁盘上的二进制文件,变成了计算机内存中的数据、寄存 器里的值、堆栈中的指令、被打开的文件,以及各种设备的状态信息的一个集合。像这样一个程序 运起来后的计算机执行环境的总和,就是我们今天的主角:进程。 所以,对于进程来说,它的静态表现就是程序,平常都安安静静地待在磁盘上;而一旦运行起来, 它就变成了计算机里的数据和状态的总和,这就是它的动态表现。 而容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。 对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。 你可能会觉得 Cgroups 和 Namespace 这两个概念很抽象,别担心,接下来我们一起动手实践一 下,你就很容易理解这两项技术了。 假设你已经有了一个 Linux 操作系统上的 Docker 项目在运行,比如我的环境是 Ubuntu 16.04 和 Docker CE 18.05。 接下来,让我们首先创建一个容器来试试。 复制代码 1 $ docker run ‑it busybox /bin/sh 2 / # 这个命令是 Docker 项目最重要的一个操作,即大名鼎鼎的 docker run。 而 -it 参数告诉了 Docker 项目在启动容器后,需要给我们分配一个文本输入 /

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556