5分钟快速了解Docker的底层原理
本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗 。转载本文请联系小姐姐味道公众号。
一位同学曾给我打比方:宿主机就好比一间大房子,docker把它成了N个小隔断。在这些小隔断之间,有独立的卫生间、小床、电视...
麻雀虽小,五脏俱全,这个比喻非常的贴切。Linux提供了非常全面的隔离机制,使5分得每个小隔间互不影响。即使隔壁小间满室春光,我的小房间一样的冷清,对我毫无影响。
Docker能实现这些功能,依赖于chroot、namespace、cgroup等三种老技术。我们本篇文章,就先聊一下namespace方面的东西。毕竟隔离是容器的第一要素。
Linux的内核,提供了多达8种类型的Namespace。在这些独立的N钟快amespace中,资源互不影响,隔离措施做的非常好。
1. 8种类型
我们先来看一下,Linux都支持哪些Namespace。可以通过unshare命令来观察到这些细节。在终端执行man unshare,将会出现这些Namespace的介绍。
Mount(mnt) 隔离挂载点 Process ID (pid) 隔离进程 ID Network速了 (net) 隔离网络设备,端口号等 Interprocess Communication (ipc) 隔离 System V IPC 和 POSIX message queues UTS Namespace(uts) 隔离主机名和域名 User Namespace (user) 隔离用户和用户组
另外,Linux在4.6版本,5.6版本,分别加入了cgroups和解DTime两种隔离类型,加起来就有8种。
Control group (cgroup) Namespace 隔离 Cgroups 根目录 (4.6版本加入) Time Namespace 隔离系统时间 (5.6版本加入)
2. 1个例子
通过unshare命令,可以快速建立一些隔离的例子,我们拿最简单直观的pid namespace来看一下它的效果。
众所周oc知,Linux进程号为1的,叫做systemd进程。但在Docker中,我们通过执行ps命令,却只能看到非常少的进程列表。
执行下面的命令,进入隔离环境,并将bash作为根进程:
unshare --pid --fork --mount-proc /bin/bash
效果如ke图所示。可以看到,我们的bash,已经成为了1号进程,而宿主机和其他隔离环境的进程信息,在这里是不可见的。
先在隔离环境中,执行sleep 1000。再开一个终端,在宿主机上执行pstree,我们将会看到这个隔离环境的进行信息。
接下来,在宿主机上,把sleep对应进程的命名空间信息,和宿主机的命名空间信息作一下对比。可r的以看到,它们的pid namespace,对应的数值是不同的。
下面给出其他namespace的实验性命令,你可以实际操作一下。
3. 试验一下
unshare --mount --fork /bin/bash
创建mount namespace,并在每个不同的环境中,使用不同的挂载目录。
u底层nshare --uts --fork /bin/bash
uts可以用来隔离主机名称,允许每个namespace拥有一个独立的主机名,你可以通过hostname命令进行修改。
unshare --ipc --fork /bin/bash
IPC原理 Namespace 主要是用来隔离进程间通信的。Linux的进程间通信,有管道、信号、报文、共享内存、信号量、套接口等方式。使用了IPC命名空间,意味着跨Namespace的这些通信方式将全部失效!不过,这也正是我们所希望的到的。
unshare --user -r /bin/bash
用5分户命名空间,就非常好理解了。我们可以在一个Namespace中建立xjjdog账号,也可以在另外一个Namespace中建立xjjdog账号,而且它们是相互不影响的。
unshare --net --fork /bin/bash
net namespace,这个就非常有用了。它可以用来钟快隔离网络设备、IP 地址和端口等信息。
可以看到,通过各种Namespace,Linux能够对各种资源进行精细化的隔离。Docker本身也是一个新瓶装旧酒的玩具。Docker的创新之处,在于它加入了一个中央仓库,并封装了很多易用的命令。
你可能会发现,到目前为止,我们并没有对Cpu和内存的资源使用进行隔离,也没有对应的Name速了space来解决这些问题。
资源限制的功能,是使用Cgroups进行限额配置来完成的,和Namespace没什么关系。我们将在后面的文章,介绍Cgroups这项技术。
最后,附上Docker的一张生命周期图。来源(http://docker-saigon.github.io/post/Docker-Internals/ )。有解D需要的同学可以加我的好友获取。
Docker发展到现在,应用工具链已经非常成熟了,很多同学已经驾轻就熟,如果你对容器技术非常感兴趣,不如多看一下最底层的原理。这样,不管是谷歌推自己的容器,还是继续使用docker,都能快速把它掌握。
作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Locinux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。
- ·谷歌云宣布将开始采用基于Arm技术的计算芯片
- ·阿里云新增两大海外数据中心 未来3年将投入60亿
- ·标签: 搜狐
- ·Razorpay携手OpenAI与印度国家支付公司,重塑支付服务新体验
- ·标签: 百度 AI云 萝卜快跑 文心大模型
- ·标签: 保时捷 奥博穆 德国汽车 高薪企业
- ·标签: 抖音 法律公约 平台治理
- ·Facebook因算法漏洞连推糟糕内容 一直持续半年
- ·腾讯混元翻译模型 Hunyuan-MT-7B 重磅开源,拿下国际比赛30项第一
- ·AI 生成优化 Metal 内核,PyTorch 推理速度提升惊人87%
- ·谷歌大脑提出简化稀疏架构,预训练速度可达T5的7倍
- ·有了大数据,真是方便,以前是“杀熟”,现在是“杀富”
- ·奇瑞墨甲机器人实现 L3 级别!未来将着眼于多个行业应用
- ·标签: 罗永浩 真还传 科技春晚
- ·Vercel AI Gateway发布!百种AI模型一键调用,零门槛打造智能应用
- ·Facebook:苹果隐私新政将影响第三季度广告收入
- ·水杯壁很多气泡能喝吗
- ·100美元打造专属ChatGPT:AI大牛开源nanochat教学工具,4小时从零炼成聊天机器人
- ·云计算开发:Python3集合内置Set difference()方法
- ·莲藕排骨汤怎么做
- ·标签: 微信支付 王鹏飞 微信红包 随机分配
- ·标签: Uber Blacklane UberElite 专车服务
- ·昆仑万维AI 音乐创作平台Mureka上线Agent Studio功能,让音乐创作变得触手可及!
- ·标签: 美光科技 小米集团 三体公司 许垚
- ·云计算核心技术Docker教程:Docker Hub配置自动构建设置
- ·标签: 钉钉 阿里巴巴 陈宇森 MuleRun
- ·https://www.woorden.org/spreekwoord.php?woord=谷歌霸屏推广【tg:seogoogle987】,j02
- ·https://www.parriscues.com/catalogsearch/result/?q=谷歌霸屏推广【tg:seogoogle987】,wgD
- ·https://www.repetto.jp/item/search?action=QUERY&q=谷歌霸屏推广【tg:seogoogle987】,iBx
- ·https://www.prattlibrary.org/search?q=谷歌霸屏推广【tg:seogoogle987】,LBW
- ·https://www.livehindustan.com/tags/谷歌霸屏推广【tg:seogoogle987】,B7P
- ·https://www.nonsolocap.it/cap?action=SEARCH&k=谷歌霸屏推广【tg:seogoogle987】,qzb
- ·https://www.lezhin.com/ko/tags/谷歌霸屏推广【tg:seogoogle987】,MvN
- ·https://www.uctronics.com/catalogsearch/result/?q=谷歌霸屏推广【tg:seogoogle987】,C6i
- ·https://www.usslexington.com/?action=QUERY&s=谷歌霸屏推广【tg:seogoogle987】,oQ8
- ·https://www.ussalabama.com/?action=CHECK&s=谷歌霸屏推广【tg:seogoogle987】,Fms
- ·谷歌“上车”,福特“入网”
- ·标签: 神龙汽车 飞灵汽车 小米 小鹏汽车
- ·阿里云推出全球首个全模态 AI 模型 Qwen3-Omni,实现文本、图像、音频与视频的统一处理
- ·标签: 京东折扣超市 京东拼拼 京东集团 社区团购
- ·云计算开发:Python内置函数-callable() 函数详解
- ·标签: OpenClaw Lobstar Wild Nick Pash AI龙虾
- ·标签: 四维图新 鉴智机器人 许鹏飞 毛卫民
- ·云计算开发:Python内置函数-set()函数详解
- ·谷歌流量显著下降,People Inc. 与微软达成 AI 内容授权协议
- ·除了缺点创意,GPT-3写出了及格大学毕业论文,只需20分钟
