0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

簡述Docker的底層技術原理之Namespace

阿銘linux ? 來源:今日頭條 ? 作者:云技術趣談 ? 2021-07-21 09:55 ? 次閱讀

Docker的空間隔離使用的是namespace(空間),它是內(nèi)核提供的一種空間隔離,在一個空間下,每個進程看到的視圖是一致的,相應的如果不在一個空間下看到資源視圖是不一致的,舉個例子,如果兩個進程在同一個網(wǎng)絡命令空間下,那么他們看到的網(wǎng)絡信息(網(wǎng)卡、IP、路由等)是一樣的,可以通過localhost的方式互相訪問。常用的有6種namespace,在Linux 內(nèi)核4.6之后又添加了Cgroup這namespace,5.6 之后又添加了時鐘namespace。

Namespace系統(tǒng)調(diào)用參數(shù)隔離內(nèi)容

UTSCLONE_NEWUTS主機名與域名

IPCCLONE_NEWIPC信號量、消息隊列和共享內(nèi)存

PIDCLONE_NEWPID進程編號

NetworkCLONE_NEWNET網(wǎng)絡設備、網(wǎng)絡棧、端口等等

MountCLONE_NEWNS掛載點(文件系統(tǒng))

UserCLONE_NEWUSER用戶和用戶組

CgroupCLONE_NEWCGROUPCgroup的根目錄

TimeCLONE_NEWTIME時鐘

這里有個小細節(jié),上面表格創(chuàng)建Mount Namespace的系統(tǒng)調(diào)用參數(shù)是CLONE_NEWNS,而不是CLONE_NEWMOUNT。從字面理解是創(chuàng)建一個命名空間的意思,這是由于歷史原因導致的,因為Mount Namespace是第一個namespace,內(nèi)核的開發(fā)者可能也沒有預料到后續(xù)還有其它的namespace的加入,所以就先把CLONE_NEWNS給占用了。

可見,namespace的隔離其實并不充分,除了上面的隔離能力,其他的都一樣。譬如,時鐘在內(nèi)核5.6版本之前,所有容器和操作系統(tǒng)都共享同一個時鐘,如果修改了操作系統(tǒng)的時間,所有容器都時間都會變化。

namespace實現(xiàn)原理也非常簡單,每個進程(task_struct)都有一個關于namespace的屬性nsproxy,表示自己所屬的namespace。

struct task_struct { 。。.

/* namespaces */

struct nsproxy *nsproxy;

。。.

}

其中的nsproxy就是指向各種namespace的一個代理。

當新進程被創(chuàng)建后會繼承其父進程的namespace,這就是為啥一個容器里面的所有進程都共享namespace。在Linux集群上面,通過讀取“/proc/進程ID/ns/”下的文件可以獲取到每個進程對應的namespace。

文章轉載:https://os.51cto.com/art/202107/671347.htm

(版權歸原作者所有,侵刪)

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Docker
    +關注

    關注

    0

    文章

    489

    瀏覽量

    11886

原文標題:Docker內(nèi)核技術原理之Namespace

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    云服務器 Flexus X 實例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、購買華為云 Flexus X 實例 Flexus云服務器X實例-華為云 (huaweicloud.com) ? 2、docker 安裝 yum?install
    的頭像 發(fā)表于 01-13 11:09 ?55次閱讀
    云服務器 Flexus X 實例,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    docker通過中間鏡像加速部署

    使用 docker 打包鏡像的時候, 每次耗費時間最多的就是 docker build 的過程. 特別是對于前端工程的打包, 有時候下載依賴包的時間就要 10 幾分鐘, 這就導致發(fā)布版本的效率極低.
    的頭像 發(fā)表于 01-06 12:39 ?100次閱讀

    在 Huawei Cloud EulerOS 系統(tǒng)中安裝 Docker 的詳細步驟與常見問題解決

    Docker鏡像 ? 6. 配置Docker鏡像加速 ? 6.1 修改daemon.json文件 ? 6.2 再次拉取鏡像 ? 結語 ? 前言 Docker 是一種輕量級的容器技術,廣
    的頭像 發(fā)表于 12-26 18:12 ?315次閱讀
    在 Huawei Cloud EulerOS 系統(tǒng)中安裝 <b class='flag-5'>Docker</b> 的詳細步驟與常見問題解決

    三分鐘學會Docker基本操作,快速入門容器技術!

    機上一切正常”的回應,留下您滿心的無奈與困惑? …… 那么,是時候學習并使用 Docker技術 了。通過快速掌握Docker,您將能夠輕松實現(xiàn)在不同平臺間上的無縫構建、測試與部署應用程序。Do
    的頭像 發(fā)表于 11-11 17:22 ?199次閱讀
    三分鐘學會<b class='flag-5'>Docker</b>基本操作,快速入門容器<b class='flag-5'>技術</b>!

    Docker運行環(huán)境安裝

    作者:京東科技 林中 Docker是一個開放的平臺,用于開發(fā)、發(fā)布和運行應用程序。Docker分離了應用程序和運行應用的基礎設施,從而實現(xiàn)了軟件的快速交付。利用docker提供的一系列功能,包括構建
    的頭像 發(fā)表于 10-29 11:28 ?241次閱讀

    手動構建Docker鏡像的方法

    不推薦使用docker commit命令,而應該使用更靈活、更強大的dockerfile來構建docker鏡像。
    的頭像 發(fā)表于 08-05 15:30 ?557次閱讀
    手動構建<b class='flag-5'>Docker</b>鏡像的方法

    ARM平臺實現(xiàn)Docker容器技術

    或網(wǎng)絡接口進行通信。 圖1(2)Docker的作用更高效的利用系統(tǒng)資源:Docker對系統(tǒng)資源的利用率更高,無論是應用執(zhí)行速度,內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術更高效。因此,相比虛擬機
    發(fā)表于 07-25 14:36

    ARM平臺實現(xiàn)Docker容器技術

    或網(wǎng)絡接口進行通信。圖1(2)Docker的作用更高效的利用系統(tǒng)資源:Docker對系統(tǒng)資源的利用率更高,無論是應用執(zhí)行速度,內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術更高效。因此,相比虛擬機
    發(fā)表于 07-17 11:05

    Jtti:Docker會替代調(diào)虛機嗎

    Docker是計算虛擬化的一種方式,和使用虛擬機進行虛擬化是類似的。由于近幾年Docker技術的流行和發(fā)展。所以單獨介紹一下Docker。首先先回答下面一個問題。 1.
    的頭像 發(fā)表于 07-12 14:38 ?352次閱讀
    Jtti:<b class='flag-5'>Docker</b>會替代調(diào)虛機嗎

    關于Docker 的清理命令集錦

    這篇文章主要介紹了Docker 清理命令集錦,需要的朋友可以參考下 復制代碼代碼如下: docker kill $(docker ps -a -q) ?刪除所有已經(jīng)停止的容器 復制代碼代碼如下
    的頭像 發(fā)表于 06-13 15:56 ?403次閱讀

    鴻蒙OpenHarmony技術:【Docker編譯環(huán)境】

    OpenHarmony為開發(fā)者提供了兩種Docker環(huán)境,以幫助開發(fā)者快速完成復雜的開發(fā)環(huán)境準備工作。
    的頭像 發(fā)表于 05-11 09:47 ?1545次閱讀
    鴻蒙OpenHarmony<b class='flag-5'>技術</b>:【<b class='flag-5'>Docker</b>編譯環(huán)境】

    適合大學生的鴻蒙開發(fā)板-Purple Pi OH安裝Docker

    介紹本文基于purple-pi-oh系列主板演示Linux系統(tǒng)安裝Docker,方法適用于RK3566全系列產(chǎn)品。本教程將指導你在基于RK3566的LInux系統(tǒng)上安裝DockerDocker是一
    的頭像 發(fā)表于 05-10 08:32 ?632次閱讀
    適合大學生的鴻蒙開發(fā)板-Purple Pi OH<b class='flag-5'>之</b>安裝<b class='flag-5'>Docker</b>

    Docker容器技術的安裝和使用

    通過Docker,開發(fā)人員可以更容易地構建、交付和運行應用程序,同時確保應用程序的一致性和可移植性。它也使得應用程序的部署更加靈活和高效,因為它可以快速地啟動、停止和擴展容器,而不會影響其他容器或主機系統(tǒng)。
    發(fā)表于 04-16 11:24 ?341次閱讀
    <b class='flag-5'>Docker</b>容器<b class='flag-5'>技術</b>的安裝和使用

    精通Docker網(wǎng)絡:Bridge驅動深度解析

    除了使用 docker0 網(wǎng)橋外,用戶還可以使用自定義的網(wǎng)橋,然后通過 --bridge=BRIDGE 參數(shù)傳遞給 docker daemon。
    的頭像 發(fā)表于 03-31 15:58 ?1501次閱讀
    精通<b class='flag-5'>Docker</b>網(wǎng)絡:Bridge驅動深度解析

    ARM平臺實現(xiàn)Docker容器技術

    什么是Docker? (1)Docker的架構 Docker是一個開源的應用容器引擎,讓開發(fā)者可打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上
    的頭像 發(fā)表于 03-07 13:48 ?826次閱讀
    ARM平臺實現(xiàn)<b class='flag-5'>Docker</b>容器<b class='flag-5'>技術</b>