docker容器技術(shù)學(xué)習(xí)筆記(4、容器的底層技術(shù))

實(shí)現(xiàn)容器的底層技術(shù)

cgroup 和 namespace 是最重要的兩種技術(shù)。cgroup 實(shí)現(xiàn)資源限額, namespace 實(shí)現(xiàn)資源隔離。

cgroup

cgroup 全稱 Control Group。Linux 操作系統(tǒng)通過 cgroup 可以設(shè)置進(jìn)程使用 CPU、內(nèi)存 和 IO 資源的限額。前面我們看到的--cpu-shares、-m、--device-write-bps 實(shí)際上就是在配置 cgroup。我們可以在 /sys/fs/cgroup 中找到它。

namespace

namespace 管理著 host 中全局唯一的資源,并可以讓每個(gè)容器都覺得只有自己在使用它。換句話說,namespace 實(shí)現(xiàn)了容器間資源的隔離。
Linux 使用了六種 namespace,分別對(duì)應(yīng)六種資源:Mount、UTS、IPC、PID、Network 和 User。

  • Mount namespace
Mount namespace 讓容器看上去擁有整個(gè)文件系統(tǒng)。

容器有自己的 / 目錄,可以執(zhí)行 mount 和 umount 命令。當(dāng)然我們知道這些操作只在當(dāng)前容器中生效,不會(huì)影響到 host 和其他容器。
  • UTS namespace
簡單的說,UTS namespace 讓容器有自己的 hostname。 默認(rèn)情況下,容器的 hostname 是它的短ID,可以通過 -h 或 --hostname 參數(shù)設(shè)置。
  • IPC namespace
IPC namespace 讓容器擁有自己的共享內(nèi)存和信號(hào)量(semaphore)來實(shí)現(xiàn)進(jìn)程間通信,而不會(huì)與 host 和其他容器的 IPC 混在一起。
  • PID namespace
容器擁有自己獨(dú)立的一套 PID,這就是 PID namespace 提供的功能。
  • Network namespace
Network namespace 讓容器擁有自己獨(dú)立的網(wǎng)卡、IP、路由等資源。
  • User namespace
User namespace 讓容器能夠管理自己的用戶,host 不能看到容器中創(chuàng)建的用戶。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker容器技術(shù)已經(jīng)發(fā)展了好些年,在很多項(xiàng)目都有應(yīng)用,線上運(yùn)行也很穩(wěn)定。整理了部分Docker的學(xué)習(xí)筆記以及新...
    __七把刀__閱讀 11,630評(píng)論 0 58
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,760評(píng)論 0 120
  • Linux Namespace (實(shí)例隔離) The purpose of each namespace is t...
    51reboot閱讀 1,739評(píng)論 1 2
  • 總覺得時(shí)間不夠用,所以很少追劇。之前唯一印象深刻的連續(xù)劇是陳道明和蔣雯麗主演的《中國式離婚》,它讓我明白了寬...
    萍水湘逢閱讀 538評(píng)論 2 0
  • 迭代器 帶yield的函數(shù),就是一個(gè)迭代器 啟動(dòng)一個(gè)迭代器,要么執(zhí)行next(iterator), 要么itera...
    Captain_tu閱讀 203評(píng)論 0 0

友情鏈接更多精彩內(nèi)容