成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5分鐘快速了解Docker的底層原理

云計(jì)算
一位同學(xué)曾給我打比方:宿主機(jī)就好比一間大房子,docker把它成了N個(gè)小隔斷。在這些小隔斷之間,有獨(dú)立的衛(wèi)生間、小床、電視...

[[378815]]

本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。  

一位同學(xué)曾給我打比方:宿主機(jī)就好比一間大房子,docker把它成了N個(gè)小隔斷。在這些小隔斷之間,有獨(dú)立的衛(wèi)生間、小床、電視...

麻雀雖小,五臟俱全,這個(gè)比喻非常的貼切。Linux提供了非常全面的隔離機(jī)制,使得每個(gè)小隔間互不影響。即使隔壁小間滿室春光,我的小房間一樣的冷清,對(duì)我毫無(wú)影響。

Docker能實(shí)現(xiàn)這些功能,依賴于chroot、namespace、cgroup等三種老技術(shù)。我們本篇文章,就先聊一下namespace方面的東西。畢竟隔離是容器的第一要素。

 

Linux的內(nèi)核,提供了多達(dá)8種類型的Namespace。在這些獨(dú)立的Namespace中,資源互不影響,隔離措施做的非常好。

1. 8種類型

我們先來(lái)看一下,Linux都支持哪些Namespace。可以通過(guò)unshare命令來(lái)觀察到這些細(xì)節(jié)。在終端執(zhí)行man unshare,將會(huì)出現(xiàn)這些Namespace的介紹。

 

  1. Mount(mnt) 隔離掛載點(diǎn)
  2. Process ID (pid) 隔離進(jìn)程 ID
  3. Network (net) 隔離網(wǎng)絡(luò)設(shè)備,端口號(hào)等
  4. Interprocess Communication (ipc) 隔離 System V IPC 和 POSIX message queues
  5. UTS Namespace(uts) 隔離主機(jī)名和域名
  6. User Namespace (user) 隔離用戶和用戶組

另外,Linux在4.6版本,5.6版本,分別加入了cgroups和Time兩種隔離類型,加起來(lái)就有8種。

  1. Control group (cgroup) Namespace 隔離 Cgroups 根目錄 (4.6版本加入)
  2. Time Namespace 隔離系統(tǒng)時(shí)間 (5.6版本加入)

2. 1個(gè)例子

通過(guò)unshare命令,可以快速建立一些隔離的例子,我們拿最簡(jiǎn)單直觀的pid namespace來(lái)看一下它的效果。

眾所周知,Linux進(jìn)程號(hào)為1的,叫做systemd進(jìn)程。但在Docker中,我們通過(guò)執(zhí)行ps命令,卻只能看到非常少的進(jìn)程列表。

執(zhí)行下面的命令,進(jìn)入隔離環(huán)境,并將bash作為根進(jìn)程:

  1. unshare --pid --fork --mount-proc /bin/bash 

效果如圖所示。可以看到,我們的bash,已經(jīng)成為了1號(hào)進(jìn)程,而宿主機(jī)和其他隔離環(huán)境的進(jìn)程信息,在這里是不可見的。

 

先在隔離環(huán)境中,執(zhí)行sleep 1000。再開一個(gè)終端,在宿主機(jī)上執(zhí)行pstree,我們將會(huì)看到這個(gè)隔離環(huán)境的進(jìn)行信息。

 

接下來(lái),在宿主機(jī)上,把sleep對(duì)應(yīng)進(jìn)程的命名空間信息,和宿主機(jī)的命名空間信息作一下對(duì)比。可以看到,它們的pid namespace,對(duì)應(yīng)的數(shù)值是不同的。

 

下面給出其他namespace的實(shí)驗(yàn)性命令,你可以實(shí)際操作一下。

3. 試驗(yàn)一下

  1. unshare --mount --fork /bin/bash 

創(chuàng)建mount namespace,并在每個(gè)不同的環(huán)境中,使用不同的掛載目錄。

  1. unshare --uts --fork /bin/bash 

uts可以用來(lái)隔離主機(jī)名稱,允許每個(gè)namespace擁有一個(gè)獨(dú)立的主機(jī)名,你可以通過(guò)hostname命令進(jìn)行修改。

  1. unshare --ipc --fork /bin/bash 

IPC Namespace 主要是用來(lái)隔離進(jìn)程間通信的。Linux的進(jìn)程間通信,有管道、信號(hào)、報(bào)文、共享內(nèi)存、信號(hào)量、套接口等方式。使用了IPC命名空間,意味著跨Namespace的這些通信方式將全部失效!不過(guò),這也正是我們所希望的到的。

  1. unshare --user -r /bin/bash 

用戶命名空間,就非常好理解了。我們可以在一個(gè)Namespace中建立xjjdog賬號(hào),也可以在另外一個(gè)Namespace中建立xjjdog賬號(hào),而且它們是相互不影響的。

  1. unshare --net --fork /bin/bash 

net namespace,這個(gè)就非常有用了。它可以用來(lái)隔離網(wǎng)絡(luò)設(shè)備、IP 地址和端口等信息。

可以看到,通過(guò)各種Namespace,Linux能夠?qū)Ω鞣N資源進(jìn)行精細(xì)化的隔離。Docker本身也是一個(gè)新瓶裝舊酒的玩具。Docker的創(chuàng)新之處,在于它加入了一個(gè)中央倉(cāng)庫(kù),并封裝了很多易用的命令。

你可能會(huì)發(fā)現(xiàn),到目前為止,我們并沒(méi)有對(duì)Cpu和內(nèi)存的資源使用進(jìn)行隔離,也沒(méi)有對(duì)應(yīng)的Namespace來(lái)解決這些問(wèn)題。

資源限制的功能,是使用Cgroups進(jìn)行限額配置來(lái)完成的,和Namespace沒(méi)什么關(guān)系。我們將在后面的文章,介紹Cgroups這項(xiàng)技術(shù)。

最后,附上Docker的一張生命周期圖。來(lái)源(http://docker-saigon.github.io/post/Docker-Internals/ )。有需要的同學(xué)可以加我的好友獲取。

 

Docker發(fā)展到現(xiàn)在,應(yīng)用工具鏈已經(jīng)非常成熟了,很多同學(xué)已經(jīng)駕輕就熟,如果你對(duì)容器技術(shù)非常感興趣,不如多看一下最底層的原理。這樣,不管是谷歌推自己的容器,還是繼續(xù)使用docker,都能快速把它掌握。

 

作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。

 

責(zé)任編輯:武曉燕 來(lái)源: 小姐姐味道
相關(guān)推薦

2021-02-03 11:20:41

Docker架構(gòu)容器

2021-12-01 06:50:50

Docker底層原理

2021-01-06 05:23:15

ServiceMesh網(wǎng)絡(luò)阿帕網(wǎng)

2021-01-29 18:09:05

DockerCgroupsLinux

2021-04-30 16:23:58

WebRTC實(shí)時(shí)音頻

2020-10-29 08:28:42

Java NIO異步非阻塞

2020-07-17 07:44:25

云計(jì)算邊緣計(jì)算IT

2020-12-07 11:23:32

Scrapy爬蟲Python

2021-03-23 15:35:36

Adam優(yōu)化語(yǔ)言

2020-05-12 09:10:24

瀏覽器服務(wù)器網(wǎng)絡(luò)

2022-09-08 11:12:09

ES6JavaScript

2024-11-07 16:09:53

2021-03-31 09:10:25

UI設(shè)計(jì)經(jīng)驗(yàn)

2018-03-12 21:31:24

區(qū)塊鏈

2025-05-22 10:00:00

DockerRedis容器

2020-07-21 07:42:29

數(shù)據(jù)庫(kù)信息技術(shù)

2016-11-30 14:46:27

量子計(jì)算機(jī)量子計(jì)算

2018-03-12 14:37:50

區(qū)塊鏈比特幣架構(gòu)

2024-06-25 12:25:12

LangChain路由鏈

2018-05-06 16:26:03

關(guān)聯(lián)規(guī)則數(shù)據(jù)分析關(guān)聯(lián)規(guī)則推薦
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲视频三区 | 日韩欧美手机在线 | 国产免费观看久久黄av片涩av | av天天澡天天爽天天av | 网址黄| 91社区视频 | 欧美福利三区 | 久久国产成人午夜av影院武则天 | 五月综合色啪 | 国产一区二区在线播放 | 亚洲精品久久久久avwww潮水 | 在线天堂免费中文字幕视频 | 免费一级片 | 天天干视频网 | 日本午夜视频 | 久草精品视频 | 91精品国产高清一区二区三区 | 欧美日韩一区二区视频在线观看 | 欧美电影一区 | 国产东北一级毛片 | 久久久久久高潮国产精品视 | 国产乱码精品一区二区三区中文 | 日本欧美在线观看视频 | 日本欧美在线观看视频 | av在线播放免费 | 亚洲三级国产 | av在线电影网站 | 91五月婷蜜桃综合 | 一区二区在线观看av | 精品在线播放 | 日韩av最新网址 | 国产999精品久久久 日本视频一区二区三区 | 欧美一级片在线 | 国产99久久 | 国产国语精品 | 免费在线观看一区二区 | 日韩一区二区在线播放 | 国产精品美女www爽爽爽 | 国产色播av在线 | 欧美一区二区视频 | 亚洲精品一 |