02 容器技術(shù)精髓剖析

1. namespace技術(shù)

namespace是為了對(duì)容器進(jìn)行網(wǎng)絡(luò)、通信、文件、權(quán)限等對(duì)象的隔離。
namespace包含了六項(xiàng)隔離:

  • UTS ——主機(jī)名與域名
  • IP ——通信(信號(hào)量、消息隊(duì)列和共享內(nèi)容)
  • PID ——進(jìn)程編號(hào),通過(guò)PID技術(shù),同個(gè)主機(jī)上的不同容器可以有相同的PID進(jìn)程。
  • Network ——網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)棧、端口
  • Mount ——讓文件擁有自己的文件系統(tǒng)
  • User ——用戶和用戶組,實(shí)現(xiàn)用戶權(quán)限的隔離

2.cgroups技術(shù)

通過(guò)cgroups可以為容器設(shè)定系統(tǒng)資源的配額,包括CPU、內(nèi)存、I/O等等。對(duì)于不同的系統(tǒng)資源,cgroups提供了統(tǒng)一的接口,對(duì)資源進(jìn)行控制和統(tǒng)計(jì)。
限制的具體方式不盡相同,實(shí)際的流程很復(fù)雜。

3.其它相關(guān)Linux Kernel技術(shù)

  • selinux和apparmor:增強(qiáng)對(duì)容器的訪問(wèn)控制
  • capabilities:將超級(jí)用戶root的權(quán)限分割成各種不同的capability權(quán)限,從而更嚴(yán)格地控制容器的權(quán)限。
  • netlink:完成Docker的網(wǎng)絡(luò)環(huán)境配置和創(chuàng)建
    這些技術(shù)從安全、隔離、防火墻、訪問(wèn)等方面為容器的成熟落地打下了堅(jiān)實(shí)的基礎(chǔ)。

4.容器管理

容器的管理技術(shù)

4.1 lxc(第一節(jié)“容器的發(fā)展與演進(jìn)”里有?。?/h3>

是第一個(gè)完整意義上的容器管理技術(shù)。通過(guò)lxc可以方便的創(chuàng)建、啟動(dòng)和停止一個(gè)容器。還可以通過(guò)lxc來(lái)操縱容器中的應(yīng)用,也可以查看容器的運(yùn)行狀態(tài)。
Docker的出現(xiàn)把2008年的lxc的復(fù)雜的使用方式簡(jiǎn)化為自己的一套體系。

4.2 libcontainer

Docker后來(lái)開(kāi)發(fā)了原生的libcontainer代替了lxc。
libcontainer實(shí)際上反向定義了一組接口標(biāo)準(zhǔn)。

  • 反向定義:libcontainer并不是為了調(diào)用底層的Linux Kernel技術(shù)而設(shè)計(jì)的,而是Linux Kernel技術(shù)符合了定義出來(lái)的libcontainer標(biāo)準(zhǔn),Docker引擎才能運(yùn)行起來(lái)。如果此后還有新技術(shù)符合這套標(biāo)準(zhǔn),Docker引擎還是可以正常運(yùn)行。
    這樣的設(shè)計(jì)思路為Docker的跨平臺(tái)實(shí)現(xiàn)和全面化應(yīng)用帶來(lái)了可能。

5. Docker技術(shù)原理

  • Docker構(gòu)造:Client-Server
Docker結(jié)構(gòu)

裝好了Docker工具之后,也就同時(shí)裝好了Client端和Server端。
Client端可以是Docker命令行工具,也可以是GitHub上開(kāi)源的圖形化工具。通過(guò)Client工具可以發(fā)起創(chuàng)建、管理容器的指令到Server端。

  • Docker Daemon
Docker Daemon

Docker Daemon通過(guò)libcontainer、lxc的技術(shù)來(lái)完成容器管理操作。
Docker Daemon的三個(gè)重要組件:

  • execdriver:存儲(chǔ)了容器定義的配置信息,libcontainer拿到配置信息以后調(diào)用底層的namespace等技術(shù)來(lái)完成容器的創(chuàng)建和管理。
  • networkdriver:完成容器網(wǎng)絡(luò)環(huán)境的配置,包括了容器的IP地址、端口、防火墻策略,以及與主機(jī)的端口映射等。
  • graphdriver: 負(fù)責(zé)對(duì)容器鏡像的管理。
最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、Docker 簡(jiǎn)介 Docker 兩個(gè)主要部件:Docker: 開(kāi)源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,510評(píng)論 0 27
  • 寫(xiě)這篇文章主要是為了今后畢業(yè)論文素材上的整理,同時(shí)對(duì)docker進(jìn)行鞏固溫習(xí)。大綱: docker簡(jiǎn)介docker...
    胡圖仙人閱讀 7,755評(píng)論 2 96
  • 寫(xiě)這個(gè)系列文章主要是對(duì)之前做項(xiàng)目用到的docker相關(guān)技術(shù)做一些總結(jié),包括docker基礎(chǔ)技術(shù)Linux命名空間,...
    __七把刀__閱讀 5,924評(píng)論 0 16
  • 很多人會(huì)有問(wèn),如何優(yōu)雅的點(diǎn)一杯星巴克?星巴克有沒(méi)有隱藏菜單?星巴克的什么飲品好喝? 我相信在看完這一節(jié)之后,這些問(wèn)...
    Hell0World閱讀 4,416評(píng)論 1 8
  • 究竟那是什么人?在外面的聲音 只可能在外面。你的心地幽深莫測(cè) 青苔的井邊有棵鐵樹(shù),進(jìn)了門(mén) 為何你不來(lái)找我,只是溜向...
    慕容蘭馨閱讀 196評(píng)論 0 2

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