首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Containers under the hood引擎下的容器

Containers under the hood引擎下的容器

原创
作者头像
对你无可奈何
修改于 2021-02-05 05:15:30
修改于 2021-02-05 05:15:30
6420
举报
文章被收录于专栏:运维专栏运维专栏

注: 接上文使用腾讯云cvm搭建,安全组默认。vpc网络按照自己需求规划,嗯当然了也可以使用腾讯云的托管tke容器服务

1. Containers and Images

  1. Dockerfile- Script/text defined how to build an image 脚本或者文本 定义了如何去创建一个镜像
  2. Image-通过docker build构建的多层的二进制表现形式
  3. 通过docker run 可以运行该镜像的实例
  4. 也可以通过docker push将镜像上传到镜像仓库,然后通过docker pull 将镜像下载到本地服务器 然后运行一个容器实例

2. 关于Container容器

  1. Collection of one or multiple applications-收集一个或多个应用程序
  2. Includes all its dependencies-包括所有的依赖项
  3. Just process which runs on the Linux Kernel(but wich cannot see everything)-只是在Linux内核上运行的进程(但是无法看到所有内容)

3. Kernel vs User Space 内核vs 用户命名空间

容器和系统调用

这个图就是为了突出 container 都运行在kernel层上面

是不是可以理解为containers中app是直接运行在宿主机 的内核之上, vm虚拟机中的app是运行在虚拟机操作系统的内核上而不是宿主机的内核之上?

4. Linux kernel namespace

PID

  1. isolates processes from each other 进程相互隔离
  2. one process cannot see others 一个进程看不到其他进程
  3. process id 10 can exist multiple time,onece in every namespace 进程ID 10可以存在多个时间,每个命名空间只能出现一次

Mount

  1. restrict access to mounts or root filesystem 限制对挂载或根文件系统的访问

Network

  1. only access certain network devices 仅访问某些确定的网络设备
  2. firewall& routing rules& socket port numbers 防火墙&路由规则&套接字端口号
  3. not able to see all traffic or contact all endpoints 无法查看所有流量或无法联系所有端点

User

  1. different set of user ids used 使用了不同的用户ID集
  2. user(0)inside one namepsace can be different from user(0)inside another 命名空间内的用户(0)可以不同于另一个空间内的用户(0)
  3. dont use the host-root(0)inside a countainer 不要在容器内使用主机根(0)

5. 关于namespace和cgroup的隔离

cgroups 限制进程使用的资源

Ram

Disk

CPU

namespaces 限制可以看到的进程

其他进程

用户

文件系统

6. Docker isolation in action 进行docker隔离的一个例子

例子:创建两个容器并检查它们是否彼此看不见

代码语言:txt
AI代码解释
复制
     **两个容器运行与相同命名空间**

注: 通过以下试验就是为了证明下不同命名空间的两个容器是相互隔离的,相同命名空间的容器是不隔离的。共享命名空间。

代码语言:txt
AI代码解释
复制
root@cks-master:~# docker run --name c1 -d ubuntu sh -c "sleep 1d"
bc244ea97b2c0053dfa3df81580973034683fdda0c56abafe4ba4705b22866be
root@cks-master:~# docker exec c1 ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.2  0.0   2612   532 ?        Ss   09:25   0:00 sh -c sleep 1d
root         6  0.0  0.0   2512   588 ?        S    09:25   0:00 sleep 1d
root         7  0.0  0.0   5900  2960 ?        Rs   09:25   0:00 ps aux
root@cks-master:~# docker run --name c2 -d ubuntu sh -c "sleep 999d"
44393c4c47b07d6b210acdd30440d5f4c8d8fa836f9aa4b1eb51e53556c03ccf
root@cks-master:~# docker exec c2 ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.0   2612   536 ?        Ss   09:25   0:00 sh -c sleep 999d
root         6  0.0  0.0   2512   596 ?        S    09:25   0:00 sleep 999d
root         7  0.0  0.0   5900  2852 ?        Rs   09:25   0:00 ps aux
root@cks-master:~# ps -aux|grep sleep
root      6897  0.0  0.0   2612   532 ?        Ss   17:25   0:00 sh -c sleep 1d
root      6939  0.0  0.0   2512   588 ?        S    17:25   0:00 sleep 1d
root      7148  0.0  0.0   2612   536 ?        Ss   17:25   0:00 sh -c sleep 999d
root      7186  0.0  0.0   2512   596 ?        S    17:25   0:00 sleep 999d
root      7405  0.0  0.0  13780  1016 pts/0    S+   17:26   0:00 grep --color=auto sleep
root@cks-master:~# docker rm c2 --force
c2
root@cks-master:~# docker run --name c2 --pid=contariner:c1 -d ubuntu sh -c "sleep 999d"
docker: --pid: invalid PID mode.
See 'docker run --help'.
root@cks-master:~# docker run --name c2 --pid=container:c1 -d ubuntu sh -c "sleep 999d"
31a8e174129c86387d3f696d3b6166a860fa2f1ac878efca81c5f9a6d68d5486
root@cks-master:~# docker exec c2 ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2612   532 ?        Ss   09:25   0:00 sh -c sleep 1d
root         6  0.0  0.0   2512   588 ?        S    09:25   0:00 sleep 1d
root        13  0.0  0.0   2612   608 ?        Ss   09:26   0:00 sh -c sleep 999d
root        18  0.0  0.0   2512   596 ?        S    09:26   0:00 sleep 999d
root        19  0.0  0.0   5900  2820 ?        Rs   09:33   0:00 ps -aux
root@cks-master:~# docker exec c1 ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2612   532 ?        Ss   09:25   0:00 sh -c sleep 1d
root         6  0.0  0.0   2512   588 ?        S    09:25   0:00 sleep 1d
root        13  0.0  0.0   2612   608 ?        Ss   09:26   0:00 sh -c sleep 999d
root        18  0.0  0.0   2512   596 ?        S    09:26   0:00 sleep 999d
root        24  0.0  0.0   5900  2988 ?        Rs   09:34   0:00 ps -aux

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
NodeJS文件系统(fs)与流(stream)
文件标记(flags): http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback
九旬
2020/10/23
1.5K0
NodeJS 读写文件 🎠
操作文件主要包括读和写。而这些功能 NodeJS 都已经提供了对应的方法。只要调用就行了。
德育处主任
2022/08/30
2.1K0
Node.js 中使用 fs 模块进行文件读写操作详解
在现代 Web 开发中,Node.js 以其独特的非阻塞 I/O 和事件驱动架构,已经成为服务器端开发的首选平台之一。而在 Node.js 的核心模块中,fs(文件系统)模块扮演着至关重要的角色。它提供了丰富的 API,使得开发者能够轻松地进行文件的读取、写入、追加、复制和删除等操作。本文将深入探讨 fs 模块的使用方法,通过详细的示例代码,帮助读者掌握在 Node.js 环境下进行文件操作的基本技能。
Front_Yue
2024/12/25
6950
Node.js 中使用 fs 模块进行文件读写操作详解
nodeJs基础Api
所有能够触发事件的对象都是EventEmitter类的实例,这个对象开放了EventEmitter.on()函数允许将一个或多个函数绑定到被对象触发的命名事件上。
切图仔
2022/09/14
3640
node 相关知识学习
一:file模块 1、两种导出方式 module.exports = {fn,student} 或 exports.fn = fn 2、同步把内容写入到文件 let fs = require('fs') // 同步打开文件 let fd = fs.openSync('text.txt','w') // 写入内容 let str = '臭鱼111' fs.writeFileSync(fd,str) // 退出文件 fs.close
xyzzz
2021/08/01
2500
nodejs操作文件系统(一)
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
OECOM
2020/07/01
1.1K0
【快速复习】Node.js中的fs模块的使用
JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。
张张
2020/03/06
1.5K0
【快速复习】Node.js中的fs模块的使用
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
(1)、在浏览器端使用var或不使用关键字定义的变量属于全局作用域,也就是可以使用window对象访问。
张果
2022/09/28
6.5K0
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
邂逅Node.JS的那一夜
本篇文章,并不完全适合小白,需要有一定的HTML、CSS、JS、HTTP、Web等知识及基础学习:
Java_慈祥
2024/08/03
2410
邂逅Node.JS的那一夜
Node入门教程(9)第七章:NodeJs的文件处理
Node的文件处理涉及到前面说的ptah模块,以及fs文件系统、stream流处理、Buffer缓冲器等模块。内容可能比较多,相关内容请以官网文档为主,此处主要以案例讲解为主,分享给大家一些常用的经典案例。细节就不展开了。 fs文件系统 fs模块提供了很多文件操作相关的api,比如:监控文件夹、文件,文件重命名,文件读写,文件修改权限、文件读写流等。 在此,我们仅以几个案例的方式来驱动学习Node的文件系统,细节请详细阅读Node的api文档或者源码。 案例: 如何监控文件夹的变化? 如何读取一个文
老马
2018/04/16
1.5K0
Node.js 高级进阶之 fs 文件模块学习
文件操作是开发过程中并不可少的一部分,作为一名 Node.js 开发工程师更应该熟练掌握fs模块的相关技巧。Node.js 中的 fs 模块是文件操作的封装,它提供了文件读取、写入、更名、删除、遍历目录、链接等 POSIX 文件系统操作。与其它模块不同的是,fs 模块中所有的操作都提供了异步和同步的两个版本,具有 sync 后缀的方法为同步方法,不具有 sync 后缀的方法为异步方法
coder_koala
2019/07/30
1.6K0
Node.js 高级进阶之 fs 文件模块学习
nodejs(一)
使用快捷键(Windows徽标键+ R)打开运行面板,输入cmd 后直接回车,即可打开终端。
且陶陶
2023/04/12
6260
nodejs(一)
【Node.js】01 —— fs模块全解析
另外,Node.js 还提供了诸如 fs.readdir()(异步读取目录内容)和 fs.readdirSync()(同步读取目录内容)等方法,用于枚举指定目录中的文件和子目录。同时,还有 fs.promises.readdir() 提供基于Promise的异步API。
空白诗
2024/06/14
5640
node之http模块之fs模块(续)
爱学习的前端歌谣
2023/12/21
1570
node之http模块之fs模块(续)
05_Node js 文件管理模块 fs
会发现目录下多了一个 index.js 文件夹,并且添加了“hello NodeJS!”的内容。
全栈程序员站长
2022/06/30
1.1K0
Node·七天学会 NodeJS
以上程序使用 fs.readFileSync 从源路径读取文件内容,并使用 fs.writeFileSync 将文件内容写入目标路径。
数媒派
2022/12/01
2.3K0
nodejs中的文件系统
nodejs使用了异步IO来提升服务端的处理效率。而IO中一个非常重要的方面就是文件IO。今天我们会详细介绍一下nodejs中的文件系统和IO操作。
程序那些事
2021/01/28
1.5K0
Nodejs中对文件执行读写操作(多demo)
在nodejs中实现对文件及目录读写操作的功能是fs模块。另外与文件及目录操作相关的一个模块是path模块。
前端_AWhile
2019/08/29
2K0
【Nodejs】240-有助于理解前端工具的 node 知识
缘起 平时写惯了业务代码之后,如果想要了解下 webpack 或者 vue-cli,好像是件很难上手的事情? 。拿 webpack 来说,我们可能会对配置熟悉点,但常常一段时间过后又忘了,感觉看起来不
pingan8787
2019/07/25
4990
【Nodejs】240-有助于理解前端工具的 node 知识
《Node.js》核心技术教程(笔记)
模块化是一种设计思想,利用模块化可以把一个非常复杂的系统结构细化到具体的功能点,每个功能点看作一个模块,然后通过某种规则把这些小的模块组合到一起,构成模块化系统。
爱学习的程序媛
2022/04/07
1.9K0
《Node.js》核心技术教程(笔记)
相关推荐
NodeJS文件系统(fs)与流(stream)
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 1. Containers and Images
  • 2. 关于Container容器
  • 3. Kernel vs User Space 内核vs 用户命名空间
  • 4. Linux kernel namespace
    • PID
    • Mount
    • Network
    • User
  • 5. 关于namespace和cgroup的隔离
  • 6. Docker isolation in action 进行docker隔离的一个例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档